用Linux搭建全自动虚拟主机

红薯 发布于 2009/05/07 11:09
阅读 515
收藏 0

上一篇:用Linux搭建全自动虚拟主机(一) 我们在上一期介绍了利用Linux来搭建全自动虚拟主机的准备工作及系统部分软件的安装与配置。下面继续讲解磁盘限额的具体配置。
9.磁盘限额配置
(1)磁盘限额配置
磁盘限额中的磁盘使用情况记录:

QuotaDirectoryTally on
磁盘限额单位 b"|"Kb"|"Mb"|"Gb":
QuotaDisplayUnits "Kb"
QuotaEngine on
磁盘限额日志记录:
QuotaLog /usr/local/proftpd/logs/Quota.log
打开磁盘限额信息显示:
QuotaShowQuotas on
当登录FTP账户后,使用命令“quote SITE QUOTA”可显示当前用户的磁盘限额。
(2)建立磁盘限额的MySQL数据表
CREATE TABLE quotalimits (
name VARCHAR(30),
quota_type ENUM("user", "group", "class", "all") NOT NULL,
per_session ENUM("false", "true") NOT NULL,
limit_type ENUM("soft", "hard") NOT NULL,
bytes_in_avail FLOAT NOT NULL,
bytes_out_avail FLOAT NOT NULL,
bytes_xfer_avail FLOAT NOT NULL,
files_in_avail INT UNSIGNED NOT NULL,
files_out_avail INT UNSIGNED NOT NULL,
files_xfer_avail INT UNSIGNED NOT NULL
);
quotalimits表中部分字段的含义如下。
quota_type:磁盘限额的鉴别。
bytes_in_avail:上传最大字节数,即FTP用户的空间容量。
bytes_out_avail:下载最大字节数。
bytes_xfer_avail:总共可传输文件的最大字节数(上传和下载流量)。
files_in_avail:总共能上传文件的数目。
files_out_avail:能从服务器上下载文件的总数目。
files_xfer_avail:总共可传输文件的数目(上传和下载)。
CREATE TABLE quotatallies (
name VARCHAR(30) NOT NULL,
quota_type ENUM("user", "group", "class", "all") NOT NULL,
bytes_in_used FLOAT NOT NULL,
bytes_out_used FLOAT NOT NULL,
bytes_xfer_used FLOAT NOT NULL,
files_in_used INT UNSIGNED NOT NULL,
files_out_used INT UNSIGNED NOT NULL,
files_xfer_used INT UNSIGNED NOT NULL
);
quotatallies表不需要做修改。它记录了用户当前的磁盘使用情况,由程序自动记录。
(3)建立用户并测试
开始使用磁盘限额,如对上期文章中建立的test账号给予100MB空间,最多能上传5000个文件到服务器,文件传输流量为200M,最多只能传输10000个文件。只要在MySQL中插入如下数据即可:
INSERT INTO `quotalimits` 
( `name` , `quota_type` , `per_session` , `limit_type` , `bytes_in_avail` , 
`bytes_out_avail` , `bytes_xfer_avail` , `files_in_avail` , `
files_out_avail` , `files_xfer_avail` )
VALUES ('test', 'user', 'false', 'soft', '102400000', '0', '20480000', '5000', '0', '10000');
不需要设置的部分可用0代替。
现在运行proftpd,登录test,使用“quote SITE QUOTA”命令就会显示test用户的磁盘使用情况。
ftp> quote SITE QUOTA
200-The current quota for this session are [current/limit]:
Name: test
Quota Type: User
Per Session: False
Limit Type: Soft
Uploaded Kb: 0.00/100000.00
Downloaded Kb: unlimited
Transferred Kb: 0.00/20000.00
Uploaded files: 0/5000
Downloaded files: unlimited
Transferred files: 0/10000
200 Please contact root@localhost if these entries are inaccurate
至此,磁盘限额配置部分完成。
10.启动和关闭proftpd脚本
#!/bin/sh
#ProFTPD files
FTPD_BIN=/usr/local/proftpd/sbin/proftpd
FTPD_CONF=/usr/local/proftpd/etc/proftpd.conf
PIDFILE=/usr/local/proftpd/var/proftpd.pid
#If PIDFILE exists, does it point to a proftpd process?
if [ -f $PIDFILE ]; then
pid=`cat $PIDFILE`
fi
if [ ! -x $FTPD_BIN ]; then
echo "$0: $FTPD_BIN: cannot execute"
exit 1
fi
case $1 in
start)
if [ -n "$pid" ]; then
echo "$0: proftpd [PID $pid] already running"
exit
fi
if [ -r $FTPD_CONF ]; then
echo "Starting proftpd..."
$FTPD_BIN -c $FTPD_CONF
else
echo "$0: cannot start proftpd -- $FTPD_CONF missing"
fi
;;
stop)
if [ -n "$pid" ]; then
echo "Stopping proftpd..."
kill -TERM $pid
else
echo "$0: proftpd not running"
exit 1
fi
;;
restart)
if [ -n "$pid" ]; then
echo "Rehashing proftpd configuration"
kill -HUP $pid
else
echo "$0: proftpd not running"
exit 1
fi
;;
*)
echo "usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
11.Apache和PHP的安装和配置
(1)解压缩Apache和PHP安装文件:
#tar -zxvf php-4.3.3.tar.gz
#tar -zxvf apache_1.3.28.tar.gz
#tar -zxvf mod_security-1.6.tar.gz
(2)本例中/usr/local是一个单独分区,所以将Apache和PHP安装到该目录,这也是默认安装目录。
#cd apache.1.3.28 #./configure #cd ../php.4.3.3 #./configure --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.28 #make #make install #cd apache_1.3.28 #cp ../php4.3.3/libs/libphp4.a src/modules/php4/libphp4.a #cp ../mod_security-1.6/apache1/mod_security.c src/modules/extra/ #./configure --prefix=/usr/local/apache --activate-module=src/modules/extra/mod_security --enable-module=security --activate-module=src/modules/php4/libphp4.a --enable-module=vhost_alias --enable-module=so #make #make install
(3)配置Apache
#cp /root/php4.3.3/php.ini-dist /usr/local/lib/php.ini
然后打开/usr/local/apache/conf/httpd.conf文件,加上下面两句:
 AddType application/x-httpd-php .php .inc .class
AddType application/x-httpd-php-source .phps
并在httpd.conf文件中加入如下语句:

     AddHandler application/x-httpd-php .php
     SecAuditEngine On
     SecAuditLog logs/audit_log
     SecFilterScanPOST On
     SecFilterEngine On
     SecFilterDefaultAction "deny,log,status:500"
     SecFilter "<(.| )+>"
更多关于mod_security的配置信息请阅读参考资料。
(4)测试
#vi test.php
(5)Apache的启动配置
#cp /usr/local/apache/bin/apachectl /etc/init.d/
#ln -s /etc/init.d/apachectl /etc/rc3.d/S99apache
#ln -s /etc/init.d/apachectl /etc/rc3.d/K99apache
(6)PHP的安全配置
PHP的安全配置主要是关于php.ini文件的安全配置。基本原则是一定要正确设置如下各设置选项,否则对于服务器的安全危害是非常严重的。
safe_mode=On
打开safe_mode,PHP脚本将只能访问和自己属主一样的文件,如/etc/passwd等文件将不能被访问。这是PHP安全体系里最重要的选项之一。
register_globals=Off
对于GET、POST、Cookie、Environment、Session的变量可以直接注册成全局变量。但是某些时候会引起安全问题。所以,自从PHP 4.2.0以来,php.ini中的该选项默认就是Off。
display_errors=Off
这样设置后,那些利用PHP的错误来定位目录等信息的攻击将失效。
log_errors=On
打开错误信息记录,可以把警告和错误信息记录放到下一项定义的日志文件里。这样可以方便检查程序的问题所在,也可以查看一些攻击行为。
error_log=/usr/local/apache/logs/php_error.log
错误日志文件的位置。
下一篇:用Linux搭建全自动虚拟主机(三) (责任编辑:代君利)

加载中
返回顶部
顶部