在Docker中构建WordPress(学习反向代理)

想做的事情 zuò de

我想在 Docker 上搭建 WordPress,并通过浏览器使用80号端口访问。

然而,由于主机也使用Apache,所以无法将WordPress容器绑定到80端口。

因此,我们将WordPress容器绑定到8080端口。
然后,我们将创建一个用于WordPress的子域名,并将访问定向到主机端的Apache,将其反向代理到localhost的8080端口。

经过如下的过程(这只是我的备忘录,所以只有想看的人才会看),
具体的经过如下:想要在服务器上安装WordPress
当我在网上搜索使用Docker进行搭建时,很快找到了方法,但是所有的网站示例都是使用8080端口之类的。
我希望在80端口上运行WordPress,但是主机上已经使用了Apache,所以不能使用80端口!
因此,我尝试使用虚拟主机。
为了持久化WordPress容器内的HTML,我进行了卷挂载,并将目录/var/lib/docker/volumes/wordpress_v-wordpress-html/_data指定为虚拟主机。
但是没有成功
WordPress容器内的Apache可能做了一些设置,所以绕过这个直接访问是不可行的
那么,可以将主机上的Apache作为代理,将其发送到本地的8080端口就可以了

大概就是这样。

之前的条件

操作系统:CentOS8
容器引擎:Docker 20.10.7
容器编排工具:docker-compose 1.27.4
Web服务器:Apache 2.4.37

我会在已经进去的前提下进行。

WordPress 是一种开源的内容管理系统,广泛运用于构建和管理网站。

首先,在Docker容器中构建WordPress。

在Docker-Compose的文件中描述了WordPress、MySQL和phpMyAdmin。

version: "3"
services:
  db:
    image: mysql:5.7
    volumes:
      - v-wordpress-db:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS
      MYSQL_DATABASE: wordpress_db
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: wp_user_pass

  wordpress:
    image: wordpress:latest
    volumes:
      - v-wordpress-html:/var/www/html
      - v-wordpress-php:/usr/local/etc/php/conf.d/php.ini
    restart: always
    depends_on:
      - db
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress_db
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: wp_user_pass

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    restart: always
    depends_on:
      - db
    ports:
      - 8888:80
volumes:
  v-wordpress-db:
  v-wordpress-html:
  v-wordpress-php:

使用以下命令启动容器。

docker-compose up

如果您通过浏览器访问 http://mydomain:8080 ,应该可以看到 WordPress 页面!如果不能访问,可能是容器没有正确启动或者防火墙等限制了对8080端口的访问。

Apache(反向代理)

接下来,我们将进行Apache的配置。

目前,我认为对于mydomain的访问情况如下:
– http://mydomain -> 原始网站
– http://mydomain:8080 -> WordPress

使用子域名来实现这个:
– http://original.mydomain -> 原始网站
– http://wp.mydomain -> WordPress

移动到包含Apache配置文件的目录中。
我认为通常是在/etc/httpd/conf.d目录。

在那里创建两个文件。

我的域名(原始网站)

<VirtualHost *:80>
    ServerName original.mydomain
    DocumentRoot "/var/www/html/original.mydomain"

    <Directory "/var/www/html/original.mydomain">
        Options FollowSymLinks
        AllowOverride All
        Order deny,allow
        Allow from all
    </Directory>

    ErrorLog logs/original.mydomain-error_log
    CustomLog logs/original.mydomain-access_log combined
</VirtualHost>

如果/var/www/html/中已经有原始网站的话,那就将其移动到/var/www/html/original.mydomain/。

请尝试访问我的域名上的原始网站。
如果能够显示出原始网站就可以了。

我的域名是wp.mydomain(WordPress)。

<VirtualHost *:80>
    ServerName wp.mydomain
    ProxyPass / http://localhost:8080/
</VirtualHost>

使用ProxyPass指令配置代理。您可能会常常看到与ProxyPass一起出现的ProxyPassReverse指令,但是根据情况来看,只有在代理目标需要发出重定向时才需要使用它,所以在这种情况下是不必要的。

这样设置就完成了。

请尝试访问http://wp.mydomain。
若显示WordPress,则表示成功!

最后

学习Apache虚拟主机和代理非常有益。如果还有其他更好的方法,请告诉我。

广告
将在 10 秒后关闭
bannerAds