******************************************************************
作者:edwin(▓男兒〆無淚)
日期:2010.9.10
注: 转载请保留此信息
更多内容,请访问我的博客:blog.csdn.net/windxfxx8
******************************************************************
Centos5.5下lamp和pureftp及资源限制
-Edwin
一、配置环境:Centos 5.5 i386
Hostname:server.linux.com
Ipadddress:192.168.1.161
1. download 下载软件
[root@server src]# pwd
/usr/src
[root@server src]# ls
httpd-2.0.63.tar.gz php-5.2.13.tar.gz
mysql-5.0.56.tar.gz phpMyAdmin-2.11.10-all-languages.tar.bz2 ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz
2.http server 编译apache
[root@server src]# tar zxf httpd-2.0.63.tar.gz
[root@server src]# cd httpd-2.0.63
[root@server httpd-2.0.63]# yum install gcc* db*-devel –y //全装编译的时候方便,当然可以只装 gcc gcc-c++ -y
[root@server httpd-2.0.63]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-auth-digest --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache2/htdocs //指定apache的网站根目录
[root@server httpd-2.0.63]# make && make install
[root@server bin]# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
3.mysql server 编译mysql
[root@server mysql-5.0.56]# yum install libtermcap-devel –y //这里为了安全只装这个包就行
[root@server src]# tar zxf mysql-5.0.56.tar.gz
[root@server src]# cd mysql-5.0.56 ;/configrue –prefix=/usr/local/mysql
[root@server src]# make && make install
[root@server support-files]# cp my-medium.cnf /etc/my.cnf
[root@server bin]# ./mysql_install_db --user=mysql
[root@server bin]#useradd mysql
[root@server bin]# chgrp -R mysql /usr/local/mysql
[root@server bin]# /usr/local/mysql/bin/mysqld_safe --user=mysql
[root@server bin]# cp /usr/src/mysql-5.0.56/support-files/mysql.server /etc/init.d/mysqld
[root@server bin]# chmod o+x /etc/init.d/mysqld
[root@server bin]# PATH=$PATH:/usr/local/mysql/bin/ //指定命令从mysql路径启动 也可作软连接 ln –s /usr/local/mysql/bin /usr/bin 这样更方便
[root@serverbin]# mysqladmin -u root password 'Edwin' //指定mysql的管理密码
注意:这里很容易出现找不到mysql.sock的链接文件
这是Centos5底下的bug
必须vi /etc/my.cnf
在
# The MySQL server
[mysqld]
最底一行加入 user = mysql
4.php server
关于php对gd库的支持 加入这些图片就能正常显示
使php支持 gif , jpeg , ttf ,wbmp
PHP处理图像,使用了GD库,我现在希望同时支持GIF,PNG和JPEG。由底向上的顺序介绍,即Jpeg->ttf->zlib->png->GD->PHP->Apache。
1.Jpeg6b的安装和配置
tar xzvf jpegsrc.v6b.tar.gz
./configure
make && make install
2. ttf 的安装和配置
freetype-1.3.1.tar.gz
tar -xzvf freetype-1.3.1.tar.gz
./configure
make
make install
编译gd 的时候有error don't found the freetype.h 所以
cp /usr/local/include/freetype/* /usr/local/include/
3, zlib 安装:
Becaust the note, you must install the zlib first!
Before installing libpng, you must first install zlib. zlib
can usually be found wherever you got libpng. zlib can be
placed in another directory, at the same level as libpng.
Note that your system might already have a preinstalled
zlib, but you will still need to have access to the
zlib.h and zconf.h include files that correspond to the
version of zlib that's installed.
zlib-1.1.3.tar.gz
./configure
make &&make install
4. libpng 安装:
libpng-1.2.0.tar.gz
UNIX example: cp scripts/makefile.std makefile
make && make install
5. cd /usr/src
tar zxf gd-2.0.35.tar.gz
Cd gd-2.0.35
./configuer --with-zlib --with-freetype –with-png --with-jpeg
Make &&make instasll
patch -p0 给源码打补丁:
cd gd-1.8.3
缺省情况下,GD库编译时并不加入JPEG支持,得修改Makefile文件。修改Makefile文件,使得:
CFLAGS=-O -DHAVE_XPM -DHAVE_JPEG -DHAVE_LIBTTF
LIBS=-lm -lgd -lpng -lz -ljpeg -lttf -lXpm -lX11
此后,编译并安装:
make &&make install
下来我们开始编译php
[root@server src]# tar zxf php-5.2.13.tar.gz
[root@server src# cd php-5.2.13
[root@server php-5.2.13]# yum install libxml2-devel
[root@serverphp-5.2.13]#./configure --prefix=/usr/local/php5 --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php5 --with-gd=/usr/local/lib --enable-sockets
[root@server php-5.2.13]# make && make install
5.config http support php 配置apache对php的支持
[root@server php-5.2.13]# cp php.ini-dist /usr/local/php5/
[root@server php-5.2.13]# vi /usr/local/apache2/conf/httpd.conf
A、 进入后按i进行编辑,按esc 输入:/进行查找 输入关键词 load 找到 看能不能找到 LoadModule php5_module modules/libphp5.so
B、然后查找 :/AddType 另起一行输入AddType application/x-httpd-php .php
C、:/ DirectoryIndex 找到DirectoryIndex index.html index.html.var 给最前边加入 index.php
D、:x保存并推出
--------------------------------------------以下是对刚才操作的检查
[root@server php-5.2.13]# grep 'LoadModule php5' /usr/local/apache2/conf/httpd.conf
LoadModule php5_module modules/libphp5.so
[root@server php-5.2.13]# grep 'x-httpd-php' /usr/local/apache2/conf/httpd.conf
AddType application/ x-httpd-php .php
[root@server php-5.2.13]# grep 'index.php' /usr/local/apache2/conf/httpd.conf
DirectoryIndex index.php index.html index.html.var
[root@server php-5.2.13]# /etc/init.d/httpd stop
[root@server php-5.2.13]# /etc/init.d/httpd start
6.Test config 对服务进行测试
[root@server mnt]# cat /usr/local/apache2/htdocs/index.php //对环境进行测试
<?php phpinfo(); ?>
[root@server mnt]# cat /usr/local/apache2/htdocs/datalink.php //对数据库的链接测试
<?php
$link=mysql_connect('localhost','test','');
if (!$link) echo "Faild";
else echo "succesful";
mysql_close();
?>
7.Phpmyadmin config
[root@server src]# tar jxf phpMyAdmin-2.11.10-all-languages.tar.bz2 –C /usr/local/apache2/htdoc
[root@server src]#cd /usr/local/apache2/htdoc
[root@server htdoc]# mv phpMyAdmin-2.11.10 phpadmin
[root@server htdoc]#cd phpadmin
[root@server phpadmin]#ls |grep inc
Config.sample.inc.php
[root@server htdoc]#cp –p Config.sample.inc.php config.inc.php
[root@server htdoc]#vi config.inc.php
$cfg['Servers'][$i]['auth_type'] = 'cookies'; // 改成$cfg['Servers'][$i]['auth_type'] = 'http';
加上$cfg['Servers'][$i]['password'] = 'edwin';
:x 保存退出
8、配置zend
[root@server src]#tar -zxvf ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz
[root@server src]#cd ZendOptimizer-3.2.6-linux-glibc21-i386
[root@server ZendOptimizer-3.2.6-linux-glibc21-i386 ]#./install.sh
好了一个完整的lamp架构就成功了
二、下来我们来配置pureftp 及资源限制
1、编译安装pureftp 源代码http://www.pureftpd.org/
[root@server src]# tar jxf pure-ftpd-1.0.21.tar.bz2
[root@server pure-ftpd-1.0.22]# ./configure --prefix=/usr/local/pureftpd --with-cookie --with-throttling --with-ratios --with-quotas --with-sysquotas --with-largefile --with-welcomemsg --with-upload_script_ --with-virtualhosts --with-virtualroot --with-virtualchroot --with-diraliases --with-peruserlimits --with-language=simplified-chinese --with-mysql=/usr/local/mysql --with-paranoidmsg --with-altlog --with-puredb
如果出现类似configure: error: Your MySQL client libraries aren't properly installed 的错误,将mysql目录下的 include/mysql下的mysql.h文件以及lib/mysql下的全部文件,连接(直接复制到 /usr/lib 目录下.)
[root@server pure-ftpd-1.0.21]# make && make install
2、建立配置文件
[root@server pure-ftpd-1.0.21]# mkdir -m 755 /usr/local/pureftpd/etc
[root@server pure-ftpd-1.0.21]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
[root@server pure-ftpd-1.0.21]# cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
[root@server pure-ftpd-1.0.21]# cp configuration-file/pure-config.pl /usr/local/pureftpd/bin/
[root@server pure-ftpd-1.0.21]# chmod u+x /usr/local/pureftpd/bin/pure-config.pl
三、建立mysql认证数据库表
[root@server pure-ftpd-1.0.21]# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
mysql> create database pureftpd;
mysql> grant all on pureftpd.* to pureftpd@localhost identified by 'pureftpd';
mysql> use pureftpd;
mysql> CREATE TABLE users (
id int(32) unsigned NOT NULL auto_increment,
User varchar(16) NOT NULL default '*',
Password varchar(64) NOT NULL default '*',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '-1',
QuotaSize smallint(5) NOT NULL default 0,
QuotaFiles int(11) NOT NULL default 0,
ULBandwidth smallint(5) NOT NULL default 0,
DLBandwidth smallint(5) NOT NULL default 0,
ULRatio smallint(6) NOT NULL default 0,
DLRatio smallint(6) NOT NULL default 0,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
status enum('0','1') NOT NULL default '0',
create_date datetime NOT NULL default '0000-00-00 00:00:00',
modify_date datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id,User),
UNIQUE KEY User (User)
) TYPE=MyISAM AUTO_INCREMENT=5;
建立用户
INSERT INTO users VALUES (1,'edwin', 'qqqqqq', '2000', '2000', '/var/pureftp', 0, 0, 0, 0, 0, 0, '*', '*', '1', '2010-9-09 09:20:33', '2009-9-09 09:20:33');
四、建立用于pureftpd认证用户的系统信息
[root@server /]# useradd -u 2000 -g pureftpd -d /var/pureftp -s /sbin/nologin pureftpd
五、修改pureftpd的配置文件
[root@server var]# vi /usr/local/pureftpd/etc/pure-ftpd.conf
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf
NoChmod yes
IPV4Only yes
DisplayDotFiles no //不显示隐藏文件
CreateHomeDir yes //自动建立家目录
[root@server var]# vi /usr/local/pureftpd/etc/pureftpd-mysql.conf
MYSQLSocket /usr/local/mysql/var/mysql.sock
MYSQLUser pureftpd
MYSQLPassword pureftpd
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="/L"
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="/L"
六、运行pureftpd
启动pureftpd
[root@server ~]# /usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
启动自动运行
[root@server ~]# vi /etc/init.d/pureftpd
#!/bin/bash
#
# Startup script for the pure-ftpd FTP Server $Revision: 1.3 $
#
# chkconfig: 2345 85 15
# description: Pure-FTPd is an FTP server daemon based upon Troll-FTPd
# processname: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# config: /etc/pure-ftpd.conf
# Source function library.
. /etc/rc.d/init.d/functions
RETVAL=0
# Path to the pure-ftp binaries.
prog=pure-config.pl
fullpath=/usr/local/pureftpd/bin/$prog
pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho
start() {
echo -n $"Starting $prog: "
$fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize
RETVAL=$?
[ $RETVAL = 0 ] && touch /var/lock/subsys/$prog
echo
}
stop() {
echo -n $"Stopping $prog: "
kill $(cat /var/run/pure-ftpd.pid)
RETVAL=$?
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/$prog
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/$prog ] ; then
stop
# avoid race
sleep 3
start
fi
;;
status)
status $prog
RETVAL=$?
if [ -f $pureftpwho ] && [ $RETVAL -eq 0 ] ; then
$pureftpwho
fi
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
下来我们进行权限的配置
对于匿名用户是使用ftp登陆的我们可以用命令
Finger ftp查看ftp的详细信息
[root@server var]# finger ftp
Login: ftp Name: FTP User
Directory: /var/ftp Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.
可以看到 ftp的目录是/var/ftp
我们创建这个目录匿名就能访问了
对于用户文件夹权限等的配置
起先我设定的用户登陆目录是/var/pureftpd我们现在的要求是根目录下有三个文件夹,不能创建文件也不能删除文件三个文件子目录下可以任意执行现在看我的操作
[root@server pureftp]#mkdir htdoc log data ; cd ..
[root@server var]#chmod 555 pureftp ; cd /pureftp
[root@server pureftp]#chmod 705 * ;chown pureftpd:pureftpd *
这样我们的目标就实现了
对于虚拟主机的支持
Vi /usr/local/apache2/htdocs/conf/httpd.conf
NameVirtualHost 192.168.1.161:80
ServerName tom.linux.com
DocumentRoot /usr/local/apache/tomdocs
ServerAlias tom
ServerName jack.linux.com
DocumentRoot /usr/local/apache/jackdocs
ServerAlias jack
:x
Sevice httpd restart
**********不能把用户的 dir放在其他用户的dir下面,否则会出现不能登录的问题。************
让apache服务支持chkconfig
加上两行注释
Vi /etc/init.d/httpd 最顶行加入
#chkconfig:35 80 81
#description:apache
让所有服务开机自启动
[root@server root]#/etc/init.d/httpd restart ; chkconfig httpd on
[root@server root]#/etc/init.d/pureftpd restart ; chkconfig pureftpd on
[root@server root]#/etc/init.d/mysqld restart ; chkconfig mysqld on
完成
说明:可扩展性