1.1. 安装 Apache [[email protected] src]# yum remove httpd*
[[email protected] src]# wgethttp://apache.etoak.com//httpd/httpd-2.2.22.tar.gz
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
[[email protected] src]# tar -zxvf httpd-2.2.22.tar.gz
[[email protected] src]# cd httpd-2.2.22
[[email protected] httpd-2.2.22]# ./configure–prefix=/usr/local/apache2 –enable-mods-shared=all -with-ssl-enable-ssl -enable-so
或
[[email protected] httpd-2.2.22]# ./configure–prefix=/usr/local/apache2 -with-ssl -enable-ssl -enable-so-enable-rewrite
[[email protected] httpd-2.2.22]# make
[[email protected] httpd-2.2.22]# make install
开机自启动方法设置
[[email protected] httpd-2.2.22]#cp -f/usr/local/apache2/bin/apachectl /usr/sbin/apachectl
[[email protected] httpd-2.2.22]#cp /usr/local/apache2/bin/apachectl/etc/rc.d/init.d/httpd
[[email protected] httpd-2.2.22]# chmod +x /etc/rc.d/init.d/httpd
[[email protected] httpd-2.2.22]#chkconfig –add httpd
[[email protected] httpd-2.2.22]#chkconfig –level 345 httpd on
出现错误提示:service httpd does not support chkconfig
解决: 在文件/etc/rc.d/init.d/httpd中#!/bin/sh后面加入下面两行内容:
# chkconfig: 345 85 15
# description: Apache is a World Wide Webserver.
然后再
[[email protected] httpd-2.2.22]# chmod +x /etc/rc.d/init.d/httpd
[[email protected] httpd-2.2.22]#chkconfig –add httpd
[[email protected] httpd-2.2.22]#chkconfig –level 345 httpd on
另一种开机自启动方法设置:
[[email protected] httpd-2.2.22]# vi /etc/rc.local
加入以下内容
/usr/local/apache2/bin/apachectl start
启用Apache
[[email protected] httpd-2.2.22]# exportPATH=$PATH:/usr/local/apache2/bin
[[email protected] httpd-2.2.22]# apachectl start
或:
[[email protected] httpd-2.2.22]# service httpd -kstart
或
[[email protected] httpd-2.2.22]# httpd -k start
若出现错误提示:
httpd: Syntax error on line 106 of/usr/local/apache2/conf/httpd.conf: Cannot load/usr/local/apache2/modules/libphp5.so into server:/usr/local/apache2/modules/libphp5.so: cannot open shared objectfile: No such file or directory
说明/usr/local/apache2/modules/libphp5.so不存在,需重新编译PHP,或在已编译好的PHP目录中将libphp5.so复制一份到apache2安装目录,如:
[[email protected] httpd-2.2.22]# cp/usr/local/src/php-5.4.4/libs/libphp5.so/usr/local/apache2/modules/
停止Apache
[[email protected] httpd-2.2.22]# exportPATH=$PATH:/usr/local/apache2/bin
[[email protected] httpd-2.2.22]# apachectl stop
或:
[[email protected] httpd-2.2.22]# service httpd -kstop
或
[[email protected] httpd-2.2.22]# httpd -k stop
重启Apache
[[email protected] httpd-2.2.22]# exportPATH=$PATH:/usr/local/apache2/bin
[[email protected] httpd-2.2.22]# apachectl restart
或:
[[email protected] httpd-2.2.22]# service httpd -krestart
或
[[email protected] httpd-2.2.22]# httpd -k restart
若出现以下错误:
httpd: Could not reliably determine the server’s fully qualifieddomain name, using 127.0.0.1 for ServerName
httpd not running, trying to start
(98)Address already in use: make_sock: could not bind to address[::]:80
(98)Address already in use: make_sock: could not bind to address0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
则
[[email protected] httpd-2.2.22]# vi/usr/local/apache2/conf/httpd.conf
进入apache的安装目录,用记事本打开httpd.conf
将里面的#ServerName www.example.com:80注释去掉即可,,并改成ServerName127.0.0.1:80。或者 ServerName localhost:80(80是端口,只要不冲突可以改为其他端口,一般80为默认端口)
然后
[[email protected] httpd-2.2.22]# ps -aux |grephttpd
[[email protected] httpd-2.2.22]# killall -9 httpd
[[email protected] httpd-2.2.22]# apachectl restart
若遇80端口被占用,无法启用apache,可执行
[[email protected] httpd-2.2.22]# netstat -natup |grep80 #查看80端口被哪个进程占用
[[email protected] httpd-2.2.22]# ps 进程ID #查看进程信息
[[email protected] httpd-2.2.22]# kill -9 进程ID #杀死进程
在重启后发现Apache启动失败:
[[email protected] logs]# apachectl restart
httpd not running, trying to start
在Apache的日志文件中(/usr/local/apache2/logs/error_log)有如下的错误信息:
[Thu Feb 09 16:16:41 2012] [alert] (EAI 2)Name or service notknown: mod_unique_id: unable to find IPv4 address of“prd111caihuablog001″
Configuration Failed
则在/etc/hosts中添加一行
127.0.0.1 prd111caihuablog0011 localhost
就可以正常启动Apache了。
修改Linux的主机名,其实是修改文件/etc/sysconfig/network里的主机名.
NETWORKING=yes
HOSTNAME=prd111caihuablog001
若直接修改/etc/sysconfig/network ,则需重启网络才能生效,如:
/etc/rc.d/init.d/network restart
添加Apache的环境变量
[[email protected] httpd-2.2.22]# vi /etc/profile
在最后加上如下一行代码:
将其打开把
export PATH=$PATH:/usr/local/apache2/bin
这句放在“export PATH USER LOGNAME MAIL HOSTNAME HISTSIZEINPUTRC”的上一行
立即生效环境配置,不需要重启,用下命令:
[[email protected] httpd-2.2.22]# . /etc/profile
1.2. 修改Apache配置文件
[[email protected] httpd-2.2.22]# vi/usr/local/apache2/conf/httpd.conf
主要修改的内容如下:
DocumentRoot “/var/www/root”
Options -IndexesFollowSymLinks
AllowOverride All
allow,deny
Allow from all
DirectoryIndex index.htmlindex.htm default.htm index.php default.php index.shtmldefault.shtml
TypesConfig conf/mime.types
AddType application/x-compress.Z
AddType application/x-gzip .gz.tgz
AddType application/x-httpd-php.php
AddTypeapplication/x-httpd-php-source .phps
AddType text/html .shtml
AddOutputFilter INCLUDES.shtml
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf
# Various default settings
Include conf/extra/httpd-default.conf
NameVirtualHost *:80
Include/usr/local/apache2/conf/extra/vhosts/*.conf
1.3. 创建虚拟主机
[[email protected] httpd-2.2.22]# vi/usr/local/apache2/conf/extra/vhosts/www_finet85_cn.conf
内容如下(前提条件:目录/var/www/root/www_finet85_cn和目录/var/www/logs/www_finet85_cn/都已创建,且已安装cronolog)
ServerName www.finet85.cn
DocumentRoot/var/www/root/www_finet85_cn
[email protected]SiteLogs
#TransferLog/var/www/logs/www_finet85_cn/TransferLog.txt
#ErrorLog/var/www/logs/www_finet85_cn/ErrorLog.txt
CustomLog“|/usr/local/sbin/cronolog/var/www/logs/www_finet85_cn/access_%Y%m%d.log” combined
ErrorLog“|/usr/local/sbin/cronologvar/www/logs/www_finet85_cn/error_%Y%m%d.log”
Options -Indexes FollowSymLinks
AllowOverride All
Orderallow,deny
Allowfrom all
ServerName *.finet85.cn
DocumentRoot/var/www/root/www_finet85_cn
[email protected]SiteLogs
#TransferLog/var/www/logs/www_finet85_cn/TransferLog.txt
#ErrorLog/var/www/logs/www_finet85_cn/ErrorLog.txt
CustomLog“|/usr/local/sbin/cronolog/var/www/logs/www_finet85_cn/access_%Y%m%d.log” combined
ErrorLog“|/usr/local/sbin/cronologvar/www/logs/www_finet85_cn/error_%Y%m%d.log”
Options -Indexes FollowSymLinks
AllowOverride All
Orderallow,deny
Allowfrom all
编译安装mod_rewrite
如果安装apache时忘了安装rewrite,则可执行以下操作安装rewrite
cd apache下载源目录
[[email protected] src]# cd httpd-2.2.22
[[email protected] httpd-2.2.22]# find ./ -name mod_rewrite.c
进入 mod_rewrite.c 所在目录执行命令
[[email protected] httpd-2.2.22]# cd/usr/local/src/httpd-2.2.22/modules/mappers/
[[email protected] proxy]# /usr/local/apache2/bin/apxs -i -a -cmod_rewrite.c
[[email protected] mappers]# apachectl restart
参数说明:
-i : 执行安装操作,将so 安装到 modules目录
-a: 在httpd.conf中激活该模块
-c: 执行编译操作
如果没有什么错误的话,应该在apache的modules目录中编译出一个mod_rewrite.so文件。
编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:
LoadModule rewrite_module modules/mod_rewrite.so
##将/* 及/*/*的请求都转向到 /new/index.htm , 同时浏览器显示的是前者的链接。
RewriteEngine On
RewriteRule ^/.*(/(.*))?$ /new/index.htm [L,PT]
附:RewriteRule 参数
Apache安装完成后,添加新模块
apxs是一个为ApacheHTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用LoadModule指令在运行时加载到Apache服务器中。
1. 进入apache源代码的modules目录
2. 运行如下命令自动编译、安装和修改httpd.conf文件,激活mod_proxy模块:
进入 mod_rewrite.c 所在目录执行命令
[[email protected] httpd-2.2.22]# cd/usr/local/src/httpd-2.2.22/modules/proxy
[[email protected] proxy]# /usr/local/apache2/bin/apxs -c -i -amod_proxy.c proxy_util.c
[[email protected] proxy]# apachectl restart
apache path/bin/apxs -c -i -a mod_proxy.c proxy_util.c
选项说明:
-c 执行编译操作
-i 安装操作,安装一个或多个动态共享对象到服务器的modules目录
-a 自动增加一个LoadModule行到httpd.conf文件,以激活此模块,若此行存在则启用之
-A 与-a类似,但是它增加的LoadModule行前有井号前缀(#)
-e 需要执行编辑操作,可与-a和-A选项配合使用,与-i操作类似,修改httpd.conf文件,但并不安装此模块
3. 重启apache。
参考:
http://www.jzxue.com/fuwuqi/http-iis-apache/200902/06-1457.html
1.4. 安装 cronolog [[email protected] src]# wgethttp://cronolog.org/download/cronolog-1.6.2.tar.gz
[[email protected] src]# tar -zxvf cronolog-1.6.2.tar.gz
[[email protected] src]# cd cronolog-1.6.2
[[email protected] cronolog-1.6.2]#./configure
[[email protected] cronolog-1.6.2]# make
[[email protected] cronolog-1.6.2]# make install
[[email protected] cronolog-1.6.2]# which cronolog#查看cronolog安装后所在目录(验证安装是否成功
[[email protected] cronolog-1.6.2]# man cronolog #查看Man手册
修改Aapche虚拟主机配置文件 httpd.conf
a.将Web访问日志设置 CustomLog 和错误日志设置 ErrorLog修改为以下格式:
CustomLog “|/usr/local/sbin/cronolog/var/www/logs/access_%Y%m%d.log” combined
ErrorLog “|/usr/local/sbin/cronologvar/www/logs/error_%Y%m%d.log”
b.日志分割完了,我们还可以使用压缩命令将每天产生的日志进行打包处理,一是节省磁盘空间,同时还可以定期将压缩好的日志转移到其他地方备份起来,方便我们随时查看,而这个任务我们可以配合系统自带的crontab系统计划任务来实现。
1、首先我们在root目录下写一个压缩日志的脚本
#!/bin/bashLOG_WEB=”/var/www/logs” //根据自己的日志路径设置 DATE=`date-d yesterday +%Y-%m-%d` //指定时间为前一天
cd $LOG_WEB //进入日志目录
/bin/gzip bak_access_$DATE.log //执行压缩命令
/bin/gzip bak_error_$DATE.log //执行压缩命令
注:在缺省的状态下,用gzip命令压缩文件,会在生成的压缩文件后再加上一个.gz扩展名,然后删除掉原来的文件。
2、然后我们保存脚本为“ziplog.sh”并设置可执行权限,之后我们就可以将其添加到crontab系统计划任务中了。
crontab -e //进入crontab的编辑界面,添加如下内容
0 1 * * * sh/var/www/logs/ziplog.sh //设定每天凌晨1点执行脚本任务,保存退出
使用“crontab -l”可以查看我们刚才添加的命令
3、自动删除7天前的log脚本
用root帐号打开CronTab
[[email protected] ~]# crontab –e
然后输入
30 22 * * * /var/www/logs/rmlog.sh
每天22点30分就会自动运行该脚本
rmlog.sh脚本
#!/bin/bashshlog=/usr/local/apache/logs/sh.loglogpath=”/var/www/logs/ir/”
today=$(date +%Y%m%d)
file=” bak_access_”.$today. “.log.gz”
oldfile=”$logpath”$(date +%Y%m%d –date=’7 days ago’)
echo $oldfile
#if [ -f $oldfile ]
#then
rm -rf $oldfile >>$shlog 2>&1
echo “[$(date +%Y%m%d)][$(date +%T)][$oldfile] DeleteSuccess!”>>$shlog
#else
# echo “[$(date +%Y%m%d)][$(date +%T)][$oldfile] No OldFile!”>>$shlog
#fi
这段脚本每次执行输出执行结果到一个sh.log文件中以让自己知道执行结果
Apache 日志备份与删除脚本:
#!/bin/bash#
# apache logs (ir) backup
backupDir=/var/www/logs/ir/
targetDir=/var/www/logsbackup/
logfilename=`date -d yesterday +%Y%m%d`
backupdate=`date +%Y%m%d.%H`
cd $backupDir
echo “get access log:”
if [ -e "ir-access_${logfilename}.log" ]; then
#tar -zcvPf ir-access_bak_${backupdate}.tar.gz $(basename$backupDir)
tar -zcvPf ir-access_bak_${backupdate}.tar.gzir-access_${logfilename}.log
rm -rf ir-access_${logfilename}.log
mv ir-access_bak_${backupdate}.tar.gz $targetDir
fi
echo “done.”
echo “get error log:”
if [ -e "ir-error_${logfilename}.log" ]; then
tar -zcvPf ir-error_bak_${backupdate}.tar.gzir-error_${logfilename}.log
rm -rf ir-error_${logfilename}.log
mv ir-error_bak_${backupdate}.tar.gz $targetDir
fi
echo “done.”
#取当前日期的上个月同日期的文件,然后删除。
#如果当前日期是1号的话,则删除前两个月的所有文件,保留一个月。
cd $targetDir
yy=`date +%Y` #Year yyyy取得当前日期的年份
mm=`date +%m` #Month mm取得当前日期的月份
dd=`date +%d` #Day dd取得当前日期的日数
#echo $yy-$mm-$dd
if [ $dd -eq '01' ] ; then#如果每个月1号,删除前两个月的所有文件由于可能出现本月只有30天而上月有31天,31号的文件没删的情况,所以在每个月初做一次全部删除的操作。
prvmm=`expr $mm – 2`#月份-2
else
prvmm=`expr $mm – 1`
fi
if [ $prvmm -eq 0 ] ; then
prvmm=12
elif [ $prvmm -lt 10 ] ; then
prvmm=0$prvmm
fi
#echo $prvmm
if [ $dd -eq '01' ] ; then
accessfilename=ir-access_bak$yy$prvmm*
errorfilename=ir-error_bak$yy$prvmm*
else
accessfilename=ir-access_bak$yy$prvmm$dd*
errorfilename=ir-error_bak$yy$prvmm$dd*
fi
if (ls $accessfilename && ls $errorfilename) >/dev/null 2>&1;then
#echo “file exists”
rm -rf $accessfilename
rm -rf $errorfilename
else
#echo “no files”
fi
1.5. 安装 AWStats
配置awstats
awstats的配置使用awstats的配置工具/usr/local/awstats/tools/awstats_configure.pl进行配置,首先用vi打开configure.pl文件,看看第一行有关perl运行环境的配置是否正确,然后运行下面的命令进行配置:
[[email protected] ~]#/usr/local/awstats/tools/awstats_configure.pl
基本上整个配置过程很简单,回车和简单填写一些就结束了,awstats_configure.pl工具会自动修改您的apache配置,在apache的配置文件httpd.conf文件中自动修改下面信息
CustomLog /yourlogpath/yourlogfile common
为
CustomLog /yourlogpath/yourlogfile combined
这样的修改将让您的apache在记录日志的时候记录到更多可用于分析的内容,比如来访者的浏览器、来访者的身份(是否为蜘蛛、机器人等)。
同时awstats_configure.pl还将自动在httpd.conf文件中添加下面内容:
## Directives to allow use of AWStats as a CGI#
Alias /awstatsclasses “/usr/local/awstats/wwwroot/classes/”
Alias /awstatscss “/usr/local/awstats/wwwroot/css/”
Alias /awstatsicons “/usr/local/awstats/wwwroot/icon/”
ScriptAlias /awstats/ “/usr/local/awstats/wwwroot/cgi-bin/”
#
# This is to permit URL access to scripts/files in AWStatsdirectory.
#
Options None
AllowOverride None
Order allow,deny
Allow from all
这将配置awstats可以通过web客户端访问。
另外,configure.pl还将根据安装过程中您的回答(要分析的网站名称)信息,自动生产/etc/awstats/awstats.yourdomain.conf文件,我生成的文件是awstats.finet85.conf文件,这个文件几乎不用修改,就可以了,如果您有些特殊的设置,可以自己修改该文件进行配置,我的配置文件里面最基本的几行配置内容如下:
#LogFile=”/var/www/logs/www_finet85_cn/access_%YYYY-0%MM-0%DD-0.log”LogFile=”/var/www/logs/www_finet85_cn/*.log |”SiteDomain=”finet85.cn”
HostAliases=”finet85 www.finet85 127.0.0.1 localhost”
其他的都是默认设置,不用修改
这样,您就完成了awstas的安装和配置。
分析日志
完成awstats的配置以后,要让awstats开始第一次进行您的日志文件的分析,并存放awstats的数据库中,您需要运行下面的命令
[[email protected] ~]#/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update-config=finet85
或
[[email protected] ~]# perl awstats.pl -update-config=finet85
上面的finet85替换成您/etc/awstats/awstats.yourhost.conf中的yourhost即可
这样,awstats就完成了第一次数据的导入,今后您只需要定期再次运行此命令即可进行增量的更新!
我把这个命令加到了crontab中,让他每天凌晨5点运行一次,呵呵,下面是加入到crontab的方法
#crontab -e
添加以下内容
0 5 * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update-config=finet85
至此,您的全部安装和配置完成,重启一下您的apache,在ie里面输入http://www.yourhost.com/awstats/awstats.pl?config=yoursitename&lang=yourlang即可访问!如:呵呵,好好享受吧!
Awstats访问权限设置
Awstats默认情况系任何人都可以访问。可以通过apache限制Awstats限制只有登陆的用户才能访问。
(1)用Apache的htpasswd指令生成用户名和密码
[[email protected] ~]# htpasswd -cm/usr/local/awstats/authfile finet_ir
[[email protected] ~]# htpasswd -m/usr/local/awstats/authfile finet_ir
(2)在Apache的配置文件httpd.conf,Awstats的目录权限配置中添加访问权限控制。
即将
Order allow,deny
Allow from all
修改为:
AuthName “admin onssw Access”
Order allow,deny
Allow from all
AuthType Basic
AuthName “Restricted Files”
AuthUserFile “/usr/local/awstats/authfile”
Require user finet_ir
重启apache
生成html静态页面方便查看
[[email protected] ~]#/usr/local/awstats/tools/awstats_buildstaticpages.pl -update-config=www.finet85.cn -lang=cn -dir=/var/www/logs/www_finet85_cn-awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl
上述命令参数解释:
* /usr/local/awstats/tools/awstats_buildstaticpages.plAwstats #静态页面生成工具
* -update -config=www.finet85.cn #更新配置项
* -lang=cn #语言为中文
* -dir=/var/www/logs/www_finet85_cn统计结果输出目录
* -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.plAwstats 日志更新程序路径。
1.6. 安装mod_fastcgi [[email protected] src]# wgethttp://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
[[email protected] src]# tar -zxvf mod_fastcgi-current.tar.gz
[[email protected] src]# cd mod_fastcgi*
[[email protected] mod_fastcgi-2.4.6]# cp Makefile.AP2 Makefile
[[email protected] mod_fastcgi-2.4.6]# maketop_dir=/usr/local/apache2
[[email protected] mod_fastcgi-2.4.6]# make install
修改apache的httpd.conf, 使apache载入FastCGI模块:
[[email protected] mod_fastcgi-2.4.6]# vi/usr/local/apache2/conf/httpd.conf
增加以下内容:
LoadModule fastcgi_module modules/mod_fastcgi.so