运行apache原因
嗯,这个,就是想运行,有啥原因?
实际上,在搭建服务器集群时候,静态服务器可以选择CDN加速,但由于有多余的服务器,那就用上得了。流量入口使用Nginx,经由Nginx代理到apache服务器。这里就有个很有棒的想法,使用一个没限制的服务器,部署Nginx,代理到一个有限制的服务器,是不是很完美。
选择apache的docker镜像
有一个很棒的命令,经常完docker的都知道,来搜索docker镜像
docker search apache
结果如下
NAME DESCRIPTION STARS OFFICIAL
httpd The Apache HTTP Server Project 4671 [OK]
solr Apache Solr is the popular, blazing-fast, op… 982 [OK]
tomcat Apache Tomcat is an open source implementati… 3646 [OK]
maven Apache Maven is a software project managemen… 1553 [OK]
flink Apache Flink® is a powerful open-source dist… 416 [OK]
cassandra Apache Cassandra is an open-source distribut… 1523 [OK]
groovy Apache Groovy is a multi-faceted language fo… 148 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 114 [OK]
storm Apache Storm is a free and open source distr… 195 [OK]
zookeeper Apache ZooKeeper is an open-source server wh… 1416 [OK]
OFFICIAL表示是否官方镜像,STARS表示星星数啦,当然选官方镜像还有星星多的。
NAME为httpd的应该就是咱们想要的,看DESCRIPTION写着“The Apache HTTP Server Project”。这个是教你怎么安装apache的官方镜像,不看也行,相信我没错的。
https://www.docker.com/blog/how-to-use-the-apache-httpd-docker-official-image/
安装apache镜像
习惯linux命令的人都知道pull和push,git也有pull和push,咱们的docker也有pull和push,推拉推拉。
docker pull httpd
运行容器
简单的运行方式,只启动http
docker run -d --name apache \
-p 80:80 \
-v /opt/www/html:/usr/local/apache2/htdocs \
httpd:latest
嗯,运行参数不在讨论范围,喜欢加什么参数自己参考docker的帮助,本文只保证apache能跑起来。为方便网站的内容部署,就使用-v挂载了本地目录/opt/www/html
,当然了/usr/local/apache2/htdocs
是apache的网站根目录。
接着就可以愉快地访问网站啦!如果没有其他需求,看到这里就足够了
划重点!!启用https!!
没有https的服务器就是在裸奔!怎么能少得了https呢,至少能绕开服务提供商的监视。
运行容器
docker run -d --name apache \
-p 80:80 \
-p 443:443 \
-v /opt/www/html:/usr/local/apache2/htdocs \
httpd:latest
打开多了一个443端口,用于响应https请求
修改配置
先拷贝容器的配置文件出来
docker cp apache:/usr/local/apache2/conf/httpd.conf httpd.conf
接着一通搜索,不要问我vim的搜索命令是不是/+搜索内容+回车,把下面的配置打开,也就是把前面的注释#删掉
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
修改完要放回去哦,拷贝修改后的配置文件
docker cp httpd.conf apache:/usr/local/apache2/conf/httpd.conf
添加证书
证书就随便找个免费的SSL证书去生成下,或者自己签名,相关教程就不写了,看哪天勤快有兴趣再写。准备2个文件:server.crt
、server.key
,一定要这个名字,想要折腾那就自己想办法改名字,一改名字又要改httpd-ssl.conf
的配置,所以有精力的朋友自己去瞎折腾了。
把准备好的证书拷贝到容器里面:
docker cp server.crt apache:/usr/local/apache2/conf/server.crt
docker cp server.key apache:/usr/local/apache2/conf/server.key
重启apache
docker restart apache
好了,到这里就可以愉快的使用https了