一、 服务器资源
服务名称:Linux服务器
IP:服务器公网ip
操作系统:CentOS 7.9 x64
二、 卸载系统自带的httpd
Centos可能自带了httpd,但是版本可能会较低,执行下面的命令检测是否已经安装了httpd
# rpm -qa | grep httpd
复制代码
如果检测已经安装了二进制的httpd,则使用下面的命令卸载,防止现在的二进制httpd对你之后安装的源码httpd干扰
可能已经安装,但是版本相当于官网较低,为防止干扰,所以先卸载自带httpd
# yum -y remove httpd
#rpm -e --nodeps xxxx(原有的httpd)
复制代码
三、 下载Apache的安装包以及APR安装包
官网下载Apache的源码包,httpd.apache.org
这里下载的版本是:httpd-2.4.41.tar.gz
到apr.apache.org/下载APR源码包和AP…
这里下载的版本分别是:apr-1.6.5.tar.gz、apr-util-1.6.1.tar.gz
把httpd-2.4.41.tar.gz、apr-1.6.5.tar.gz、apr-util-1.6.1.tar.gz上传到/opt/tools目录下
四、 解压apr以及apr-util源码包
# cd /opt/tools
# tar -zxvf httpd-2.4.41.tar.gz
# tar -zxvf apr-1.6.5.tar.gz
# tar -zxvf apr-util-1.6.1.tar.gz
复制代码
五、安装相关组件
# yum -y install gcc gcc-c++ make
# yum -y install expat-devel
# yum -y install pcre-devel
# yum -y install mod_ssl openssl-devel
# yum -y install libtool-ltdl-devel
复制代码
六、 安装apr
# cd /opt/tools/apr-1.6.5
# ./configure --prefix=/usr/local/apr
# make
# make install
复制代码
七、 安装apr-util
# cd /opt/tools/apr-util-1.6.1
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install
复制代码
八、配置防火墙
启动80端口
# vi /etc/sysconfig/iptables
复制代码
添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
复制代码
重启防火墙
# service iptables restart
复制代码
九、 安装httpd
# cd /opt/tools/httpd-2.4.41
# ./configure --prefix=/opt/app/apache24 --enable-so --enable-ssl --enable-rewrite --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
复制代码
#./configure --prefix=/opt/app/apache24 --enable-so --enable-ssl --enable-rewrite --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl=/usr/local/ssl/
复制代码
# make
# make install
复制代码
这是我选择了一些配置的功能,你可以根据自己的需要改变,如果只是简单的安装httpd,直接./configure --prefix=/usr/local/apache
安装完成后,可通过如下如下命令查询你http的版本
# cd /opt/app/apache24
# ./bin/apachectl -v
复制代码
为了方便以后使用apache可以将执行路径添加的PATH中,这样下次执行命令时,就不需要使用路径
解压文件,结果出现注意,2.4.46版本后,这个配置不生效了,默认会在/etc/httpd/ 下面创建一个apachectl,直接使用apachectl start启动的话,会以/etc/httpd下面的配置文件启动。
所以这里还是得用上面的方式启动:cd /opt/app/apache24,然后 ./bin/apachectl -v
# vi /etc/profile
复制代码
#apache\
export APACHE_HOME=/opt/app/apache24\
export PATH=$PATH:$APACHE_HOME/bin
复制代码
# source /etc/profile
复制代码
以后就可以直接输入以下命令对apache进行操作:
启动:
# apachectl start
复制代码
停止:
# apachectl stop
复制代码
重启:
# apachectl restart
复制代码
如果在启动服务时发生如下错误
需要修改httpd的配置文件 /opt/app/apache24/conf/httpd.conf
将ServerName www.example.com:80 这一行的注释去掉,修改完成之后重启apache服务
# vi /opt/app/apache24/conf/httpd.conf
复制代码
把#ServerName www.example.com:80前面的#号去掉,并把www.example.com修改Linux服务器的IP地址,保存退出
重启apache
# apachectl restart
复制代码
十、 配置 反 向代理
10.1、放开虚拟主机(反向代理)模块
# vi /opt/app/apache24/conf/httpd.conf
复制代码
在httpd.conf中把下四行配置放开(前面的#号去掉)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# 开启websocket
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
Include conf/extra/httpd-vhosts.conf
复制代码
10.2、配置虚拟主机(反向代理)
在conf/extra/httpd-vhosts.conf中配置虚拟主机(反向代理)
# vi /opt/app/apache24/conf/extra/httpd-vhosts.conf
复制代码
在文件末尾添加以下配置:
<VirtualHost *:80>
ServerName ip1
ServerAlias ip1
ErrorLog "logs/error_log"
CustomLog "logs/access_log" common
#test
ProxyPass /test/websocket ws://ip2:8080/test/websocket
ProxyPass /dzjk/ http://ip2:8080/test/
ProxyPassReverse /dzjk/ http://ip2:8080/test/
</VirtualHost>
复制代码
注意:以上内容的所有ip1替换为http服务器的IP地址,以上内容的所有ip2替换为需要代理Linux服务器的IP地址
再重启apache
# apachectl restart
复制代码
访问http://ip1:80/test/访问是否正常
注意:以上的ip1替换为http服务器的IP地址
十一、 配置 负载均衡
11.1、放开虚拟主机(负载均衡)模块
# vi /opt/app/apache24/conf/httpd.conf
复制代码
在httpd.conf中把下四行配置放开(前面的#号去掉)
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
Include conf/extra/httpd-vhosts.conf
复制代码
11.2、配置虚拟主机(负载均衡)
在conf/extra/httpd-vhosts.conf中配置虚拟主机(反向代理)
# vi /opt/app/apache24/conf/extra/httpd-vhosts.conf
复制代码
在文件末尾添加以下配置:
<VirtualHost *:80>
ServerName ip1
ServerAlias ip1
ErrorLog "logs/error_log"
CustomLog "logs/access_log" common
#test-cluster
<Proxy balancer://test-cluster>
BalancerMember http://ip2:8081/test loadfactor=7
BalancerMember http://ip2:8082/test loadfactor=3
</Proxy>
ProxyPass /test balancer://test-cluster/
ProxyPassReverse /test balancer://test-cluster/
</VirtualHost>
复制代码
注意:以上内容的所有ip1替换为http服务器的IP地址,以上内容的所有ip2替换为需要代理的Linux服务器的IP地址
十二、配置 SSL
12.1、上传Apache相关SSL证书
# mkdir /etc/httpd/ssl
# /etc/httpd/ssl/1_root_bundle.crt
# /etc/httpd/ssl/2_域名xxx.crt
# /etc/httpd/ssl/3_域名xxx.key
复制代码
12.2、放开虚拟主机(SSL)模块
复制代码
在httpd.conf中把下三行配置放开(前面的#号去掉)
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf
复制代码
12.3、配置虚拟主机(SSL)
在conf/extra/httpd-ssl.conf中配置虚拟主机(SSL)
# vi /opt/app/apache24/conf/extra/httpd-ssl.conf
复制代码
在VirtualHost default:443最后添加以下配置:
<VirtualHost _default_:443>
#域名
ServerName 域名xxx
#启用SSL功能
SSLEngine on
#证书文件的路径
SSLCertificateFile "/etc/httpd/ssl/2_域名xxx.crt"
#私钥文件的路径
SSLCertificateKeyFile "/etc/httpd/ssl/3_域名xxx.key"
#证书链文件的路径
SSLCertificateChainFile "/etc/httpd/ssl/1_root_bundle.crt"
#不校验SSL证书有效期
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
#开启反向代理
ProxyRequests Off
ProxyPreserveHost On
#最终去到使用到conf/extra/httpd-vhosts.conf的反向代理
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
复制代码
十三、 配置 超时Timeout
13.1、引入httpd-default.conf
# vi /opt/app/apache24/conf/httpd.conf
复制代码
在httpd.conf中把下一行配置放开(前面的#号去掉)
Include conf/extra/httpd-default.conf
复制代码
13.1、配置T imeout
# vi /opt/app/apache24/conf/extra/httpd-default.conf
复制代码
在httpd-default.conf修改以下配置:
Timeout 600 #(默认是60s,改成600s)
#KeepAlive On #(默认是On,注释掉)
复制代码
十四、查看日志
# tail -f /opt/app/apache24/logs/access_log
复制代码
十五、同步服务器时间
# crontab -e
复制代码
1 * * * * /usr/sbin/ntpdate -b 10.192.3.227;/sbin/hwclock -w
复制代码
好了,以上就是linux部署apache,并配置ssl的全过程了,大家有不懂的可以在下方留言
最后
如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star:http://github.crmeb.net/u/defu不胜感激 !
免费获取源码地址:http://ym.baisouvip.cn/html/wzym/36.html
PHP学习手册:https://doc.crmeb.com
技术交流论坛:https://q.crmeb.com