我使用这个页面和他们的线程多年来解决问题,但我知道我必须提出一个问题。
我试图在我的Vserver机器上安装WordPress Docker。它很有效,但唯一的HTTP。要安装Wordpress Docker,我必须使用以下Link中的教程。
另外,我总是在--restart
命令中添加docker run -e ...
。
然后我安装了nginx 1.12.xxx以获得反向代理。但SSL没有用。之后,我尝试从nginx存储库安装更新的版本1.15.xx,没有更好的结果。
我用Let's Encrypt和Certbot安装了证书。
在WordPress运行之后,可以访问wp-admin.php。
但我没有SSL / HTTPS工作。我已经尝试了很多代码,而我工作场所的同事甚至无法得到解决方案。
我希望你能得到一个:)
我尝试配置wp-config.php以使用"$_SERVER['HTTPS'] = 'on';"
等命令启用https,而不会产生相当破坏性的影响。
我也尝试启用"X-Forwared-Proto $scheme;"
和"FastCGI"
,但效果不佳。我尝试了很多变化。
我尝试了一些来自Wordpress的SSL插件,但没有一个能正常工作。
我希望它有点错,你可以轻松地帮助我。
首先在Ubuntu上安装Docker
您可以使用像Bluemix这样的docker提供程序,也可以从softlayer或任何其他提供程序获得虚拟机。在我的情况下,我选择了一个虚拟服务器,所以我不得不在Ubuntu LTS上安装docker。这真的很容易。基本上,您将新的存储库条目添加到apt源并安装最新的稳定docker包。 get.docker.com上还有一个脚本可用,但是我觉得从网络访问权限直接执行shell脚本感觉不舒服。但这取决于你。
wget -qO- https://get.docker.com/ | sh
与例如在mac上的docker安装相比,linux上的Docker不包含docker-compose。安装docker compose非常简单。 docker compose脚本可以从github下载:https://github.com/docker/compose/releases。
泊坞窗,撰写
Docker-compose负责包含多个docker容器的docker设置,包括网络和基本监控。以下脚本使用nginx,mysql和wordpress启动并构建所有docker容器。它还可以导出主机文件系统上的卷,以便在docker容器重建和监视器上轻松备份和持久化,如果docker容器已启动并正在运行。
version: '3'
services:
db:
image: mysql:latest
volumes:
- ./db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: easytoguess
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: eveneasier
wordpress:
depends_on:
- db
image: wordpress:latest
restart: always
volumes:
- ./wordpress:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: eveneasier
WORDPRESS_DB_NAME: wordpress
nginx:
depends_on:
- wordpress
restart: always
build:
context: .
dockerfile: Dockerfile-nginx
ports:
- "80:80"
Mysql是我们为数据库提供环境变量的第一个容器,如用户名,密码和数据库名称。第7行注意将数据库文件保存在docker容器之外,这样您就可以删除docker容器,启动一个新容器并仍然启动并运行相同的数据库。将此指向您想要的位置。在这种情况下,在“db”下的同一目录下。还要确保你想出了不错的密码。
第二个容器是wordpress。与第21行的主机文件夹相同。此外,请确保您具有与mysql容器配置中相同的用户,密码和数据库名称。
最后一个是nginx作为面向互联网的容器。您在此处公开端口80。虽然您只是在另外两个中指定了一个容器,但在此配置Dockerfile和构建上下文以自定义有关网络设置的nginx。如果您只想托管静态文件,可以通过卷安装添加它,但在我们的例子中,我们需要配置nginx本身,因此我们需要一个自定义的Dockerfile,如下所述。
用于nginx设置的Dockerfile
FROM nginx:latest
COPY default.conf /etc/nginx/conf.d/default.conf
VOLUME /var/log/nginx/log/
EXPOSE 80
这个dockerfile继承了最新的nginx中的所有内容,并将default.conf文件复制到其中。有关如何设置配置文件,请参阅下一章。
Nginx配置文件
server {
listen 80;
listen [::]:80;
server_name www.23-5.eu ansi.23-5.eu;
access_log /var/log/nginx/log/unsecure.access.log main;
location / {
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;
proxy_pass http://wordpress;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
第2行和第3行配置我们想要监听的端口。我们需要一个用于ip4,一个用于ip6。重要的是第8行到第15行中的代理配置。第11行将所有调用重定向到服务器wordpress的“/”(因此没有URL中的路径)。当我们使用docker-compose时,docker会注意通过内部DNS服务器提供地址。 13-15行重写了http标题,以便将所有内容映射到不同的URL,否则我们最终会在docker中指向http://wordpress的自动生成链接
启动系统
如果所有内容都已配置且docker-compose.yml,default.conf,Dockerfile-nginx以及文件夹db和wordpress位于同一文件夹中,我们可以使用以下命令启动此文件夹中的所有内容:
docker-compose up --build -d
参数“-d”在后台(守护程序)中启动设置。对于第一次运行,我建议使用它而不使用“-d”参数来查看所有调试消息。