甲.前言
最近做 NAS、Blog、媒体服务器多个web服务。用到了nginx和apache 。记录一下。默认Docker已经安装完成,正常运行起来了。
乙.Nginx
子.下载镜像:
1 | docker pull nginx |
丑.创建nginx挂载时使用的目录
我使用的是根目录下创建的webData
1 | #www: html文件目录 |
寅.创建一个临时的Nginx
用来复制nginx的配置文件到刚创建的目录
1 | #创建一个临时nginx |
卯.创建nginx。
1 | docker run --restart=always -dit -p 80:80 -p 443:443 --name nginxSer -v /webData/nginx/www:/usr/share/nginx/html -v /webData/nginx/logs/:/var/log/nginx -v /webData/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -v /webData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /webData/nginx/ssl:/etc/nginx/ssl nginx |
辰.修改配置文件
因为用nginx的只有blog,只改了default.conf。增加了https配置
1 | #default.conf 配置如下。#注解的地方都被我删了。 |
下面内容是 ‘/webData/nginx/www/httpRefresh/xxxx’ 中index.html的文件,作用是 当使用 http协议访问80端口时候强制使用https
1 | <html> |
巳.其他必要设置
1 | #最后记得打开防火墙端口,不然访问不到的,我用了两个端口 80和443 |
丙.Apache
不知道为什么,网上有关用Docker建立apache的资料少的可怜,关于配置https的更少,很多都是我自己摸索着弄的。
PS:Apache也叫常被叫做httpd。下面表述比较乱别搞晕
子.下载镜像:
1 | docker pull httpd |
丑.创建Apache挂载时使用的目录
其实套路跟上面nginx一样,我在根目录下创建webData
1 | #www: html文件目录 |
寅.创建一个临时的Apache
用来复制apache的配置文件到刚创建的目录
1 | #创建一个临时nginx |
卯.创建Apache。
1 | cd /webData/apache/ |
辰.修改配置文件
由于只复制出来一个文件。所以….额,这个配置文件中条目特别多,我就把我没用到的注解删除了。当然也留下来一部分个人认为重要的。根据上面的nginx套路,其实可以多复制出来几个。以下内容为httpd.conf文件内容。
1 | ServerRoot "/usr/local/apache2" |
巳.其他必要设置
1 | #最后记得打开防火墙端口,不然访问不到的,我这里用了一个(我用的是843端口,-p 映射出来的。上面遇到的443端口只在docker内有效) |
丙.其他可能会用到的命令
以下命令只是参考或排错使用。
1 | #首先文件与文件夹的权限(包括https证书和web文件之类) |
SElinux问题处理,这个有点乱单独写。
更换web目录或者更新文件后 访问网站失败。权限用户组都设置过了,通过 ls -al 也没发现问题。也重启过web服务了。
这时候用setenforce 0 关掉SElinux 就正常了。那么恭喜你,SElinux起作用了。千万不要想一关SElinux了事。
使用命令 ls -Z 可以查看SElinux属性。如下图(用的 ls -alZ)红框的地方就是SElinux的属性。
问题解决方法就是 查看原先的目录,然后将selinux改成一样的就行了
1 | #命令chcon -u -r -t 是三个属性 -R是子目录子文件夹全部都改 |
丁.结束
本文章对于Ctrl+c,Ctrl+v党极度不友好。请勿无脑复制粘贴。所有命令和配置请根据实际出发,参考本文导致出现的任何问题本人不负责的呦。
参考的内容地址如下:
https://blog.csdn.net/wugenqiang/article/details/86531278
https://blog.csdn.net/u012965203/article/details/95867342
https://www.cnblogs.com/chenwz/p/9401705.html
https://blog.csdn.net/weixin_33910434/article/details/92129828