LoginSignup
1
0
はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

WordPressのadminページのスタイルが崩れて沼った

Last updated at Posted at 2024-06-16

想定読者

WordPressとNginxの接続に成功したが、cssが読み込めない。
記事作成ページに進めない。
ボリューム位置を変更してから起こった。

結論

Nginxコンテナ側のuserが、WordPressのボリュームを読む権限がなかったから。

ディレクトリ構成

 $ tree srcs 
srcs
├── docker-compose.yml
└── requirements
    ├── mariadb
    │   ├── Dockerfile
    │   ├── conf
    │   │   └── my.cnf
    │   └── tools
    │       └── docker-entrypoint.sh
    ├── nginx
    │   ├── Dockerfile
    │   └── conf
    │       ├── default.conf
    │       └── nginx.conf
    └── wordpress
        ├── Dockerfile
        ├── conf
        │   └── www.conf
        └── tools
            └── docker-entrypoint.sh

解決策

nginxのconfファイルにuserがあったので、これをWordPressのコンテナにも作成した。

Nginx側

nginx.conf
user nginx;

worker_processes auto;

pcre_jit on;

error_log /var/log/nginx/error.log warn;

include /etc/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    server_tokens off;

    include /etc/nginx/conf.d/*.conf;
}

WordPress側

nginxユーザーを作成し、wpのディレクトリに権限を与える。

FROM debian:bullseye-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
    sudo \
    curl \
    ca-certificates \
    mariadb-client \
    php7.4 \
    php7.4-fpm \
    php7.4-json \
    php7.4-phar \
    php7.4-iconv \
    php7.4-mysqli \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir -p /run/php /var/www/html /var/www/.wp-cli/cache

RUN useradd -m -s /bin/bash nginx \
    && usermod -aG sudo nginx

RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
    && chmod +x wp-cli.phar \
    && mv wp-cli.phar /usr/local/bin/wp \
    && sudo wp cli update --allow-root

COPY ./conf/www.conf /etc/php/7.4/fpm/pool.d/

COPY ./tools/docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

EXPOSE 9000

WORKDIR /var/www/html

ENTRYPOINT ["docker-entrypoint.sh"]

ついでに、--allow-rootでWarningを吐いていたので、作成したユーザーでコマンドを実行するようにした。

docker-entrypoint.sh
#!/bin/bash

chown -R nginx:nginx /run/php /var/www/html /var/www/.wp-cli # 権限を再帰的に与える

# Check if wp-config.php exists, if not create it and install WordPress
if ! wp core is-installed --allow-root --path=/var/www/html; then

    echo "Downloading WordPress core files..."
    sudo -u nginx wp core download --path=/var/www/html --locale=ja

    echo "Creating wp-config.php..."
    sudo -u nginx wp config create --path=/var/www/html --dbname=$DB_NAME --dbuser=$DB_USER --dbpass=$DB_PASSWORD --dbhost=mariadb

    echo "Installing WordPress..."
    sudo -u nginx wp core install --path=/var/www/html --url=$WP_URL --title="WP_TITLE" --admin_user=$WP_ADMIN_USER --admin_password=$WP_ADMIN_PASSWORD --admin_email=$WP_ADMIN_EMAIL

    echo "Creating Editor User..."
    sudo -u nginx wp user create $WP_EDITOR_USER $WP_EDITOR_EMAIL --path=/var/www/html --user_pass=$WP_EDITOR_PASSWORD --role=author
fi

# Start php-fpm
php-fpm7.4 -F

最後に、php-fpmを設定するファイルにあったwww-dataというユーザーを変更した。

www.conf
[www]

user = nginx # www-dataから変更
group = nginx # www-dataから変更

listen = 9000

listen.owner = nginx # www-dataから変更
listen.group = nginx # www-dataから変更
listen.mode = 0660

pm = dynamic

pm.max_children = 5
pm.start_servers = 2

pm.min_spare_servers = 1
pm.max_spare_servers = 3

最後に

この記事で助かった方がいたら、いいねをつけていただけると励みになります!
最後までお読みいただきありがとうございました!

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0