首页 Linux基础正文

LAMP-httpd-2.2.27安装配置(apache)

Jean Linux基础 2017-09-28 873 0 linuxapache

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

注:cronologrotatelogs都是在httpd-vhosts.conf替换默认的记录日志方式。 

3.脚本切割,做计划任务脚本每天0000开始

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>

评论