******************************************************************
作者:edwin(▓男兒〆無淚) 日期:2010.9.10 注: 转载请保留此信息 更多内容,请访问我的博客:blog.youkuaiyun.com/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 ./configure 5. cd /usr/src Cd gd-2.0.35 ./configuer --with-zlib --with-freetype –with-png --with-jpeg Make &&make instasll 下来我们开始编译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 好了一个完整的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 完成 说明:可扩展性
PHP处理图像,使用了GD库,我现在希望同时支持GIF,PNG和JPEG。由底向上的顺序介绍,即Jpeg->ttf->zlib->png->GD->PHP->Apache。
1.Jpeg6b的安装和配置
tar xzvf jpegsrc.v6b.tar.gz
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
tar zxf gd-2.0.35.tar.gz
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
[root@server src]#cd ZendOptimizer-3.2.6-linux-glibc21-i386
[root@server ZendOptimizer-3.2.6-linux-glibc21-i386 ]#./install.sh