Centos 5.5 lamp+pureftp+资源流量限制

******************************************************************  

          作者:edwin(▓男兒〆無淚)

    日期:2010.9.10

          注:    转载请保留此信息

    更多内容,请访问我的博客:blog.csdn.net/windxfxx8

 

******************************************************************

Centos5.5lamppureftp及资源限制

                                                                            -Edwin

一、配置环境:Centos 5.5 i386

Hostnameserver.linux.com

Ipadddress192.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

关于phpgd库的支持 加入这些图片就能正常显示

使php支持 gif , jpeg , ttf ,wbmp
PHP
处理图像,使用了GD库,我现在希望同时支持GIFPNGJPEG。由底向上的顺序介绍,即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 配置apachephp的支持

[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

6Test 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();

?>

7Phpmyadmin 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  最顶行加入

#chkconfig35 80 81

#descriptionapache

让所有服务开机自启动

[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

完成

说明:可扩展性

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值