LAMP-httpd-2.2.27安装配置(apache)
httpd-2.2.27.tar.gz安装
cd /home/shnne/tools/ wget ....httpd-2.2.27.tar.gz tar xf httpd-2.2.27.tar.gz cd httpd-2.2.27
可以通过查看INSTALL 和README文件来查看安装方式。
编译以下内容
./configure \ --prefix=/application/apache2.2.27 \ --enable-deflate \ --enable-expires \ --enable-headers \ --enable-modules=most \ --enable-so \ --with-mpm=worker \ --enable-rewrite
编译过程中可能报缺少zlib的错误
yum install zlib zlib-devel -y make make install
安装好了,创建一个软连接
ln -s /application/apache2.2.27/ /application/apache ll /application/apache
prefork和worker模式的比较:
prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。
在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。
prefork的无线程设计在某些情况下将比worker更有优势:
它可以使用那些没有处理好线程安全的第三方模块,并 且对于那些线程调试困难的平台而言,它也更容易调试一些。
worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。
通常来说,在一个高流量的HTTP服务器 上,Worker MPM是个比较好的选择,
因为Worker MPM的内存使用比Prefork MPM要低得多。
但worker MPM也由不完善的地方,如果一个线程崩溃,
整个进程就会连同其所有线程一起”死掉”.由于线程共享内存空间,
所以一个程序在运行时必须被系统识别为”每 个线程都是安全的”。
总的来说,prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。
启动服务与检查语法
/application/apache/bin/apachectl start /application/apache/bin/apachectl -t
检查服务
ps -ef|grep httpd lsof -i :80
注:启动服务提示httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
只要修改vim /application/apache/conf/httpd.conf下的
#ServerName www.example.com:80 去掉#,然后把www.example.com换成127.0.0.1
即是ServerName 127.0.0.1:80
虚拟主机:部署多个站点,每个站点,希望用不同的域名和站点目录,或者是不同的端口,不同的ip,需要虚拟主机功能。
一个http服务配置多个站点,就需要虚拟主机.
虚拟主机分类:
a.基于域名 b.基于端口 c.基于ip
建立网站
mkdir -p /var/html/{www,blog,bbs} tree /var/html/ touch /var/html/{www,blog,bbs}/index.html tree /var/html/ for name in www bbs blog;do echo "$name.shnne.org" >/var/html/$name/index.html;done for name in www bbs blog;do cat /var/html/$name/index.html;done
修改之前备份配置文件,开启虚拟主机模式。
cp application/apache/conf/httpd.conf.ori vim /application/apache/conf/httpd.conf
把下面的两句前面的注释去掉
#Include conf/extra/httpd-mpm.conf #Include conf/extra/httpd-vhosts.conf
修改httpd-vhosts.conf配置文件
注:修改配置文件之前,需要做备份
vim /application/apache/conf/extra/httpd-vhosts.conf 添加 <VirtualHost *:80> ServerAdmin shnne@qq.com DocumentRoot "/var/html/www" ServerName www.shnne.com ServerAlias shnne.com ErrorLog "logs/www.shnne.com-error_log" CustomLog "logs/www.shnne.com-access_log" common </VirtualHost> <VirtualHost *:80> ServerAdmin shnne@qq.com DocumentRoot "/var/html/bbs" ServerName bbs.shnne.com ErrorLog "logs/bbs.shnne.com-error_log" CustomLog "logs/bbs.shnne.com-access_log" common </VirtualHost> <VirtualHost *:80> ServerAdmin shnne@qq.com DocumentRoot "/var/html/blog" ServerName blog.shnne.com ErrorLog "logs/blog.shnne.com-error_log" CustomLog "logs/blog.shnne.com-access_log" common </VirtualHost>
检查语法并优雅的重启服务
/application/apache/bin/apachectl -t /application/apache/bin/apachectl graceful
测试网站打开出现403 forbidden错误,这个是因为/var/html没有权限导致,需要修改主配置文件,修改之前备份配置文件。
cp application/apache/conf/httpd.conf.ori vim /application/apache/conf/httpd.conf
文件最后添加
<Directory "/var/html"> Options -Indexes FollowSymLinks #Indexes需要加-注释或者删掉 AllowOverride None Order allow,deny Allow from all </Directory>
再次检查语法并优雅的重启服务
/application/apache/bin/apachectl -t /application/apache/bin/apachectl graceful
测试对应网站。
上面的配置是基于域名,基于端口需要在主配置文件里添加监听端口,在httpd-vhosts.conf 也添加监听端口,并且修改对应网站的端口即可,基于ip的同理,把域名和*修改为ip。
apache日志轮循工具
1.cronolog 对apache日志轮循
按年、月生成不同目录
CustomLog "|/usr/local/sbin/cronolog /logs/%Y/%m/access_www_%Y%m%d.log" combined
(按天记录日志,缺点不会自动覆盖)
2.apache自带的日志轮循rotatelogs
CustomLog "|/application/apache/bin/rotatelogs /logs/access_www_%Y%m%d%H%M.log 86400" combined
注:cronolog和rotatelogs都是在httpd-vhosts.conf替换默认的记录日志方式。
3.脚本切割,做计划任务脚本每天00:00开始
cd /application/apache/logs mv www-access_log www-access_$(date +%F).log /application/apache/bin/apachectl graceful
隐藏系统及Apache版本信息(调优一部分)
vim /home/shnne/tools/httpd-2.2.27/include/ap_release.h
修改以下红字内容为你想要的内容
#define AP_SERVER_BASEVENDOR "Apache Software Foundation"
#define AP_SERVER_BASEPROJECT "Apache HTTP Server"
#define AP_SERVER_BASEPRODUCT "Apache"
#define AP_SERVER_MAJORVERSION_NUMBER 2
#define AP_SERVER_MINORVERSION_NUMBER 2
#define AP_SERVER_PATCHLEVEL_NUMBER 27
#define AP_SERVER_DEVBUILD_BOOLEAN 0
vim /home/shnne/tools/httpd-2.2.27/os/unix/os.h
修改以下红字内容为你想要的内容
#define PLATFORM "Unix"
修改好以后,在进行源码编译工作
编译好了以后,在修改两处
vim /application/apache/conf/httpd.conf
把下面的#注释去掉
#Include conf/extra/httpd-default.conf
grep "^Server" /application/apache/conf/extra/httpd-default.conf
ServerTokens Full
ServerSignature On
vim /application/apache/conf/extra/httpd-default.conf
修改为
ServerTokens Prod
ServerSignature Off
再次检查语法并优雅的重启服务
/application/apache/bin/apachectl -t /application/apache/bin/apachectl graceful
禁止ip访问方法
直接在配置文件中添加
<VirtualHost *:80>
ServerName ip地址
</VirtualHost>
<< 上一篇
下一篇 >>
网友留言(0 条)