【第4回】Docker上のWordpressの日本語化 & ダッシュボードからの更新
このシリーズの概略については、こちら↓をお読みください。
yukari-n-u.hatenablog.com
これは私個人の備忘録なので、内容については保証しかねます。
ただ、間違っている箇所があれば教えいただけると嬉しいです。
症状
- Docker上でWordpressを起動したら、他の解説サイトのように言語選択画面にならず、いきなりアカウント作成画面に進まされた。
- 管理画面上から言語を変更しようとしても、英語以外存在しない
- Wordpressのコンテナに入ってwp-config.phpを無理やり変更してみたが、Wordpress管理画面からWordpressの更新が失敗する
※以降の作業はバックアップを取って行うことを強くお勧めします。私は取らなかったけど。Dockerだし。
作業
1. wordpressコンテナのbashに入る
まずは、docker psコマンドでwordpressコンテナのIDを調べます。
$ docker ps
で出てきたコンテナのうち、imageがwordpress、名前がそれっぽいものを見つけ、IDをコピーします(12桁?)。その後、
$ docker exec -it <コンテナのID> bash
とすることでそのコンテナのbashを起動できます。
2. wp-config.phpの編集
コンテナのbashではvi・vimなどが使えません。なので、echoコマンドの出力をリダイレクトし、ファイルの末尾に追加書き込みします。
# echo "define('WPLANG', 'ja');" >> wp-config.php
本当はsed?とか使った方がいいと思います。使えるかどうかは試してないけど。
これでWordpressの管理画面上で日本語に設定を変更するという選択肢が出現しました。しかしこの変更を行いWordpress自体の更新をしようとしたところ、エラーが発生しました。これはどうやらコンテナ内のパーミッションが関係しているようです。
3. htmlディレクトリのオーナーの変更
↓を参考にしました。
Docker版WordPressのアップデートでFTP画面になってしまうとき
オーナーの確認等はこの記事を見ながらやってもらうとして、最終的に実行すべきコマンドは以下のものです。htmlディレクトリにいる場合の話。
# chown -R www-data.www-data .
最後の.はゴミではなく、二番目の引数として与えたカレントディレクトリです。多分ね。
この変更を行うことで、管理画面上から日本語版Wordpressのインストールが可能になりした。多分最新版への更新も可能になります。
【第3回】DockerでVPS上に独自ドメイン・SSLなWordpressサイトを立ち上げる
このシリーズの概略については、こちら↓をお読みください。
yukari-n-u.hatenablog.com
これは私個人の備忘録なので、内容については保証しかねます。
ただ、間違っている箇所があれば教えいただけると嬉しいです。
はじめに
Dockerの導入に関しては、前回の記事をお読みください。
yukari-n-u.hatenablog.com
今回は、Docker上にnginx(Let's Encrypt)+MySQL+Wordpressの環境を作りました。
正直これを本番環境にするのはいろいろどうなの?とは思いますが、一応これで動いたからヨシ!
ドメインの準備
取得したドメインのゾーン編集をし、VPSのIPアドレスと紐付けしておきます。これはドメインの管理者によっていろいろだと思うので割愛。まだドメインがなければ、localhostのIPアドレスを直書きすれば動くと思います。
フォルダ、ファイルの準備
まず適当なところにデータの置き場所となるフォルダを作成します。
私は「nu_style」という名前で、一般ユーザのホームディレクトリ直下に作りました。
$ mkdir nu_style $ cd nu_style
そのフォルダ内に、以下のような「docker-compose.yml」というファイルを作成します。<>内の内容は適当に書き換えてください。また、サービス名がwpとかtest_wpとかになってますが、これも対応さえ変えなければ自由に書き換えて大丈夫です。
私の場合は本番サイトとそのテスト環境という想定をしているので、サービス名にtest_をつけた二つ目のMySQLとWordpressコンテナも作成しています。複数サイトの必要がない場合は、test_db以降を削除してください。また3つ以上のサイトを立ち上げたいときは、同じようなノリでサービスを付け加えればいいと思います。
version: '2' services: proxy: image: jwilder/nginx-proxy privileged: true ports: - 80:80 - 443:443 volumes: - ./data/docker-compose.d/certs:/etc/nginx/certs:ro - /etc/nginx/vhost.d - /usr/share/nginx/html - /var/run/docker.sock:/tmp/docker.sock:ro restart: always letsencrypt-proxy: image: jrcs/letsencrypt-nginx-proxy-companion privileged: true volumes: - ./data/docker-compose.d/certs:/etc/nginx/certs:rw - /var/run/docker.sock:/var/run/docker.sock:ro volumes_from: - proxy db: image: mysql:5.7.25 environment: MYSQL_DATABASE: db MYSQL_USER: <一つ目のサイトのMySQLのユーザ名> MYSQL_PASSWORD: <一つ目のサイトのMySQLのパスワード> MYSQL_RANDOM_ROOT_PASSWORD: "yes" wp: image: wordpress environment: WORDPRESS_DB_USER: <一つ目のサイトのMySQLのユーザ名> WORDPRESS_DB_PASSWORD: <一つ目のサイトのMySQLのパスワード> WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: db VIRTUAL_HOST: <一つ目のサイトのドメイン名> VIRTUAL_PORT: 80 LETSENCRYPT_HOST: <一つ目のサイトのドメイン名> LETSENCRYPT_EMAIL: <メールアドレス> volumes: - ./data/<一つ目のサイト名>/wp-content:/var/www/html/wp-content links: - db test_db: image: mysql:5.7.25 environment: MYSQL_DATABASE: test_db MYSQL_USER: <二つ目のサイトのMySQLのユーザ名> MYSQL_PASSWORD: <二つ目のサイトのMySQLのパスワード> MYSQL_RANDOM_ROOT_PASSWORD: "yes" test_wp: image: wordpress environment: WORDPRESS_DB_USER: <二つ目のサイトのMySQLのユーザ名> WORDPRESS_DB_PASSWORD: <二つ目のサイトのMySQLのパスワード> WORDPRESS_DB_HOST: test_db:3306 WORDPRESS_DB_NAME: test_db VIRTUAL_HOST: <二つ目のサイトのドメイン名> VIRTUAL_PORT: 80 LETSENCRYPT_HOST: <二つ目のサイトのドメイン名> LETSENCRYPT_EMAIL: <メールアドレス> volumes: - ./data/<二つ目のサイト名>/wp-content:/var/www/html/wp-content links: - test_db
※インデントの位置も重要っぽいです。ズレてる箇所があったらすみません。
このファイルの作成には、↓のサイトを参考にしました。
はじめてのDocker その2 〜SSLに対応した複数ドメイン環境を作る方法〜 | WebNAUT
ただこれだけは動かず、いろいろと付け加えたい機能もあったので以下の点を修正しました。
- MySQLのバージョンを5.7.25に指定する(最新版だとWordpressが動かない)
- wp-contentを、data/<サイト名>/wp-contentにマウントする(いじりやすい)
- MySQLのログインをrootで行わない(よくわからんけどその方がいいのでは?)
環境定数を直で記述していたり、そもそもバージョン2で書いてたり、いろいろセキュリティ上問題があるようなないような気がしますが、動いたからええんじゃよ。
コンテナの作成と起動
以下のコマンドを実行します。
$ docker-compose up -d
Let's Encryptの設定が終わるまで少し(数分~数時間)待ち、指定したドメインにアクセスすると、wordpressの初期設定画面が表示されると思います。
ファイルをアップロードしたい場合は、<最初に作ったフォルダ>/data/<サイト名>にマウントの設定をしたので、この下アップロードすれば普通のレンタルサーバみたいな感じで使えると思います。
コンテナの管理なんかは、↓とかを見ながらやるといいかと思います。
docker & docker-compose コマンド集 - Qiita
トラブルシューティングメモ
- 先の記事で述べたようにDockerを起動したにもかかわらず、「couldn't connect to docker daemon」というメッセージが表示された場合、一回ターミナルを閉じ接続し直すといけた。
- ブラウザで「Bad Gateway」と(nginxの画面で)の表示が出たときは、まだコンテナが立ち上がっていない(?)ので、2、30秒待つ。
- ブラウザで「Error Establishing a Database Connection」と(Wordpressの画面で)出たら、データベースへのログインに失敗している。ユーザ名やパスワードを見直す。
- ブラウザで「このサイトにアクセスできません」と(ブラウザのメッセージとして)出たら、ドメインの設定が間違っているか、Let's Encryptの設定待ち。前者の場合は設定を見直し、後者の場合は数十分~数時間程待つ。
所感
これでついにWordpressサイトが立ち上がりました!
まとめてみると意外とやることは少なくて、コツさえつかめば数分で環境が整いそうですね。
気に入らなかったらすぐ潰せますし、やっぱDockerはステキです。
ただ、これでほんとにいいのか?という疑問はやっぱり残りますね。個人開発者なら問題が起きたところでダメージはないんですが、実務で使うとなるといろいろ考慮すべき点が多そうです。
次回はおまけで、なぜかWordpress起動時に言語選択画面が出なかった場合の対策を書きます。
yukari-n-u.hatenablog.com
【第2回】ConoHa VPS(CentOS7.7)にDocker, Docker-composeをインストール
このシリーズの概略については、こちら↓をお読みください。
yukari-n-u.hatenablog.com
これは私個人の備忘録なので、内容については保証しかねます。
ただ、間違っている箇所があれば教えいただけると嬉しいです。
目次
はじめに
タイトルまんまです。Dockerだけでなく、Docker-composeも入れることで一発で環境が立ち上げられるようになります。
導入にはConoHa公式同人誌を参考にしましたが、乗ってる情報はCentOS6.4(64bit)なので、CentOS7.7では多少読み替える必要があります。
作業内容
↓の記事の内容を参考にしました。
https://www.conoha.jp/download/books/conoha-book-03-docker.pdf
VPSにdocker環境構築 - Qiita
インストール
$ sudo yum -y update $ sudo yum -y install docker-io
起動・自動起動設定
$ sudo systemctl enable docker $ sudo systemctl start docker
一般ユーザでDockerを使えるようにする
意外と大切です。これ。
$ sudo groupadd docker $ sudo gpasswd -a <ユーザ名> docker $ sudo systemctl restart docker
Docker Composeのインストール
↓を参考にしました。
dockerとdocker-composeのインストール(Linux編) - Qiita
最新バージョンの確認
Releases · docker/compose · GitHub
↑にアクセスし、docker-composeの最新バージョンを確認します。Pre releaseではなく、Latest releaseがいいんじゃないでしょうか。
コマンドの入力
下記のURLのうち、1.25.0の部分を確認したバージョンに読み替えて実行します。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $ docker-compose --version
バージョンが表示されればインストール成功です。
所感
分かってしまえば簡単なのですが、いろいろ探すのに時間がかかりました。
次回はいよいよ、Wordpressを立ち上げます。とはいえ、一瞬で終わるのですが。
yukari-n-u.hatenablog.com
【第1回】ConoHa VPSの初期設定
このシリーズの概略については、こちら↓をお読みください。
yukari-n-u.hatenablog.com
これは私個人の備忘録なので、内容については保証しかねます。
ただ、間違っている箇所があれば教えいただけると嬉しいです。
目次
今回の作業内容
- ConoHaでVPSを契約する
- 一般ユーザを追加・sudoの設定
- 公開鍵を設定する
はっきり言って、ConoHaに書いてある内容をそのまま実行しただけです。
VPSスタートアップガイド|ConoHa VPSサポート
ConoHaでVPSを契約する
以下の内容で契約しました。
サービス | VPS |
---|---|
CPU | 2Core |
メモリ | 1GB |
SSD | 50GB |
リージョン | 東京 |
オプション | - |
イメージタイプ | CentOS 7.7 |
月額 | 900円 |
オプションは特になし。月額は最初の一年は720円に割引されるらしい。
Wordpress、KUSANAGI、Dockerは、それだけ入れるならそういうイメージタイプがあるみたいなので、それを選んでもいいかもしれませんね。
一般ユーザを追加・sudoの設定
一般ユーザーを追加する|ConoHa VPSサポート
sudoを設定する|ConoHa VPSサポート
↑を読んでやった。以上。
というわけにもいかないので、少しは書きます。
Tera Termのダウンロード
ターミナルソフトとして、Tera Termをダウンロードしました。PuTTYのが好きなんですが、公開鍵の設定をするのにはTera Termの方が少し楽だったのでこちらを選びました。ConoHaもこっちを使ってますしね。
ダウンロードファイル一覧 - Tera Term - OSDN
こちらのリンクからteraterm-4.105.exeをダウンロードし、あとは流れに身を任せれば大丈夫です。
起動後、
ホストにConoHaコントロールパネルから確認したサーバのIPアドレスを入力しOKボタン
→ユーザ名にroot、パスフレーズに契約時入力したパスワードを入力しOKボタン
でサーバに接続できます。
一般ユーザの追加
以下のコマンドを入力しました。
# useradd <ユーザ名> # passwd <ユーザ名> New password: <任意のパスワード> Retype new password: <上記と同じパスワード>
Tera Termを用いたサーバ接続時にこのユーザ名とパスワードを入れることで、一般ユーザとしてログインできるようになります。
ただ、次の作業はrootで行うので、ログアウトすると二度手間になります。
sudoを設定する
# usermod -G wheel jukari
これでOK。
公開鍵を設定する
公開鍵認証を設定する|ConoHa VPSサポート
一般ユーザーで公開鍵認証を使用してSSHログインする|ConoHa VPSサポート
↑を参考にしました。
ただ、一番目のリンクはサーバー契約時にしかできないものっぽいので今回はスルーし、rootに関しても二番目のリンクの方法を取りました。
鍵の生成・設置
リンク先の通り。
入力したコマンドは以下。
$ mkdir .ssh $ chmod 700 .ssh $ mv id_rsa.pub .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys
rmコマンドを打つまでもなく、id_rsa.pubは消えてた気がします。
これを一般ユーザとrootユーザーに関してやればいいんだと思います。rootに関してはすでにauthorized_keysが存在しているので、それを上書きします。
所感
この辺はまあサポートページに書いてあるまんまですよね。SSH周辺でゴニョゴニョしましたが、問題があったところでデータがぶっこ抜かれる程度で済むので大丈夫です。本当かよ。
次回はDockerをインストールします。
yukari-n-u.hatenablog.com
【第0回】VPS + Docker + WordpressでWebサイトを作るまで
目的
「えーマジVPS触ったことないの!?キモーイ」「VPS童貞が許されるのは高校までだよね」とか言われないようにするために、表題の環境を作ります。
このブログは私個人の備忘録として書くので、「このサイトの内容をやりました」だの「こっちのコードを貼っつけました」だのといった表記が主になると思われます。参考にする方がいれば……まぁいないか。一応、実行したコードだけは抜粋して載せておきます。
また、私はサーバ構築素人なので、間違っている箇所があればお教えいただけると嬉しいです。
各レイヤーの導入意義
Docker
仮想環境を作ることができるらしい。↓この辺の記事を見て導入を決定しました。
knowledge.sakura.ad.jp
qiita.com
仮想化って素晴らしいですよね。ミスっても簡単に潰せるので、好き放題いじくりまわしたい趣味グラマにはもってこいです。
本番環境にDockerを使うのっていろいろと問題があったりなかったりするらしいですが、どうせほとんど誰もアクセスしてこないサイトなので、まあいいんじゃないでしょうか。
VPS(ConoHa, CentOS7.7)
以前はさくらのレンタルサーバを利用していたのですが、Webアプリケーションの開発等も後々していきたかったのでVPSに乗り換えました。
わざわざさくらから乗り換えたのは、ついこの間あった炎上騒ぎのせいもあります。まさか本当の話だったとは思わなんだ。
CentOS8もリリースされていますが、Dockerが8でまだ正式リリースされていない?とからしいので、CentOS7.7を使いました。
所感
新年テンションでえいニャ!えいニャ!とVPSを契約してしまったのですが、本当にこんな見切り発車で大丈夫なんですかね。
次回はConoHa VPSの初期設定をします。
yukari-n-u.hatenablog.com