Aapche+Resin+PHP+Mysql+Proftpd虚拟主机配置过程
2009-08-18 11:58
573 查看
Aapche+Resin+PHP+Mysql+Proftpd虚拟主机
配置过程
作者:周立军
修改日期:2006年3月27日
安装环境
系
统:Debian
Sarger3.1r0a
软件名称:httpd-2.0.55.tar.gz、resin-3.0.18.tar.gz、openssl-0.9.7e.tar.gz、php-5.1.2.tar.gz、mysql-standard-4.1.10a-pc-linux-gnu-i686.tar.gz、proftpd-1.3.0rc3.tar.gz
辅助软件:bw_mod-0.6.tgz、mod_limitipconn-0.22.tgz、
说明:假如您的系统是redhat,fedora也能够用来参考
一、准备工作
1、下载Apache
官方下载地址:
http://httpd.apache.org
2、下载resin
官方下载地址:
http://www.caucho.com/download/index.xtp
3、下载openssl
官方下载地址:
http://www.openssl.org/source/
4、下载J2SDK
官方下载地址:
http://java.sun.com/j2se/1.4.2/download.html
5、下载Proftpd
官方下载地址:
http://www.proftpd.org
6、下载mysql
官方下载地址:
http://dev.mysql.com/downloads/
7、下在PHP
官方下载地址:
http://www.php.net/
8、下载zlib和libxml2
(1)、http://www.zlib.net/
(2)、wget http://xmlsoft.org/sources/libxml2/libxml2-2.6.23.tar.gz
9、下载其他辅助软件(可选)
(1)、apache连接限制模块mod_limitipconn
官方下载地址:
http://dominia.org/djao/limitipconn2.html
(2)、apache带宽限制模块
官方下载地址:
http://www.ivn.cl/apache/
10、安装系统编译环境
apt-get install
libncurses5-dev kernel-package ncftp perl pkg-config zlib1g-dev flex
lsof
二、安装软件
1、编译安装openssl
tar xzvf
openssl-0.9.7e.tar.gz
cd openssl-0.9.7e
./config
make
make
test
make
install
2、安装Apache
(1)、安装apache
安装路径:/usr/local/apache
配置文档路径:/etc/httpd/httpd.conf
tar
xzvf httpd-2.0.55.tar.gz
cd httpd-2.0.55
./configure
--prefix=/usr/local/apache \
--sysconfdir=/etc/httpd --with-maintainer-mode
\
--enable-mods-shared=all --enable-module=most \
--enable-auth-anon
--enable-file-cache --enable-cache \
--enable-disk-cache --enable-mem-cache
--enable-mime-magic \
--enable-expires --enable-headers --enable-usertrack
\
--enable-ssl --enable-http --enable-cgi --enable-cgid
\
--enable-vhost-alias --enable-rewrite --enable-so \
--with-mpm=worker
--with-ssl=/usr/lib
make
make
istall
(2)拷贝启动文档到/etc/init.d/
cp /usr/local/apache/bin/apachectl
/etc/init.d/apache
3、安装J2SDK
(1)、安装J2SDK
cp
j2sdk-1_4_2_11-linux-i586.bin /usr/local/
cd /usr/local/
chmod 755
j2sdk-1_4_2_11-linux-i586.bin
./j2sdk-1_4_2_11-linux-i586.bin
ln -s
j2sdk1.4.2_11/ java
rm -rf
j2sdk-1_4_2_11-linux-i586.bin
(2)、修改配置文档
添加JAVA_HOME和java/bin的路径
vi
/etc/profile
添加如下内容:
JAVA_HOME=/usr/local/java
export
JAVA_HOME
PATH=$PATH:/usr/local/java/bin
4、安装Resin
(1)、安装reisn
cp
/usr/local/ssl/lib/*.a /usr/lib
./configure --prefix=/usr/local/resin
--with-apache-src=/usr/local/apache --with-apache=/usr/local/apache
\
--with- apxs=/usr/local/apache/bin/apxs
\
--with-apache-include=/usr/local/apache/include
\
--with-apache-conf=/etc/httpd/httpd.conf --with-openssl=/usr/local/ssl
\
--with-openssl-include=/usr/local/ssl/include
--with-openssl-lib=/usr/lib
make
make
install
(2)拷贝启动文档到/etc/init.d/
cp ./contrib/init.resin
/etc/init.d/resin
5、安装mysql
(1)、添加mysql组和mysql用户
groupadd
mysql
useradd -g mysql -s /bin/false -d /dev/null
mysql
(2)、安装mysql
tar zxvf
mysql-standard-4.1.10a-pc-linux-gnu-i686.tar.gz
ln -s
mysql-standard-4.1.10a-pc-linux-gnu-i686 mysql
./scripts/mysql_install_db
--user=mysql
chown -R root .
chown -R mysql data
chgrp -R mysql
.
./bin/mysqld_safe --user=mysql &
netstat
?anl
(3)、拷贝启动文档到/etc/init.d/
cp
/usr/local/mysql/support-files/mysql.server
/etc/init.d/mysql
5、安装PHP5
(1)、安装 libxml2
wget http://xmlsoft.org/sources/libxml2/libxml2-2.6.23.tar.gz
tar zxvf
libxml2-2.6.23.tar.gz
cd libxml2-2.6.23
./configure
make
make
install
(2)、安装 zlib
wget http://www.zlib.net/zlib-1.2.3.tar.gz
tar
zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
make
install
(3)、安装PHP
./configure --prefix=/usr/local/php
--with-apxs2=/usr/local/apache/bin/apxs --with-openssl-dir=/usr/local/ssl
--with-openssl=/usr/local/ssl --with-openssl-dir=/usr/local/ssl
--with-java=/usr/local/java --enable-sockets
--enable-shared=yes --with-mysql=/usr/local/mysql
--with-zlib-dir=/usr/lib/
make
make install
cp php.ini-dist
/usr/local/lib/php.ini
(4)、修改/usr/local/lib/php.ini为如下值:
register_globals
= On
(5)、修改/etc/httpd/httpd.conf,添加如下内容
LoadModule php5_module
libexec/libphp5.so
AddType application/x-httpd-php .php .phtml
AddType
application/x-httpd-php-source
.phps
6、安装proftpd并支持Mysql
./configure
--prefix=/usr/local/proftpd --sysconfdir=/etc/proftpd/ --with-modules
=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql
--with-includes=/usr/local/mysql/include
--with-libraries=/usr/local/mysql/lib
make
make
install
7、为apache添加带宽限制
(1)、安装bw_mod模块
tar xzvf bw_mod-0.6.tgz
cd bw_mod-0.6
/usr/local/apache/bin/apxs -c -i -a
bw_mod-0.6.c
(2)、修改apache配置文档
vi
/etc/httpd/httpd.conf
打开ExtendedStatus 为On
并添加如下内容:
Options
FollowSymLinks IncludesNOEXEC
AllowOverride None
Order
Deny,Allow
Allow from All
BandWidthModule On
BandWidthDebug
On
#ForceBandWidthModule Off
#AddOutputFilterByType BW_MOD
text/html text/plain (限制文本)
#AddOutputFilterByType BW_MOD
application/x-gzip .gz .tgz(限制gz tgz文档)
#AddOutputFilterByType BW_MOD
application/x-tar .tar(限制压缩包tar文档)
#BandWidth localhost 10240
#BandWidth 172.17.1.238
102400 (限制某个IP或某段IP的带宽,假如ForceBandWidthModule没有打开的情况下,就只限制类型为上面已注册类型,)
LargeFileLimit .tgz 500
1024(tgz文档类型假如大小超过500K的话就限制下载流量,假如这种类型已册,而客户IP也已注册,则以IP为准)
LargeFileLimit
.gz 500 1024
LargeFileLimit .tar 500
102400
(3)、安装mod_limitipconn ,使apache支持连接限制
tar xzvf
mod_limitipconn-0.22.tgz
cd
mod_limitipconn-0.22
/usr/local/apache/bin/apxs -c -i -a
mod_limitipconn.c
(4)修改apache配置文档,添加支持带宽限制配置
限制每IP连接数
MaxConnPerIP 2
NoIpLimit image/*
OnlyIPLimit audio/mpeg video
NoIpLimit text/html text/plain
#OnlyIPLimit audio/mpeg
video
其中OnlyIPLimit 和NoIPLimit相对,假如同时存在,将以最后的配置为准
参考:
MaxConnPerIP 3
# exempting images from the connection limit is
often a good
# idea if your web page has lots of inline images, since
these
# pages often generate a flurry of concurrent image
requests
NoIPLimit image/*
MaxConnPerIP 1
# In this case, all MIME types other than
audio/mpeg and video*
# are exempt from the limit check
OnlyIPLimit audio/mpeg video
三、虚拟主机
配置
1、配置apache
(1)、配置虚拟主机
,修改apache配置文档
添加apache用户和组
useradd -g apache
apache
groupadd apache
修改apache配置文档的如下内容,假如没有就添加上,有就修改:
User
apache #使WEB服务器为apache用户
Group apache
#使WEB服务器为apache用户
ServerAdmin
webmaster@foredu.org
#修改成系统维护负责人
DocumentRoot "/var/www"
DirectoryIndex index.html index.php
index.jsp #添加.php和.jsp
ErrorLog /var/log/apache/error_log
#错误日志的存放位置,
CustomLog /var/log/apache/access_log common
#自定义日志的存放位置
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
(2)虚拟主机
的配置部分如下:
hostname.your.domain.com
:80>
ServerAdmin webmaster@foredu.org
DocumentRoot
/var/www/hostname.your.domain.com
ServerName
hostname.your.domain.com
ErrorLog
/var/log/apache/vhost/hostname.your.domain.com
/error_log
CustomLog
/var/log/apache/vhost/hostname.your.domain.co
m
/access_log
common
(3)、测试虚拟主机
静态页面和PHP页面
a、在hostname.your.domain.com
下建立一个test.html文档,内容如下:
虚拟主机
静态页面测试
b、在hostname.your.domain.com
下建立一个test.php文档,内容如下:
$currtime
= time();
$fmttime = strftime("%H:%M:%S",$currtime);
echo
"当前时间是:".$fmttime;
phpinfo();
?>
(4)、启动apache服务器
在客户机上访问上面2个页面看是否正常。
2、配置resin配置
(1)、修改配置文档,添加虚拟主机
目录
域名
"
root-directory ="/var/www/域名
">
域名
"/>
例如:
www.dldetail.com"
root-directory="/var/www/hostname.your.domain.com
/">
/var/www/
hostname.your.domain.com
/"/>
(2)、测试resin配置,在hostname.your.domain.com
下建立一个test.jsp文档,内容如下:
JSP测试页面
out.print("JSP虚拟主机
配置成功!");
%>
update-rc.d resin
defaults
修改/etc/init.d/resin的resin路径,确保正确/usr/local/resin
3、配置Mysql
(1)、复制/usr/local/my-large.cnf
到/etc/my.cnf
cp /usr/local/mysql/support-files/my-large.cnf
/etc/my.cnf
(2)、修改配置文档中的Mysql帐号和密码
#mysql
mysql> set password
for ’root’@’localhost’=password(’123654’);
Query OK, 0 rows affected (0.12
sec)
(3)、建立建库脚本
建立vhost.sql文档,里面添加如下内容;
#cat
vhost.sql
--创建FTP用户数据库;
CREATE DATABASE FTP;
--当前使用FTP库
USE
FTP;
--创建表格,用于存储FTP帐号信息;
CREATE TABLE ftpusers (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home
TEXT,
shell TEXT
);
--
--创建FTP帐号属主表;
CREATE TABLE ftpgrps (
grpname TEXT NOT NULL,
gid SMALLINT NOT NULL,
members TEXT NOT NULL
);
--配额信息表;
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
);
--创建好这个表格后,不用输入数据,将由程式自动添加;
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
);
--建表语句结束;
(4)、创建需要的数据表和添加内容
#mysql -u root
?p
mysql> source vhost.sql
Query OK, 1 row affected (0.02
sec)
Database changed
Query OK, 0 rows affected (0.02
sec)
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows
affected (0.06 sec)
Query OK, 0 rows affected (0.02
sec)
(4)、创建需要的数据表和添加内容
--使用FTP数据库;
USE FTP;
--添加虚拟主机
用户;
INSERT INTO FTPUSERS (userid, passwd, uid, gid,
home, shell)
VALUES (’域名
’, ’密码’,
’1002’, ’1002’, ’/var/www/域名
’, ’’
);
--注意:用户、密码是添加的虚拟主机
的用户和密码,另外还要指定虚拟主机
的跟目录
--添加虚拟主机
用户空间的限制
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 (’域名
’, ’user’, ’false’, ’soft’, ’空间大小限制’, ’0’,
’2048000’, ’0’, ’0’, ’0’);
--注意:磁盘空间是以bit为单位的,1MB=1024*1024
(4)、修改mysql数据库users表user字段长度为32
(3)、复制mysql-log-rotate到/etc/logrotate.d下
cp
/usr/local/mysql/support-files/mysql-log-rotate /etc/logrotate.d
(3)、修改vi
mysql-log-rotate
i.
修改{之前的路径为/var/log/mysql/mysqld.log
[safe_mysqld]
err-log=/var/log/mysql/mysqld.log
4、配置proftpd服务
(1)、建立proftpd帐号和LOG、PID文档目录
groupadd
proftpd
useradd -g proftpd -s /bin/fales proftpd
id proftpd
mkdir
-p /var/run/proftpd
chown -R proftpd.proftpd /var/run/proftpd
mkdir -p
/var/log/proftd
chown -R proftpd.proftpd
/var/log/proftd
(2)、配置,在配置文档中删除匿名用户登录的配置
ServerName
"ProFTPD Default Installation"
ServerType
standalone
DefaultServer
on
Port 21
Umask
022
MaxInstances 100
MaxClients
100
UseReverseDNS
off #关闭DNS反向查询,节省连接时间
IdentLookups
off
AllowStoreRestart on
#允许断点续上传
AllowRetrieveRestart on
#允许断点续下载
MaxLoginAttempts 10
#允许登录重试次数
PassivePorts 50000 65534
#指定数据端口的范围
DefaultRoot ~
#限制在用户的主目录中
RequireValidShell off
#是否必须有效的shell,/etc/shell
AllowOverwrite on
PidFile
/var/run/proftpd/proftpd.pid
#指定pid文档位置
SystemLog
/var/log/proftpd/ftp.syslog #系统日志
TransferLog
/var/log/proftpd/ftp.transferlog #传输日志
User
proftpd
Group proftpd
# Bar use of SITE CHMOD by
default
DenyAll
QuotaDirectoryTally on
#
QuotaDisplayUnits Kb #配额显示单位
QuotaEngine
on #是否起用配额
QuotaLog
/var/log/proftpd/Quota.log #配额日志
QuotaShowQuotas on
SQLAuthTypes Backend Plaintext
SQLConnectInfo FTP@localhost:3306 root 123654 #连接数据库需要的信息,数据库名@地址:端口
用户名 密码
SQLUserInfo FTPUSERS userid passwd uid gid home
shell #用户信息表的字段
SQLGroupInfo FTPGRPS groupname gid
members #用户组信息表的字段
#SQLAuthenticate users groups usersetfast
groupsetfast
SQLAuthenticate users
#认证类型
SQLHomedirOnDemand on
#假如启用,数据库中存在的用户登录后自动创建不存在的主目录
SQLGroupInfo
FTPGRPS groupname gid members
#SQLAuthenticate users groups usersetfast
groupsetfast
SQLAuthenticate users
SQLHomedirOnDemand
on
SQLNamedQuery get-quota-limit SELECT "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 FROM quotalimits WHERE name = ’%{0}’ AND
quota_type = ’%{1}’"
SQLNamedQuery get-quota-tally SELECT "name, quota_type,
bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used,
files_xfer_used FROM quotatallies WHERE name = ’%{0}’ AND quota_type =
’%{1}’"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used =
bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used =
bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used =
files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name =
’%{6}’ AND quota_type = ’%{7}’" quotatallies
SQLNamedQuery insert-quota-tally
INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}"
quotatallies
QuotaLimitTable
sql:/get-quota-limit
QuotaTallyTable
sql:/get-quota-tally/update-quota-tally/insert-quota-tally
添加自动启动文档(见附录)
1、./init.d/resin
2、./init.d/apache
3、./init.d/proftpd
4、./init.d/mysql
主配置文档位置
服务
主目录
配置文档
日志
resin
/usr/local/resin
/usr/local/resin/etc/conf/resin.conf
./log
和./logs
apache
usr/local/apache
usr/local/apache/conf/httpd.conf
/var/log/apache
proftpd
/usr/local/proftpd
./etc/proftpd.conf
/var/log/proftpd/
mysql
/usr/local/mysql
/etc/my.cnf
/var/log/mysql
配置过程
作者:周立军
修改日期:2006年3月27日
安装环境
系
统:Debian
Sarger3.1r0a
软件名称:httpd-2.0.55.tar.gz、resin-3.0.18.tar.gz、openssl-0.9.7e.tar.gz、php-5.1.2.tar.gz、mysql-standard-4.1.10a-pc-linux-gnu-i686.tar.gz、proftpd-1.3.0rc3.tar.gz
辅助软件:bw_mod-0.6.tgz、mod_limitipconn-0.22.tgz、
说明:假如您的系统是redhat,fedora也能够用来参考
一、准备工作
1、下载Apache
官方下载地址:
http://httpd.apache.org
2、下载resin
官方下载地址:
http://www.caucho.com/download/index.xtp
3、下载openssl
官方下载地址:
http://www.openssl.org/source/
4、下载J2SDK
官方下载地址:
http://java.sun.com/j2se/1.4.2/download.html
5、下载Proftpd
官方下载地址:
http://www.proftpd.org
6、下载mysql
官方下载地址:
http://dev.mysql.com/downloads/
7、下在PHP
官方下载地址:
http://www.php.net/
8、下载zlib和libxml2
(1)、http://www.zlib.net/
(2)、wget http://xmlsoft.org/sources/libxml2/libxml2-2.6.23.tar.gz
9、下载其他辅助软件(可选)
(1)、apache连接限制模块mod_limitipconn
官方下载地址:
http://dominia.org/djao/limitipconn2.html
(2)、apache带宽限制模块
官方下载地址:
http://www.ivn.cl/apache/
10、安装系统编译环境
apt-get install
libncurses5-dev kernel-package ncftp perl pkg-config zlib1g-dev flex
lsof
二、安装软件
1、编译安装openssl
tar xzvf
openssl-0.9.7e.tar.gz
cd openssl-0.9.7e
./config
make
make
test
make
install
2、安装Apache
(1)、安装apache
安装路径:/usr/local/apache
配置文档路径:/etc/httpd/httpd.conf
tar
xzvf httpd-2.0.55.tar.gz
cd httpd-2.0.55
./configure
--prefix=/usr/local/apache \
--sysconfdir=/etc/httpd --with-maintainer-mode
\
--enable-mods-shared=all --enable-module=most \
--enable-auth-anon
--enable-file-cache --enable-cache \
--enable-disk-cache --enable-mem-cache
--enable-mime-magic \
--enable-expires --enable-headers --enable-usertrack
\
--enable-ssl --enable-http --enable-cgi --enable-cgid
\
--enable-vhost-alias --enable-rewrite --enable-so \
--with-mpm=worker
--with-ssl=/usr/lib
make
make
istall
(2)拷贝启动文档到/etc/init.d/
cp /usr/local/apache/bin/apachectl
/etc/init.d/apache
3、安装J2SDK
(1)、安装J2SDK
cp
j2sdk-1_4_2_11-linux-i586.bin /usr/local/
cd /usr/local/
chmod 755
j2sdk-1_4_2_11-linux-i586.bin
./j2sdk-1_4_2_11-linux-i586.bin
ln -s
j2sdk1.4.2_11/ java
rm -rf
j2sdk-1_4_2_11-linux-i586.bin
(2)、修改配置文档
添加JAVA_HOME和java/bin的路径
vi
/etc/profile
添加如下内容:
JAVA_HOME=/usr/local/java
export
JAVA_HOME
PATH=$PATH:/usr/local/java/bin
4、安装Resin
(1)、安装reisn
cp
/usr/local/ssl/lib/*.a /usr/lib
./configure --prefix=/usr/local/resin
--with-apache-src=/usr/local/apache --with-apache=/usr/local/apache
\
--with- apxs=/usr/local/apache/bin/apxs
\
--with-apache-include=/usr/local/apache/include
\
--with-apache-conf=/etc/httpd/httpd.conf --with-openssl=/usr/local/ssl
\
--with-openssl-include=/usr/local/ssl/include
--with-openssl-lib=/usr/lib
make
make
install
(2)拷贝启动文档到/etc/init.d/
cp ./contrib/init.resin
/etc/init.d/resin
5、安装mysql
(1)、添加mysql组和mysql用户
groupadd
mysql
useradd -g mysql -s /bin/false -d /dev/null
mysql
(2)、安装mysql
tar zxvf
mysql-standard-4.1.10a-pc-linux-gnu-i686.tar.gz
ln -s
mysql-standard-4.1.10a-pc-linux-gnu-i686 mysql
./scripts/mysql_install_db
--user=mysql
chown -R root .
chown -R mysql data
chgrp -R mysql
.
./bin/mysqld_safe --user=mysql &
netstat
?anl
(3)、拷贝启动文档到/etc/init.d/
cp
/usr/local/mysql/support-files/mysql.server
/etc/init.d/mysql
5、安装PHP5
(1)、安装 libxml2
wget http://xmlsoft.org/sources/libxml2/libxml2-2.6.23.tar.gz
tar zxvf
libxml2-2.6.23.tar.gz
cd libxml2-2.6.23
./configure
make
make
install
(2)、安装 zlib
wget http://www.zlib.net/zlib-1.2.3.tar.gz
tar
zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
make
install
(3)、安装PHP
./configure --prefix=/usr/local/php
--with-apxs2=/usr/local/apache/bin/apxs --with-openssl-dir=/usr/local/ssl
--with-openssl=/usr/local/ssl --with-openssl-dir=/usr/local/ssl
--with-java=/usr/local/java --enable-sockets
--enable-shared=yes --with-mysql=/usr/local/mysql
--with-zlib-dir=/usr/lib/
make
make install
cp php.ini-dist
/usr/local/lib/php.ini
(4)、修改/usr/local/lib/php.ini为如下值:
register_globals
= On
(5)、修改/etc/httpd/httpd.conf,添加如下内容
LoadModule php5_module
libexec/libphp5.so
AddType application/x-httpd-php .php .phtml
AddType
application/x-httpd-php-source
.phps
6、安装proftpd并支持Mysql
./configure
--prefix=/usr/local/proftpd --sysconfdir=/etc/proftpd/ --with-modules
=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql
--with-includes=/usr/local/mysql/include
--with-libraries=/usr/local/mysql/lib
make
make
install
7、为apache添加带宽限制
(1)、安装bw_mod模块
tar xzvf bw_mod-0.6.tgz
cd bw_mod-0.6
/usr/local/apache/bin/apxs -c -i -a
bw_mod-0.6.c
(2)、修改apache配置文档
vi
/etc/httpd/httpd.conf
打开ExtendedStatus 为On
并添加如下内容:
Options
FollowSymLinks IncludesNOEXEC
AllowOverride None
Order
Deny,Allow
Allow from All
BandWidthModule On
BandWidthDebug
On
#ForceBandWidthModule Off
#AddOutputFilterByType BW_MOD
text/html text/plain (限制文本)
#AddOutputFilterByType BW_MOD
application/x-gzip .gz .tgz(限制gz tgz文档)
#AddOutputFilterByType BW_MOD
application/x-tar .tar(限制压缩包tar文档)
#BandWidth localhost 10240
#BandWidth 172.17.1.238
102400 (限制某个IP或某段IP的带宽,假如ForceBandWidthModule没有打开的情况下,就只限制类型为上面已注册类型,)
LargeFileLimit .tgz 500
1024(tgz文档类型假如大小超过500K的话就限制下载流量,假如这种类型已册,而客户IP也已注册,则以IP为准)
LargeFileLimit
.gz 500 1024
LargeFileLimit .tar 500
102400
(3)、安装mod_limitipconn ,使apache支持连接限制
tar xzvf
mod_limitipconn-0.22.tgz
cd
mod_limitipconn-0.22
/usr/local/apache/bin/apxs -c -i -a
mod_limitipconn.c
(4)修改apache配置文档,添加支持带宽限制配置
限制每IP连接数
MaxConnPerIP 2
NoIpLimit image/*
OnlyIPLimit audio/mpeg video
NoIpLimit text/html text/plain
#OnlyIPLimit audio/mpeg
video
其中OnlyIPLimit 和NoIPLimit相对,假如同时存在,将以最后的配置为准
参考:
MaxConnPerIP 3
# exempting images from the connection limit is
often a good
# idea if your web page has lots of inline images, since
these
# pages often generate a flurry of concurrent image
requests
NoIPLimit image/*
MaxConnPerIP 1
# In this case, all MIME types other than
audio/mpeg and video*
# are exempt from the limit check
OnlyIPLimit audio/mpeg video
三、虚拟主机
配置
1、配置apache
(1)、配置虚拟主机
,修改apache配置文档
添加apache用户和组
useradd -g apache
apache
groupadd apache
修改apache配置文档的如下内容,假如没有就添加上,有就修改:
User
apache #使WEB服务器为apache用户
Group apache
#使WEB服务器为apache用户
ServerAdmin
webmaster@foredu.org
#修改成系统维护负责人
DocumentRoot "/var/www"
DirectoryIndex index.html index.php
index.jsp #添加.php和.jsp
ErrorLog /var/log/apache/error_log
#错误日志的存放位置,
CustomLog /var/log/apache/access_log common
#自定义日志的存放位置
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
(2)虚拟主机
的配置部分如下:
hostname.your.domain.com
:80>
ServerAdmin webmaster@foredu.org
DocumentRoot
/var/www/hostname.your.domain.com
ServerName
hostname.your.domain.com
ErrorLog
/var/log/apache/vhost/hostname.your.domain.com
/error_log
CustomLog
/var/log/apache/vhost/hostname.your.domain.co
m
/access_log
common
(3)、测试虚拟主机
静态页面和PHP页面
a、在hostname.your.domain.com
下建立一个test.html文档,内容如下:
虚拟主机
静态页面测试
b、在hostname.your.domain.com
下建立一个test.php文档,内容如下:
$currtime
= time();
$fmttime = strftime("%H:%M:%S",$currtime);
echo
"当前时间是:".$fmttime;
phpinfo();
?>
(4)、启动apache服务器
在客户机上访问上面2个页面看是否正常。
2、配置resin配置
(1)、修改配置文档,添加虚拟主机
目录
域名
"
root-directory ="/var/www/域名
">
域名
"/>
例如:
www.dldetail.com"
root-directory="/var/www/hostname.your.domain.com
/">
/var/www/
hostname.your.domain.com
/"/>
(2)、测试resin配置,在hostname.your.domain.com
下建立一个test.jsp文档,内容如下:
JSP测试页面
out.print("JSP虚拟主机
配置成功!");
%>
update-rc.d resin
defaults
修改/etc/init.d/resin的resin路径,确保正确/usr/local/resin
3、配置Mysql
(1)、复制/usr/local/my-large.cnf
到/etc/my.cnf
cp /usr/local/mysql/support-files/my-large.cnf
/etc/my.cnf
(2)、修改配置文档中的Mysql帐号和密码
#mysql
mysql> set password
for ’root’@’localhost’=password(’123654’);
Query OK, 0 rows affected (0.12
sec)
(3)、建立建库脚本
建立vhost.sql文档,里面添加如下内容;
#cat
vhost.sql
--创建FTP用户数据库;
CREATE DATABASE FTP;
--当前使用FTP库
USE
FTP;
--创建表格,用于存储FTP帐号信息;
CREATE TABLE ftpusers (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home
TEXT,
shell TEXT
);
--
--创建FTP帐号属主表;
CREATE TABLE ftpgrps (
grpname TEXT NOT NULL,
gid SMALLINT NOT NULL,
members TEXT NOT NULL
);
--配额信息表;
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
);
--创建好这个表格后,不用输入数据,将由程式自动添加;
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
);
--建表语句结束;
(4)、创建需要的数据表和添加内容
#mysql -u root
?p
mysql> source vhost.sql
Query OK, 1 row affected (0.02
sec)
Database changed
Query OK, 0 rows affected (0.02
sec)
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows
affected (0.06 sec)
Query OK, 0 rows affected (0.02
sec)
(4)、创建需要的数据表和添加内容
--使用FTP数据库;
USE FTP;
--添加虚拟主机
用户;
INSERT INTO FTPUSERS (userid, passwd, uid, gid,
home, shell)
VALUES (’域名
’, ’密码’,
’1002’, ’1002’, ’/var/www/域名
’, ’’
);
--注意:用户、密码是添加的虚拟主机
的用户和密码,另外还要指定虚拟主机
的跟目录
--添加虚拟主机
用户空间的限制
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 (’域名
’, ’user’, ’false’, ’soft’, ’空间大小限制’, ’0’,
’2048000’, ’0’, ’0’, ’0’);
--注意:磁盘空间是以bit为单位的,1MB=1024*1024
(4)、修改mysql数据库users表user字段长度为32
(3)、复制mysql-log-rotate到/etc/logrotate.d下
cp
/usr/local/mysql/support-files/mysql-log-rotate /etc/logrotate.d
(3)、修改vi
mysql-log-rotate
i.
修改{之前的路径为/var/log/mysql/mysqld.log
[safe_mysqld]
err-log=/var/log/mysql/mysqld.log
4、配置proftpd服务
(1)、建立proftpd帐号和LOG、PID文档目录
groupadd
proftpd
useradd -g proftpd -s /bin/fales proftpd
id proftpd
mkdir
-p /var/run/proftpd
chown -R proftpd.proftpd /var/run/proftpd
mkdir -p
/var/log/proftd
chown -R proftpd.proftpd
/var/log/proftd
(2)、配置,在配置文档中删除匿名用户登录的配置
ServerName
"ProFTPD Default Installation"
ServerType
standalone
DefaultServer
on
Port 21
Umask
022
MaxInstances 100
MaxClients
100
UseReverseDNS
off #关闭DNS反向查询,节省连接时间
IdentLookups
off
AllowStoreRestart on
#允许断点续上传
AllowRetrieveRestart on
#允许断点续下载
MaxLoginAttempts 10
#允许登录重试次数
PassivePorts 50000 65534
#指定数据端口的范围
DefaultRoot ~
#限制在用户的主目录中
RequireValidShell off
#是否必须有效的shell,/etc/shell
AllowOverwrite on
PidFile
/var/run/proftpd/proftpd.pid
#指定pid文档位置
SystemLog
/var/log/proftpd/ftp.syslog #系统日志
TransferLog
/var/log/proftpd/ftp.transferlog #传输日志
User
proftpd
Group proftpd
# Bar use of SITE CHMOD by
default
DenyAll
QuotaDirectoryTally on
#
QuotaDisplayUnits Kb #配额显示单位
QuotaEngine
on #是否起用配额
QuotaLog
/var/log/proftpd/Quota.log #配额日志
QuotaShowQuotas on
SQLAuthTypes Backend Plaintext
SQLConnectInfo FTP@localhost:3306 root 123654 #连接数据库需要的信息,数据库名@地址:端口
用户名 密码
SQLUserInfo FTPUSERS userid passwd uid gid home
shell #用户信息表的字段
SQLGroupInfo FTPGRPS groupname gid
members #用户组信息表的字段
#SQLAuthenticate users groups usersetfast
groupsetfast
SQLAuthenticate users
#认证类型
SQLHomedirOnDemand on
#假如启用,数据库中存在的用户登录后自动创建不存在的主目录
SQLGroupInfo
FTPGRPS groupname gid members
#SQLAuthenticate users groups usersetfast
groupsetfast
SQLAuthenticate users
SQLHomedirOnDemand
on
SQLNamedQuery get-quota-limit SELECT "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 FROM quotalimits WHERE name = ’%{0}’ AND
quota_type = ’%{1}’"
SQLNamedQuery get-quota-tally SELECT "name, quota_type,
bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used,
files_xfer_used FROM quotatallies WHERE name = ’%{0}’ AND quota_type =
’%{1}’"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used =
bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used =
bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used =
files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name =
’%{6}’ AND quota_type = ’%{7}’" quotatallies
SQLNamedQuery insert-quota-tally
INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}"
quotatallies
QuotaLimitTable
sql:/get-quota-limit
QuotaTallyTable
sql:/get-quota-tally/update-quota-tally/insert-quota-tally
添加自动启动文档(见附录)
1、./init.d/resin
2、./init.d/apache
3、./init.d/proftpd
4、./init.d/mysql
主配置文档位置
服务
主目录
配置文档
日志
resin
/usr/local/resin
/usr/local/resin/etc/conf/resin.conf
./log
和./logs
apache
usr/local/apache
usr/local/apache/conf/httpd.conf
/var/log/apache
proftpd
/usr/local/proftpd
./etc/proftpd.conf
/var/log/proftpd/
mysql
/usr/local/mysql
/etc/my.cnf
/var/log/mysql
相关文章推荐
- 【CentOS】Apache多虚拟主机多版本PHP(5.3+5.6+N)共存运行配置全过程
- Linux(CentOS6.x)下使用yum软件管理工具安装LNMP(Nginx+PHP+Mysql)环境并配置虚拟主机vhost
- Apache-php-mysql-虚拟主机的配置
- Apache多虚拟主机多版本PHP(5.2+5.3+5.4)共存运行配置全过程
- Apache多虚拟主机多版本PHP(5.2+5.3+5.4)共存运行配置全过程
- windows下搭建nginx+php+虚拟主机配置过程
- apache 虚拟主机配置过程 php
- 在纯命令行环境中配置 Apache, MySQL, PHP 以及 phpMyAdmin 过程记录
- 如何在PHP中配置虚拟主机
- php多虚拟主机配置
- php虚拟主机的配置
- php虚拟主机的配置
- php虚拟主机的配置
- PHP中级篇 Apache配置httpd-vhosts虚拟主机总结及注意事项[OK]
- PHP学习笔记【4】--apache服务器配置--配置虚拟目录和配置虚拟主机
- 配置整合Win+Apache+PHP+MySQL+Tcomcat(或Resin)完全手册
- windows server 2003以isapi的方式配置php+mysql环境的详细过程
- PHP学习(2)----配置虚拟主机作业
- Debian中proftpd+mysql+虚拟用户+匿名用户+磁盘限额的配置
- vmware在桥接模式下配置centos7网络,并使用xshell连接虚拟主机(学习过程篇)