Webエンジニア susumuis の技術ブログ

このブログの内容は個人の見解であり、所属する組織の公式見解ではありません

Google Cloud Platform に Google Compute Engine を構築して、Wordpressを動かすまで(その3 - wordpressらしきものが動いた!)

前回: Google Cloud Platform に Google Compute Engine を構築して、Wordpressを動かすまで(その2 - LAMP環境の構築) - susumuis Info

GCE上に構築したDebian LAMP環境にwordpressをインストール

さて、前回までで、wordpressをインストールする前の役者は揃ったわけですが、 wordpress自体を次のどちらから取ってくるかという問題があります。

  • Debianのpackage
  • wordpressのサイトから最新

よく、後者でインストールしている記事をよく見かけますし、その方が最新も手に入るし簡単と聞きますが、 セキュリティのパッチとかが出たら常に追いかけなければなりません。その点、package版なら、 aptでupgradeするだけで、セキュリティパッチが当たりますので、とりあえず、 今回は最新を追いかけないでセキュリティはdebianに任せる方法を採用してみます。

susumuis@instance-1:~/public_html$ sudo aptitude install wordpress
以下の新規パッケージがインストールされます:
  fontconfig-config{a} javascript-common{a} libfontconfig1{a} libgd2-xpm{ab} libjs-cropper{a} libjs-prototype{a} libjs-scriptaculous{a}
  libphp-phpmailer{a} libphp-snoopy{a} libx11-6{a} libx11-data{a} libxau6{a} libxcb1{a} libxdmcp6{a} libxpm4{a} php5-gd{a} tinymce{a} ttf-dejavu-core{a}
  wordpress wordpress-l10n{a} wwwconfig-common{a}
更新: 0 個、新規インストール: 21 個、削除: 0 個、保留: 3 個。
11.0 M バイトのアーカイブを取得する必要があります。展開後に 53.1 M バイトのディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
 libgd2-xpm : 競合: libgd2[仮想パッケージです]
              競合: libgd2-noxpm [2.0.36~rc1~dfsg-6.1 が既にインストール済みです]
 libgd2-noxpm : 競合: libgd2[仮想パッケージです]
                競合: libgd2-xpm [2.0.36~rc1~dfsg-6.1 がインストール予定となっています]
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージを削除する:
1)     libgd2-noxpm



この解決方法を受け入れますか? [Y/n/q/?]Y
以下の新規パッケージがインストールされます:
  fontconfig-config{a} javascript-common{a} libfontconfig1{a} libgd2-xpm{a} libjs-cropper{a} libjs-prototype{a} libjs-scriptaculous{a}
  libphp-phpmailer{a} libphp-snoopy{a} libx11-6{a} libx11-data{a} libxau6{a} libxcb1{a} libxdmcp6{a} libxpm4{a} php5-gd{a} tinymce{a} ttf-dejavu-core{a}
  wordpress wordpress-l10n{a} wwwconfig-common{a}
以下のパッケージが削除されます:
  libgd2-noxpm{a}
更新: 0 個、新規インストール: 21 個、削除: 1 個、保留: 3 個。
11.0 M バイトのアーカイブを取得する必要があります。展開後に 52.5 M バイトのディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] Y

なんか入りました。ただ、これだけではまだwordpressは動きません。結構ここで挫折する人がいるとか。。。

まず、以下の場所にドキュメントがあるので読んでみます。

susumuis@instance-1:~/public_html$ cd /usr/share/doc/wordpress
susumuis@instance-1:/usr/share/doc/wordpress$ ls
NEWS.Debian.gz  README.Debian  TODO.Debian  changelog.Debian.gz  copyright  examples
susumuis@instance-1:/usr/share/doc/wordpress$ cat README.Debian 

うん、英語。。。僕による超要約によると

  • apacheのルートを usr/share/wordpress に向けろ (examples/apache.confを見よ!)
  • examples/setup-mysql を使えば database と filesystem のセットアップが終わるぜ。/srv/wwwにあるファイルがインストールされることに注意
  • Wordpress 設定ファイルについて
  • wp-config.php は実体として /etc/wordpress/config-$HOST.php または /etc/wordpress/config-$DOMAIN.php を読み込むよ!
  • もしそれらが存在しない場合は 404 を返す
  • 複数ブログをやるときは ... (今回は読んでない)
  • もっと知りたければ /usr/share/wordpress/wp-config-sample.phphttp://codex.wordpress.org/Editing_wp-config.php を見てね!
  • プラグインとかテーマーとかの管理について

以降色々書いてあるけど、とりあえず動かすにはとにかく設定ファイルを作ってしまえば良さそう。なのでやってみます!

susumuis@instance-1:/usr/share/doc/wordpress$ cd examples
susumuis@instance-1:/usr/share/doc/wordpress/examples$ sudo gunzip setup-mysql.gz
susumuis@instance-1:/usr/share/doc/wordpress/examples$ ls -la
合計 20
drwxr-xr-x 2 root root 4096  4月 25 11:36 .
drwxr-xr-x 3 root root 4096  4月 25 11:34 ..
-rw-r--r-- 1 root root 2076  9月 13  2013 apache.conf
-rw-r--r-- 1 root root 5015  9月 13  2013 setup-mysql

susumuis@instance-1:/usr/share/doc/wordpress/examples$ sudo bash setup-mysql -n wordpress localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.029 ms

--- localhost ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.029/0.029/0.029/0.000 ms
/etc/wordpress/config-localhost.php written
Trying to create wp-content directory: /srv/www/wp-content/localhost
Setting up permissions
Goto http://localhost to setup Wordpress

こんな感じでしょうか?ここまで来るのに相当エラーでまくったので、もう、当てずっぽうで、やっとコマンドが通った状態です。 いずれ本番環境作るときはこうではいけないです。

examples/apache.confを見よというので見てみます。

susumuis@instance-1:/usr/share/doc/wordpress/examples$ cat apache.conf 
There are several ways to setup Wordpress & Apache in Debian. However the
maintainer's recommended way with the helper script `setup-mysql` uses:
以下続く

うわあ。また英語!!>< とりあえず、setup-mysqlスクリプトは使ったので、一番簡単そうな、

## Virtual host VirtualDocumentRoot

以下の設定を参考にしてみます。 ガイドに従ってrewrite, vhost_alias もし有効にしてみます。

susumuis@instance-1:/etc/apache2/sites-enabled$ sudo a2enmod rewrite
susumuis@instance-1:/etc/apache2/sites-enabled$ sudo a2enmod vhost_alias
susumuis@instance-1:/etc/apache2/sites-enabled$ sudo /etc/init.d/apache2 restart

ハマりどころとして、ワンライナーの a2enmod rewrite && a2enmod vhost_alias && /etc/init.d/apache2 restart をそのまま貼り付けてもダメです。それぞれsudoをつけるか、suでルートになって置かなければなりません。

そして、こんな感じにしました。

susumuis@instance-1:~$ cd /etc/apache2/sites-available
susumuis@instance-1:/etc/apache2/sites-available$ sudo vi localhost
<VirtualHost *:80>
    UseCanonicalName Off
    ServerName 107.***.***.***
    VirtualDocumentRoot /usr/share/wordpress
    Options All

    # wp-content in /srv/www/wp-content/$0
    RewriteEngine On
    RewriteRule ^/wp-content/(.*)$ /srv/www/wp-content/%{HTTP_HOST}/$1
</VirtualHost>

ServerNameのところを本当はドメインと紐付けたりしたほうがよいでしょう。 とりあえず、今は手っ取り早くIPに紐付けちゃいました。..***のところは本物のIPを入れてます。

susumuis@instance-1:/etc/apache2/sites-available$ sudo a2ensite localhost
Enabling site localhost.
To activate the new configuration, you need to run:
  service apache2 reload
susumuis@instance-1:/etc/apache2/sites-available$ sudo service apache2 reload
[FAIL] Reloading web server config: apache2 failed!

あれ、リロードできなくなっちまった。ならばログをみませう。

susumuis@instance-1:/etc/apache2/sites-enabled$ vi /var/log/apache2/error.log

そしたら

PHP Warning:  require_once(/etc/wordpress/config-107.***.***.php): failed to open stream: Permission denied in /usr/share/wordpress/wp-config.php on line 22

とか

PHP Fatal error:  require_once(): Failed opening required '/etc/wordpress/config-***.***.***.php' (include_path='.:/usr/share/php:/usr/share/pear') in /usr/share/wordpress/wp-config.php on line 22

とか書いてある!それなら、(このあたりから大分適当になってきています。すみません)

susumuis@instance-1:/etc/apache2/sites-available$ cd /etc/wordpress/
susumuis@instance-1:/etc/wordpress$ sudo cp config-localhost.php config-***.***.***.php
susumuis@instance-1:/etc/wordpress$ sudo chown www-data config-***.***.***.php
susumuis@instance-1:/etc/wordpress$ cd /usr/share/wordpress/
susumuis@instance-1:/usr/share/wordpress$ sudo chown www-data . -R

これでどやー!!

f:id:s-ishigami:20140502215521p:plain

なんか動きました。うわースタイルシートとかあたってなくて全然ガタガタですね。でもこれは確かにwordpressです!

ログがここで切れてるので、ここでおしまいです。 ということで、えらいはまりながらも、なんとかGCE上にwordpressを動かすことが出来ました。手順がわかったので今度はもう少しちゃんとやり直して見たく思います。

ここまで長い間お付き合いいただき有難うございました。

蛇足、このエントリはAtomで書きました

このエントリの原稿はベータテスト中のAtomエディタでmarkdown記法を使って書いてみました。 Atomエディタはmarkdownをリアルタイムプレビューしながら記述できて便利です。 まだ日本語の扱いなど難点がありますが、エディタとしては結構使い物になるように思います。これからも使ってみようと思います。