- A+
Linux环境下Apache安装
1.1. 安装 Apache
[root@os11728 src]# yum remove httpd*
[root@os11728 src]# wget http://apache.etoak.com//httpd/httpd-2.2.22.tar.gz [root@os11728 src]# tar -zxvf httpd-2.2.22.tar.gz [root@os11728 src]# cd httpd-2.2.22 [root@os11728 httpd-2.2.22]# ./configure –prefix=/usr/local/apache2 –enable-mods-shared=all -with-ssl -enable-ssl -enable-so 或 [root@os11728 httpd-2.2.22]# ./configure –prefix=/usr/local/apache2 -with-ssl -enable-ssl -enable-so -enable-rewrite [root@os11728 httpd-2.2.22]# make [root@os11728 httpd-2.2.22]# make install |
开机自启动方法设置
[root@os11728 httpd-2.2.22]#cp -f /usr/local/apache2/bin/apachectl /usr/sbin/apachectl
[root@os11728 httpd-2.2.22]#cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd [root@os11728 httpd-2.2.22]# chmod +x /etc/rc.d/init.d/httpd [root@os11728 httpd-2.2.22]#chkconfig –add httpd [root@os11728 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 Web server. |
然后再
[root@os11728 httpd-2.2.22]# chmod +x /etc/rc.d/init.d/httpd
[root@os11728 httpd-2.2.22]#chkconfig –add httpd [root@os11728 httpd-2.2.22]#chkconfig –level 345 httpd on |
另一种开机自启动方法设置:
[root@os11728 httpd-2.2.22]# vi /etc/rc.local |
加入以下内容
/usr/local/apache2/bin/apachectl start |
启用Apache
[root@os11728 httpd-2.2.22]# export PATH=$PATH:/usr/local/apache2/bin [root@os11728 httpd-2.2.22]# apachectl start 或: [root@os11728 httpd-2.2.22]# service httpd -k start 或 [root@os11728 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 object file: No such file or directory
说明/usr/local/apache2/modules/libphp5.so不存在,需重新编译PHP,或在已编译好的PHP目录中将libphp5.so复制一份到apache2安装目录,如:
[root@os11728 httpd-2.2.22]# cp /usr/local/src/php-5.4.4/libs/libphp5.so /usr/local/apache2/modules/ |
停止Apache
[root@os11728 httpd-2.2.22]# export PATH=$PATH:/usr/local/apache2/bin [root@os11728 httpd-2.2.22]# apachectl stop 或: [root@os11728 httpd-2.2.22]# service httpd -k stop 或 [root@os11728 httpd-2.2.22]# httpd -k stop |
重启Apache
[root@os11728 httpd-2.2.22]# export PATH=$PATH:/usr/local/apache2/bin [root@os11728 httpd-2.2.22]# apachectl restart 或: [root@os11728 httpd-2.2.22]# service httpd -k restart 或 [root@os11728 httpd-2.2.22]# httpd -k restart |
若出现以下错误:
httpd: Could not reliably determine the server’s fully qualified domain 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 address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
则
[root@os11728 httpd-2.2.22]# vi /usr/local/apache2/conf/httpd.conf |
进入apache的安装目录,用记事本打开httpd.conf
将里面的#ServerName www.example.com:80注释去掉即可,,并改成ServerName 127.0.0.1:80。或者 ServerName localhost:80 (80是端口,只要不冲突可以改为其他端口,一般80为默认端口)
然后
[root@os11728 httpd-2.2.22]# ps -aux |grep httpd [root@os11728 httpd-2.2.22]# killall -9 httpd [root@os11728 httpd-2.2.22]# apachectl restart |
若遇80端口被占用,无法启用apache,可执行
[root@os11728 httpd-2.2.22]# netstat -natup |grep 80 #查看80端口被哪个进程占用 [root@os11728 httpd-2.2.22]# ps 进程ID #查看进程信息 [root@os11728 httpd-2.2.22]# kill -9 进程ID #杀死进程 |
在重启后发现Apache启动失败:
[root@prd111caihuablog001 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 not known: 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的环境变量
[root@os11728 httpd-2.2.22]# vi /etc/profile |
在最后加上如下一行代码:
将其打开把
export PATH=$PATH:/usr/local/apache2/bin |
这句放在“export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC”的上一行
立即生效环境配置,不需要重启,用下命令:
[root@os11728 httpd-2.2.22]# . /etc/profile |
1.2. 修改Apache配置文件
[root@os11728 httpd-2.2.22]# vi /usr/local/apache2/conf/httpd.conf |
主要修改的内容如下:
DocumentRoot “/var/www/root” <Directory “/var/www/root”>
Options -Indexes FollowSymLinks
AllowOverride All
allow,deny Allow from all
</Directory>
<IfModule dir_module> DirectoryIndex index.html index.htm default.htm index.php default.php index.shtml default.shtml </IfModule>
<IfModule mime_module> TypesConfig conf/mime.types
AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
AddType text/html .shtml AddOutputFilter INCLUDES .shtml </IfModule>
# 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. 创建虚拟主机
[root@os11728 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)
<virtualHost *:80> 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/cronolog var/www/logs/www_finet85_cn/error_%Y%m%d.log”
<Directory “/var/www/root”> Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
<VirtualHost *:80> 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/cronolog var/www/logs/www_finet85_cn/error_%Y%m%d.log” <Directory “/var/www/root”> Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> |
编译安装mod_rewrite
如果安装apache时忘了安装rewrite,则可执行以下操作安装rewrite
cd apache下载源目录
[root@os11728 src]# cd httpd-2.2.22 [root@os11728 httpd-2.2.22]# find ./ -name mod_rewrite.c |
进入 mod_rewrite.c 所在目录执行命令
[root@os11728 httpd-2.2.22]# cd /usr/local/src/httpd-2.2.22/modules/mappers/
[root@os11728 proxy]# /usr/local/apache2/bin/apxs -i -a -c mod_rewrite.c [root@os11728 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是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用LoadModule指令在运行时加载到Apache服务器中。
1. 进入apache源代码的modules目录
2. 运行如下命令自动编译、安装和修改httpd.conf文件,激活mod_proxy模块:
进入 mod_rewrite.c 所在目录执行命令
[root@os11728 httpd-2.2.22]# cd /usr/local/src/httpd-2.2.22/modules/proxy
[root@os11728 proxy]# /usr/local/apache2/bin/apxs -c -i -a mod_proxy.c proxy_util.c [root@os11728 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
[root@os11728 src]# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
[root@os11728 src]# tar -zxvf cronolog-1.6.2.tar.gz [root@os11728 src]# cd cronolog-1.6.2 [root@os11728 cronolog-1.6.2]#./configure [root@os11728 cronolog-1.6.2]# make [root@os11728 cronolog-1.6.2]# make install [root@os11728 cronolog-1.6.2]# which cronolog #查看cronolog安装后所在目录(验证安装是否成功 [root@os11728 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/cronolog var/www/logs/error_%Y%m%d.log”
b. 日志分割完了,我们还可以使用压缩命令将每天产生的日志进行打包处理,一是节省磁盘空间,同时还可以定期将压缩好的日志转移到其他地方备份起来,方便我们随时查看,而这个任务我们可以配合系统自带的crontab系统计划任务来实现。
1、首先我们在root目录下写一个压缩日志的脚本
#!/bin/bash LOG_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
[root@os11728 ~]# 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] Delete Success!”>>$shlog #else # echo “[$(date +%Y%m%d)][$(date +%T)][$oldfile] No Old File!”>>$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.gz ir-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.gz ir-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
[root@os11728 src]# wget http://sourceforge.net/projects/awstats/files/AWStats/7.0/awstats-7.0.tar.gz/download
[root@os11728 src]# tar -zxvf awstats-7.0.tar.gz [root@os11728 src]# cp -R ./awstats-7.0 /usr/local/awstats [root@os11728 awstats]# cd /usr/local/awstats [root@os11728 awstats]# mkdir /var/lib/awstats [root@os11728 awstats]# mkdir /var/lib/awstats |
配置awstats
awstats的配置使用awstats的配置工具/usr/local/awstats/tools/awstats_configure.pl 进行配置,首先用vi打开configure.pl文件,看看第一行有关perl运行环境的配置是否正确,然后运行下面的命令进行配置:
[root@os11728 ~]# /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 AWStats directory. # <Directory “/usr/local/awstats/wwwroot”> Options None AllowOverride None Order allow,deny Allow from all </Directory> |
这将配置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的数据库中,您需要运行下面的命令
[root@os11728 ~]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=finet85 |
或
[root@os11728 ~]# 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指令生成用户名和密码
[root@os11728 ~]# htpasswd -cm /usr/local/awstats/authfile finet_ir [root@os11728 ~]# htpasswd -m /usr/local/awstats/authfile finet_ir |
(2)在Apache的配置文件httpd.conf,Awstats的目录权限配置中添加访问权限控制。
即将
<Directory “/usr/local/awstats/wwwroot”> Options None AllowOverride None
Order allow,deny Allow from all </Directory> |
修改为:
<Directory “/usr/local/awstats/wwwroot”> Options NoneAllowOverride None
AuthName “admin onssw Access” Order allow,deny Allow from all AuthType Basic AuthName “Restricted Files” AuthUserFile “/usr/local/awstats/authfile” Require user finet_ir </Directory> |
重启apache
生成html静态页面方便查看
[root@os11728 ~]# /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.pl Awstats #静态页面生成工具
* -update -config=www.finet85.cn #更新配置项
* -lang=cn #语言为中文
* -dir=/var/www/logs/www_finet85_cn 统计结果输出目录
* -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl Awstats 日志更新程序路径。
1.6. 安装mod_fastcgi
[root@os11728 src]# wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
[root@os11728 src]# tar -zxvf mod_fastcgi-current.tar.gz [root@os11728 src]# cd mod_fastcgi* [root@os11728 mod_fastcgi-2.4.6]# cp Makefile.AP2 Makefile [root@os11728 mod_fastcgi-2.4.6]# make top_dir=/usr/local/apache2 [root@os11728 mod_fastcgi-2.4.6]# make install |
修改apache的httpd.conf, 使apache载入FastCGI模块:
[root@os11728 mod_fastcgi-2.4.6]# vi /usr/local/apache2/conf/httpd.conf |
增加以下内容:
LoadModule fastcgi_module modules/mod_fastcgi.so |
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫