一、安装准备


1.1 软件以及软件依赖的准备
APACHE(V2.4.18)
http://httpd.apache.org/download.cgi
主要软件下载: 点击下载
依赖组件下载:
http://mirrors.cnnic.cn/apache/apr/
apr-1.5.2 点击下载
apr-util-1.5.4 点击下载
官网 http://www.pcre.org
pcre8.38 点击下载
官网 http://www.openssl.org/source/
openssl-1.1.0 点击下载 //暂时没用


安装前先检测是否系统带有编译器gcc 或者 历史有安装过httpd

rpm -qa | grep httpd    //监测是否安装过httpd 检测mysql 和 php的命令就不写了.
rpm -e httpd --nodeps   //如果存在则强制卸载依赖包从检测出来的列表倒序卸载.

2.1.1 安装apr-1.5.2

tar xzvf apr-1.5.2.tar.gz
cd  apr-1.5.2
./configure \
--prefix=/usr/local/apache2.4.18/apr-ext/apr-1.5.2
make && make install

2.1.2 安装apr-util-1.5.4

tar xzvf apr-util-1.5.4.tar.gz
./configure \
--prefix=/usr/local/apache2.4.18/apr-ext/apr-util-1.5.4  \
--with-apr=/usr/local/apache2.4.18/apr-ext/apr-1.5.2/bin/apr-1-config

2.1.3 安装openssl-1.1.0

tar xzvf openssl-1.1.0-pre2.tar.gz
cd openssl-1.1.0-pre2
./config --prefix=/usr/local/openssl-1.1.0
make && make install

2.1.4 安装pcre8.38

unzip pcre-8.38.zip
./configure --prefix=/usr/local/pcre-8.38
make && make install

2.1.5 安装apache2.4.18

tar xzvf httpd-2.4.18.tar.gz
cd httpd-2.4.18
./configure \
--prefix=/usr/local/apache2.4.18 \
--with-apr=/usr/local/apache2.4.18/apr-ext/apr-1.5.2 \
--with-apr-util=/usr/local/apache2.4.18/apr-ext/apr-util-1.5.4 \
--with-pcre=/usr/local/pcre-8.38 

三、优化配置环境
3.1 配置httpd环境
vim /usr/local/apache2.4.18/conf/httpd.conf
3.1.1 去掉190 #ServerName www.example.com:80 前面#,改为
ServerName localhost:80
3.1.2 去掉 464 行前面的#,开启虚拟主机
Include conf/extra/httpd-vhosts.conf
3.1.3 配置虚拟主机

vim /usr/local/apache2.4.18/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
ServerAdmin 394534000@qq.com
DocumentRoot "/www/web/test"
ServerName test.com
ServerAlias www.test.com
ErrorLog "logs/test.com-error_log"
CustomLog "logs/test.com-access_log" common
</VirtualHost>

ln -s /usr/local/apache2.4.18/bin/apachectl /usr/bin/apache
ln -s /usr/local/apache2.4.18/logs /www/web/logs //便于后期查看apache 运行日志
vim /usr/local/apache2.4.18/conf/httpd.conf

<Directory />
    AllowOverride none
    Require all denied
</Directory>
改为:
<Directory />
    Options -Indexes +FollowSymLinks +ExecCGI   #(-Indexes 属性为禁止列目录)
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted         
    #apache 2.4以上版本中需要在目录下面添加 Require all granted,否则无论怎么访问都是403。
</Directory>

开启GZIP压缩,开启前测试.
gizp.png
开启GZIP压缩后:
gizp_after.png
开启方法:
vim /usr/local/apache2.4.18/conf/httpd.conf

开启拓展: 去掉前面的注释#
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule filter_module modules/mod_filter.so
#在httpd.conf 底部加入
<IfModule mod_deflate.c>
#压缩级别
DeflateCompressionLevel 6
SetOutputFilter DEFLATE
#对指定的内容进行压缩,压缩方式为默认的一个方法
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript application/json 
#设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
#同上,就是设置不对exe,tgz,gz。。。的文件进行压缩
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
#设置对文件是文本的内容进行压缩,例如text/html text/css text/plain等
AddOutputFilterByType DEFLATE text/*
#这段代码你只需要了解application/javascript application/x-javascript这段就可以了,这段的意思是对javascript文件进行压缩
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
#这段是告诉apache对php类型的文件进行压缩
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
# Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 有更多的问题,所以不开启压缩
BrowserMatch ^Mozilla/4.0[678] no-gzip
# IE浏览器会伪装成 Netscape ,但是事实上它没有问题
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

禁止本机通过域名访问:

vim /usr/local/apache2.4.18/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
  ServerName 8.8.8.8  #本机IP
  <Location />
       Order Allow,Deny
       Deny from all
  </Location>
</VirtualHost>

开启URLRewrite
找到 #LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的#
找到 AllowOverride None 改成 AllowOverride All , 有两个全部改掉
在网站根目录创建 .htaccess文件

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 
[QSA,PT,L]
</IfModule>

3.1.3.1 配置 httpd-vhost 虚拟主机

<VirtualHost *:80>
    ServerAdmin www.aaa.cn
    DocumentRoot "/www/aaa"
    ServerName  zomei.cn
    ServerAlias www.zomei.cn
    ErrorLog "logs/www.aaa.cn-error_log"
    CustomLog "logs/www.aaa.cn-access_log" common
    php_admin_value open_basedir "/www/aaa:/tmp"  #防止跨目录,擦要不然被爆菊 你都不啥感觉
</VirtualHost>

3.1.4 重启APACHE配置.
/usr/bin/apache -k restart 【启动】
//查看是否启动
ps -ef | grep httpd

3.1.5 设置开机启动

方法一.
apache设为linux服务

cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd

在在#!/bin/sh后面加入下面两行
#chkconfig:345 85 15
#description: Start and stops the Apache HTTP Server.
注意:没有这几行,在使用chkconfig时会提示: service httpd does not support chkconfig。
然后
chmod +x /etc/rc.d/init.d/httpd
chkconfig --add httpd
然后可以用setup命令进入服务设置,设置为开机启动


第二种方法:
在/etc/rc.d/rc.local中增加启动apache的命令,例如:/usr/local/httpd/bin/apachectl start