Nginx-proxy on DockerでSSL対応済みのWordPress立てた話

最後の投稿からいつのまにか3か月もたってたraspi0124です。え?遅い?こっちだって新しい学校に編入するわけだからかなり精神的に大変だったんですよ!という話は続けるといつまでたっても愚痴とかで終わらないのでここらへんにします。

さて本題です!実は最近環境弄ってたらvestacpの乗ったコンテナごとぶっ壊してサイトが1週間ほど落ちたままになってたのですがさすがにあれかなーと思って復旧したそのままの内容をとりあえず並べていきます。

まず最初に言っておきますが

Nginx-proxy最高です

簡単に説明するとこれ、docker-compose.ymlのほうでちょっとVirtual hostとか指定するだけで勝手にプロキシ張ってくれるんです!いやー、自分のいままでの苦労は何だったんだろうと思いますねー。さらに別添えですがdocker-letsencrypt-nginx-proxy-companionという長ったらしい名前のDockerイメージを導入するとちょっと3行ほど追加するだけでLets Encryptの処理がなされ、renewまで勝手にしてくれるというおまけつき!これでかなり負担が軽減されますね!

やりかた

nginx-proxyとdocker-letsencrypt-nginx-proxy-companion

まず定番のdocker-composeファイルを用意します。以下の通りで基本的には大丈夫です。

とまあこんな感じでパパっと作ったら

sudo docker network create --driver bridge ssl-proxy

って感じのコマンドでDocker内ネットワークを作成して

sudo docker-compose up -d

で立ち上げてください。これでとりあえずnginx-proxyの設定は終わりです。

WordPressの導入

まあこっちもありがたいことに公式でイメージがあるので必要なのはdocker-compose.ymlだけです。

注意点としてはexample.comは結構記載したので面倒な方は一斉置換でも使って置き換えてください。あとこのymlでは/var/docker/example.com/www以下にサイトのファイルを、/var/docker/example.com/mysql以下にmysqlのファイルが置かれますが気に入らない方は変えてください。あとはもちろんWORDPRESS_DB_PASSWORDと MYSQL_ROOT_PASSWORDは適切なパスワードに変えてください。

これであとはこっちも

sudo docker-compose up -d

で起動するだけです!お疲れさまでした!設定後にドメインにアクセスしてみたら正しく設定されている場合WordPressのインストール画面(言語選択のやつ)が表示されているはずです!お疲れさまでした!といいたいところですがまだありました。。

追記 – 記事が表示されない場合

なんとこのままだとパーマリンク設定がおかしくてうまく記事を読み込んでくれません。というわけでそっちも追記しておきます。

まずsudo docker ps -a してコンテナ一覧を見てみてください。そしたらたぶんImageがWordPressなraspidiary_wordpress_1 (raspi-diaryは自サイトのドメイン名)な感じな名前のコンテナがあると思います。というわけでまずこのコンテナに入っちゃいましょう!といってもいつも使っているattachではなくここではexecを使わないとコンソールに入れないのでそちらを使って入ります

sudo docker exec -it <WordPressコンテナ名> bash

という感じに打ってもらえば入れると思います。

次にコンテナ内で cd /etc/apache2/sites-enabled/ して、そのディレクトリ内で sudo nano 000-default.conf します。なんかいろいろとあると思いますが<Virtualhost>内の一番下に以下の文をペタっと張ってください。

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
#   AllowOverride None
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

次に cd /var/www/html してwebディレクトリ内に入ります。入ったら sudo nano .htaccess でたぶん作られていないであろう.htaccessを作成します。以下の通りぺーすとしていただければ大丈夫です。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ./index.php [L]
</IfModule>
# END WordPress

というわけでここまでやったら sudo service apache2 reloadして設定ファイルをロードします。

ここまでやったら記事がきちんと表示されるはずです!お疲れさまでした!

(なんで期末1週間前の深夜にこれ書いてるんだろ。。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください