什么是Apache?
Apache是互联网上最流行的网络web服务器。全球一半以上网站都是使用Apache作为服务器。其也是一个工业级的 Web服务器。
在本文中我主要介绍如何安装Apache HTTP服务器,你只要按照本教程的步骤操作,一定可以安装成功,需要说明的是,如果你只安装Apache,而不安装php,请在配置文件中,删除 FilesMatch 包含的内容,否则会报错找不到PHP。
如果你需要安装PHP/Mysql数据库,那么本站教程太适合你了,关于php和mysql的安装,请阅读:11、12步骤。
说明:本文教程适用于生产环境,Apache是基于FPM/FastCGI解析的PHP。
系统环境:Centos 7.4 Apache 2.4.29
1.更新系统
$ yum update && yum upgrade -y
2.安装扩展包以及依赖包
$ yum install epel-release -y $ yum install gcc gcc-c++ openssl openssl-devel libtool expat-devel zlib-devel python-devel -y
3.安装pcre
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz $ tar zxvf pcre-8.41.tar.gz $ cd pcre-8.41 $ ./configure $ make -j8 && make install
4.安装nghttp2
$ wget //github.com/nghttp2/nghttp2/releases/download/v1.27.0/nghttp2-1.27.0.tar.gz $ tar zxvf nghttp2-1.27.0.tar.gz $ cd nghttp2-1.27.0 $ ./configure $ make -j8 && make install $ echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf $ ldconfig
5.安装Apache httpd
创建用户与组并下载httpd
apr
apr-util
安装包:
$ groupadd www $ useradd -g www www $ cd /tmp $ wget //mirrors.shuosc.org/apache//httpd/httpd-2.4.29.tar.gz $ wget //mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.3.tar.gz $ wget //mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
解压相关包:
$ tar xvf httpd-2.4.29.tar.gz $ tar xvf apr-1.6.3.tar.gz $ tar xvf apr-util-1.6.1.tar.gz
将apr-1.6.3
与apr-util-1.6.1
移动到httpd-2.4.29/srclib
目录下。操作如下:
$ cd httpd-2.4.29 $ cp -R ../apr-1.6.3 srclib/apr $ cp -R ../apr-util-1.6.1 srclib/apr-util
注意:移动不准带版本号,否则编译安装时找不到库。
开始安装:
$ ./configure \ --prefix=/usr/local/apache \ --enable-mods-shared=most \ --enable-headers \ --enable-mime-magic \ --enable-proxy \ --enable-so \ --enable-rewrite \ --with-ssl \ --with-nghttp2 \ --enable-ssl \ --enable-deflate \ --with-pcre \ --with-included-apr \ --with-apr-util \ --enable-mpms-shared=all \ --with-mpm=prefork \ --enable-remoteip \ --enable-http2 \ --enable-dav \ --enable-expires \ --enable-static-support \ --enable-suexec \ --enable-modules=all \
$ make -j8 && make install
安装完成。
6.配置httpd.conf
$ cd /usr/local/apache/conf $ vim httpd.conf
除默认配置外,请取消以下注释,开启相关模块:
LoadModule ext_filter_module modules/mod_ext_filter.so LoadModule deflate_module modules/mod_deflate.so LoadModule expires_module modules/mod_expires.so LoadModule remoteip_module modules/mod_remoteip.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule proxy_scgi_module modules/mod_proxy_scgi.so LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_express_module modules/mod_proxy_express.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so LoadModule ssl_module modules/mod_ssl.so LoadModule http2_module modules/mod_http2.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so LoadModule suexec_module modules/mod_suexec.so LoadModule rewrite_module modules/mod_rewrite.so
在模块结尾部分添加如下内容:
<IfModule http2_module> ProtocolsHonorOrder On Protocols h2 http/1.1 </IfModule>
修改以下参数配置
将用户组设置为:
User www Group www
默认值:
#ServerName www.example.com:80
修改为:
ServerName 0.0.0.0:80
注意:如果基于端口创建虚拟主机,请换行加端口,然后在虚拟主机配置文件中指定端口即可。
将配置文件中的所有:
AllowOverride None
修改为:
AllowOverride All
在以下内容位置:
AddType application/x-compress .Z AddType application/x-gzip .gz .tgz
添加:
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
取消以下注释并添加apache支持python:
AddHandler cgi-script .cgi .py
取消以下注释:
Include conf/extra/httpd-mpm.conf Include conf/extra/httpd-vhosts.conf Include conf/extra/httpd-default.conf
以下内容在文件尾部添加
开启GZIP:
<IfModule mod_headers.c> AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript <FilesMatch "\.(js|css|html|htm|png|jpg|swf|pdf|shtml|xml|flv|gif|ico|jpeg)$"> RequestHeader edit "If-None-Match" "^(.*)-gzip(.*)$" "$1$2" Header edit "ETag" "^(.*)-gzip(.*)$" "$1$2" </FilesMatch> DeflateCompressionLevel 6 SetOutputFilter DEFLATE </IfModule>
设置apache安全:
ProtocolsHonorOrder On PidFile /usr/local/apache/logs/httpd.pid ServerTokens ProductOnly ServerSignature Off
引入虚拟主机配置文件:
IncludeOptional conf/vhost/*.conf
7.创建目录及虚拟主机配置文件
$ mkdir -p /usr/local/apache/conf/vhost $ mkdir -p /data/apps/web/renwolecom $ vim /usr/local/apache/conf/vhost/renwolecom.conf
插入以下内容:
<VirtualHost *:80> ServerAdmin webmaster@example.com DocumentRoot "/data/apps/web/renwolecom" ServerName www.renwole.com ServerAlias renwole.com errorDocument 404 /404.html ErrorLog "/usr/local/apache/logs/renwolecom-error_log" CustomLog "/usr/local/apache/logs/renwolecom-access_log" combined <FilesMatch \.php$> SetHandler "proxy:unix:/tmp/php-cgi.sock|fcgi://localhost" </FilesMatch> <Directory "/data/apps/web/renwolecom"> SetOutputFilter DEFLATE Options FollowSymLinks AllowOverride All Require all granted DirectoryIndex index.php index.html index.htm default.php default.html default.htm </Directory> </VirtualHost>
以上内容请根据自己的网站实际路径修改。
说明:如果没有域名,请将域名绑定部分修改为127.0.0.1
,在http.conf
中添加其他端口即可实现IP+端口访问,要记得防火墙放行端口。
注意:建议清空httpd-vhosts.conf
中的内容,或者不开启引用,否则重启httpd服务时会有警告,但不影响使用,主要原因是找到默认配置中的网站目录路径。
8.创建system系统单元启动文件
$ vim /usr/lib/systemd/system/httpd.service
添加以下内容:
[Unit] Documentation=man:systemd-sysv-generator(8) SourcePath=/usr/local/apache/bin/apachectl Description=LSB: starts Apache Web Server Before=runlevel2.target Before=runlevel3.target Before=runlevel4.target Before=runlevel5.target Before=shutdown.target After=all.target After=network-online.target Conflicts=shutdown.target [Service] Type=forking Restart=no TimeoutSec=5min IgnoreSIGPIPE=no KillMode=process GuessMainPID=no RemainAfterExit=yes ExecStart=/usr/local/apache/bin/apachectl start ExecStop=/usr/local/apache/bin/apachectl stop
9.加入开机自启/启动/停止/重启
$ systemctl enable httpd $ systemctl start httpd $ systemctl stop httpd $ systemctl restart httpd
10.设置Firewalld防火墙
$ firewall-cmd --permanent --zone=public --add-service=http $ firewall-cmd --permanent --zone=public --add-service=https $ firewall-cmd --reload
接下来你就可以使用域名或IP访问你的网站了。
11.部署PHP篇
请参阅《Centos 7源码编译安装 php7.1 生产篇》
12.部署Mysql篇
请参阅《Centos 7二进制安装配置 MariaDB(MySQL)数据库》
Apache HTTP服务器的安装与配置至此已经结束,如果在安装配置过程中出现任何报错,请查看/usr/local/apache/logs/
下的错误日志,以便你能快速解决所遇到的问题。
若还有其他指教,欢迎你的留言。