apache2日常笔记

2016-10-21

系统环境:Ubuntu 14.04、apache2

升级apache2

apache 2.4.9以后php-fpm协同apache一起工作所需要的配置没有以前那么复杂了,所以有必要升级一下。

查看apache版本

apachectl -v

1.添加并更新源

LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/apache2
apt-get update

注意,命令前加了 LC_ALL=en_US.UTF-8,为了防止添加期间编码报错问题!

如果还是出现编码问题则:

locale-gen en_US en_US.UTF-8
dpkg-reconfigure locales
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

注:

locale    # 查看当前编码环境

locale -a  # 查看所有支持的语言环境

如果add-apt-repository在您的VPS中不可用,请安装它。

apt-get install software-properties-common

或者,在较旧的Ubuntu版本上:

apt-get install python-software-properties

2.安装

安装前您可以通过以下方式查看存储库中的可用版本:

$ apt-cache policy apache2
apache2:
  Installed: 2.4.7-1ubuntu4.18
  Candidate: 2.4.33-1+ubuntu14.04.1+deb.sury.org+1
  Version table:
     2.4.33-1+ubuntu14.04.1+deb.sury.org+1 0
        500 http://ppa.launchpad.net/ondrej/apache2/ubuntu/ trusty/main amd64 Packages
 *** 2.4.7-1ubuntu4.18 0
        500 http://mirrors.aliyun.com/ubuntu/ trusty-updates/main amd64 Packages
        500 http://mirrors.aliyun.com/ubuntu/ trusty-security/main amd64 Packages
        100 /var/lib/dpkg/status
     2.4.7-1ubuntu4 0
        500 http://mirrors.aliyun.com/ubuntu/ trusty/main amd64 Packages

开始安装吧:

apt install apache2

系统会自动更新至最新版本 2.4.33

配置缓存

1.进入apache模块目录:

cd /etc/apache2/mods-enabled

2.给expires、headers两个模块建立软链:

ln -s ../mods-available/expires.load
ln -s ../mods-available/headers.load

3.建立配置文件、以及软链:

ln -s ../mods-available/expires.conf
ln -s ../mods-available/headers.conf

4.编辑配置文件:

cat ../mods-available/expires.conf

<IfModule mod_expires.c>
ExpiresActive On  
ExpiresByType text/html "now plus 1 day"  
ExpiresByType text/css "now plus 1 month"  
ExpiresByType application/x-javascript "now plus 5 day"  
ExpiresByType image/jpeg "access plus 1 month"  
ExpiresByType image/gif "access plus 1 month"  
ExpiresByType image/bmp "access plus 1 month"  
ExpiresByType image/x-icon "access plus 1 month"  
ExpiresByType image/png "access plus 1 month"  
ExpiresByType application/x-shockwave-flash "access plus 1 month"  
</IfModule>

cat ../mods-available/headers.conf

<IFModule mod_headers.c>
Header add Pragma "cache"
</IFModule>

5.重启apache2:

/etc/init.d/apache2 restart

内存优化

利用mpm_prefork模块调整内存占用:

apt-get install apache2-mpm-prefork

比如需要对低内存设备优化:

1.修改:/etc/apache2/mods-enabled/mpm_prefork.conf

<IfModule mpm_prefork_module>
       StartServers              1
       MinSpareServers           1
       MaxSpareServers           10
       MaxRequestWorkers         150
       MaxConnectionsPerChild    2
</IfModule>

StartServers 启动时建立的子进程数量

MinSpareservers和MaxSpareServers分别设置空闲子进程的最小和最大数量

MaxConnectionsPerChild 子进程最大连接数 (超过了释放内存)

2.修改:/etc/apache2/apache2.conf

KeepAlive off

KeepAlive 配置的含义:

对于HTTP/1.1的客户端来说,将会尽量的保持客户的HTTP连接,通过一个连接传送多份HTTP请求响应。

这样对于客户端来说,可以提高50%左右的响应时间,而于服务器端来说则降低了更多个连接的开销。

不过这个依赖于客户端是否想保持连接。IE默认是保持连接的,当你打开100个图片的网站时,IE有可能只打开2个连接,通过这两个连接传送数据,而不是开100个连接。

在 Apache 服务器中,KeepAlive 是一个布尔值,On 代表打开,Off 代表关闭,这个指令在其他众多的 HTTPD 服务器中都是存在的。

KeepAliveTimeout 为持久连接保持的时间,也就是说,在这此连接结束后开始计时,多长时间内没有重新发送HTTP请求,就断掉连接。默认设置为5秒,这个值可以大点,但不能太大,否则会出现同时等候过多连接,导致多的内存被占用。

设置.htaccess后出现页面500错误

查看apache2的错误日志出现:.htaccess: order not allowed here

解决办法:

在apache的配置文件中修改AllowOverride的属性为all:

AllowOverride All

表示允许用户自定义.htaccess文件。

禁止用户访问特定文件

编辑.htaccess

<Files file.zip>
order allow,deny
deny from all 
</Files>

解决403错误

一般是权限不够导致,尝试在<Directory /**>目录下添加

Require all granted