自分の関心事のメモ書きのためにWordPressをPodmanを利用して構築。
DockerHubにあるwordpressとmysqlを使用。
なお、WordPressはMySQL5.8系はサポートしてないので、
最新版ではなく、5.7系の最新版を使用する。
Contents
Dockerイメージのダウンロード
かなり容量あるので、事前にイメージをダウンロードしておく。
(自分のネット環境ではダウンロード遅くてタイムアウトエラーしてしまった)
|
1 2 |
$ podman pull docker.io/wordpress:latest $ podman pull docker.io/mysql:5.7.29 |
docker-compose.yml作成
podman-composeを使うためにymlファイルを作成。
$ mkdir -p ~/docker/wordpress
$ cd ~/docker/wordpress
$ vim docker-compose.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
version: "3.7" services: db: image: mysql:5.7.29 ports: - "3306:3306" restart: always environment: - MYSQL_ROOT_PASSWORD=[MySQLのroot用パスワード] - MYSQL_DATABASE=[WordPress用のデータベース名] - MYSQL_USER=[WordPress用のMySQLユーザ名] - MYSQL_PASSWORD=[WordPress用のMySQLユーザ用パスワード] volumes: - ./db_data:/var/lib/mysql wordpress: image: wordpress:latest ports: - "8000:80" restart: always environment: - WORDPRESS_DB_HOST=db:3306 - WORDPRESS_DB_USER=[WordPress用のMySQLユーザ名] - WORDPRESS_DB_PASSWORD=[WordPress用のMySQLユーザ用パスワード] - WORDPRESS_DB_NAME=[WordPress用のデータベース名] volumes: - ./wp_data:/var/www/html depends_on: - db |
保存用のローカルディレクトリを作成
|
1 2 3 4 |
$ mkdir wp_data $ mkdir db_data $ chmod 777 wp_data $ chmod 777 db_data |
Nginxリバースプロキシ設定
フロントエンドにあるパブリックに公開しているNginxを使って、
ローカルに立てたWordPressをリバースプロキシする。
サブドメイン:wp.startseeker.podzoneに対して、
localhost:8000をリバースプロキシする。
SELinux設定
リバースプロキシを許可するようSELinuxを設定。
現状、httpd_can_network_connectはOffになってる。
|
1 2 |
# getsebool -a | grep httpd_can_network_connect httpd_can_network_connect --> off |
これを有効化
|
1 2 3 |
# setsebool httpd_can_network_connect on -P # getsebool -a | grep httpd_can_network_connect httpd_can_network_connect --> on |
Nginxリバーシプロキシ用設定ファイル
/etc/nginx/conf.d配下にwordpress.confファイルを新規作成。
このとき、client_max_body_sizeを多めに設定しておかないと、
画像のアップロードができないので注意が必要。
# vim /etc/nginx/conf.d/wordpress.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
upstream wordpress { server localhost:8000; } server { listen 80; server_name wp.starseeker.podzone.org; location ^~ /.well-known/acme-challenge/ { root /usr/share/nginx/html; default_type "text/plain"; } location / { return 301 https://$host$request_uri; } } server { listen 443; server_name wp.starseeker.podzone.org; ssl on; ssl_certificate /etc/letsencrypt/live/starseeker.podzone.org/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/starseeker.podzone.org/privkey.pem; access_log /var/log/nginx/wordpress_access.log; client_max_body_size 20M; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $http_host; #proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://wordpress/; #proxy_redirect http:// https://; proxy_redirect off; } } |
構文間違いがないか確認。
# nginx -t
なにも表示されなければ、Nginxを再起動
# systemctl restart nginx
podman-compose起動
以下を実行
|
1 2 |
$ cd ~/docker/wordpress $ podman-compose up -d |
WordPress側も、Nginx側も設定した後に管理画面にアクセスしてインストール。
https://wp.starseeker.podzone.org/wp-admin/
システム再起動後の立ち上げ
podman-composeの自動起動はうまく動かないので、手動で立ち上げが必要。
podman-compose psを実行すると既存コンテナが表示される。
下は再立ち上げ後の状態なのでSTATUSがUpになっているが、
システム再起動後はExitedになってる。
|
1 2 3 4 5 6 7 8 |
$ cd docker/wordpress/ $ podman-compose ps using podman version: podman version 1.6.4 podman ps -a --filter label=io.podman.compose.project=wordpress CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2e5105ecaf1 docker.io/library/wordpress:latest apache2-foregroun... 2 months ago Up 10 hours ago 0.0.0.0:8000->80/tcp, 0.0.0.0:3306->3306/tcp wordpress_wordpress_1 cd0fc947e383 docker.io/library/mysql:5.7.29 mysqld 2 months ago Up 10 hours ago 0.0.0.0:8000->80/tcp, 0.0.0.0:3306->3306/tcp wordpress_db_1 0 |
確認後、以下のように立ち上げを実施。
|
1 2 |
$ podman-compose start db $ podman-compose start wordpress |
2022.7.24追記
wordpressがPHP3.4より前のバージョンを推奨しなくなったのでPHPをアップデートする。
のだが、コンテナに内包されているのでシステム側のをアップデートしてもしょうがない。
と言うか、システム側にはPHPなんて入れてない。
という訳で、コンテナ自体をアップデートする。
最新のwordpressコンテナをダウンロード
|
1 2 3 4 5 |
$ podman pull wordpress:latest $ podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/wordpress latest 826140609178 10 days ago 622 MB docker.io/library/mysql 5.7.29 5d9483f9a7b2 2 years ago 461 MB |
wordpress:latestをpullしてくる。
適用
コンテナをdownしてからup -dで起動する。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ cd docker/wordpress/ $ podman-compose down $ podman-compose ps using podman version: podman version 3.3.1 podman ps -a --filter label=io.podman.compose.project=wordpress CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0 $ podman-compose up -d $ podman-compose ps using podman version: podman version 3.3.1 podman ps -a --filter label=io.podman.compose.project=wordpress CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4b9a446e99b8 docker.io/library/mysql:5.7.29 mysqld 7 seconds ago Up 7 seconds ago 0.0.0.0:8000->80/tcp, 0.0.0.0:3306->3306/tcp wordpress_db_1 329787a671d9 docker.io/library/wordpress:latest apache2-foregroun... 5 seconds ago Up 6 seconds ago 0.0.0.0:8000->80/tcp, 0.0.0.0:3306->3306/tcp wordpress_wordpress_1 0 |
downした後に、psで何も残っていないことを確認してから次に進むこと。
また、up -dで起動した際にエラーが発生してないことを確認すること。