RackhubでWordPressを動かしてみた

やほい!

鳥だ!飛行機だ!やっぱり鳥だった!
ここんところはRackhubっていう、最初からある程度環境が整ってるVPSで遊んでるよ!

今日はRackhubでWordPressを動かすところまでやってみたよ〜。
WordPressは世界で一番名の知れたCMSだ。

もくじ

  1. Rackhubとは?
  2. Rackhubの初期設定!
  3. PHP 5.4.Xの動作確認
  4. MySQLをインストろーるする
  5. WordPressをインスールする
  6. WordPressのためにFTPサーバーを設定してあげる

Rackhubとは?

Ruby、node.js、nginx等、最近流行りのアレとかソレが最初から準備されてるVPSなのさ♪
紹介については割愛するので、 いまからPerl/Ruby/Node.jsやるならRackhubを使わない手はない - Cside::Weblog を見てくださいまし。
半月260円という、いかにも「テストに使ってください!」という料金体系でありますっ
ボタンひとつでサーバー初期化だって、ホラ簡単!

使ってみた感じは、何かと「潰しが利かない」系のVPSとあまり変わらない感じのにほひがするのですが( ̄▽ ̄;
※本人がサーバー技術に疎いだけって話もありつつw

さてさて、今日はWordPress動かしてみようかい。
今のところこれでうまくいってるけど、変遷が早いから上手くいかなくなる可能性もあるヨ!

 

Rackhubの初期設定!

初期設定は以下の辺りを参考に設定しておくんなまし。慣れない人はSSHの鍵設定の辺りでまごつくカモー。

!ここから先の注意!
この記事の執筆者は、Rackhubを使って実験しているだけで、サーバー知識には疎いです。
セキュリティ面で甘々の可能性があります。
飽くまで参考程度に留めてください。
ご指摘は歓迎します。

 

PHP 5.4.Xの動作確認

SSHでログインするまで完了してる前提でいくよん。
以下のコマンドは、ユーザーがタイピングするところを太字にしてるよ。(一部除く)

まず最初に、色々とちょい古い状態なので"apt-get"でアップデート実行。
時間かかるよ〜!

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

ここからずっと"grub-pc"がエラー吐くんだけど、どうも最新版の"grub-pc"のバグっぽい。
ちょい調べたレベルだと原因、対処法不明。

旧サーバーの画面を確認しておこう。
とりあえず、設定画面にある、ここのURLをブラウザで表示してみんさい。

ここで「php -v」でバージョン確認できるけど、CGI的に動くものが別物な可能性があるから、
実際にはphpinfo()を表示して確かめる必要があったりするのね。

なので、phpinfo();を 実行してみよう。
公開ディレクトリは「/usr/local/httpd/htdocs/」なので、ここにPHPファイルを作る。
ターミナルに戻って以下入力。

$ cd /usr/local/httpd/htdocs
$ sudo vi phpinfo.php

すると、Linuxなエディタ"vi"が開くので、以下のように入力。
操作方法は独特、この辺を参考にしてね! vi / vim コマンド一覧(検索・置換・コピー)

<?php phpinfo();

え?閉じタグ?面倒だから書かない( ̄▽ ̄;

保存したら、Apacheを起動する。

$ sudo apachectl start

起動したら下記URLをブラウザで表示してみよう!
http://(アカウント名).rackbox.net/phpinfo.php

そしたら、こんな感じの画面が表示される。

これでPHP 5.4.xの確認は完了!

なお、このままだと、Indexes設定されっぱでディレクトリ一覧が見えちゃったり、
Apacheのバージョン情報が表示されちゃったりするので、その辺はきちんと設定しよう!

Indexes設定の削除方法は以下のとおり。

$ sudo vi /usr/local/httpd-x.x.x/conf/conf.d/default

Options Indexes FollowSymLinks

で、ローカルでの.htaccessファイルを有効化する

AllowOverride None

AllowOverride All

ディレクトリ指定で"index.php"や"index.cgi"が見られるようにする。
以下の行を"AllowOverride"の下辺りに追加する。

DirectoryIndex index.php index.cgi index.shtml index.html

また、入ってるPHPモジュールは、「php -m」コマンドでも確認できるよ!
ちなみに、設定を反映するにはApacheを再起動な。

$ sudo apachectl restart

 

MySQLをインストろーるする

はいお次はMySQLのインストール。
驚くなかれ、MySQLは初期状態では入ってないw
入ってるけど、動かし方がわかんない( ̄▽ ̄;

でもご心配なく、優秀な"apt-get"執事が頑張って働いてくれる。

$ sudo apt-get install mysql-server

こんだけ。
PHPRubyPythonなんかで必要なモジュールも、勝手にインストールしてくれます。
後は画面の指示に従って、rootのパスワードを設定するだけさ〜。
終わったら、ちょっち中身を覗いてみよっか。

$ mysql -uroot -p
Enter password: (パスワードを入力)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is XX
Server version: 5.5.XX

Copyright (c) 20XX, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select host,user from mysql.user;


mysql> quit
Bye

さて、MySQLは無事動いた。
しかし「CUIでなんかやってられっか!」と思う人も多いだろね。
そういう人にはphpMyAdmin。最近なんか迷走気味だけど。。

でも設定が面倒。面倒だけど設定するw

さて、実際には何やるかっていうと、ファイルをゲットしてZIPを解凍して入れ替えるだけ。
そこに一手間をかけるのが、プロと素人との違いなのさ( ̄^ ̄)b(ホントか?)

ホームディレクトリでもどこでも良いので、HTMLファイルをダウンロードする。
ダウンロードのURLは、phpMyAdminの公式サイトから、ちょっと面倒くさい方法で取得する。

まず、ふつーのブラウザでphpMyAdminのサイトにアクセスする。

右上のダウンロードリンクをクリック。

ダウンロード一覧から、「phpMyAdmin-x.x.x.x-all-languages.zip」をクリック。

そしたらSouceForgeの画面が開くので、そっから「direct link」ってところを右クリックして、URL(リンク アドレス)をコピーする。

これでやっと、phpMyAdminのダウンロードURLがゲットできた。
で、SSHの画面に戻ろっか。
先ほどコピペしたURLを貼り付ける。URL貼り付けの刑に処す!

$ wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php&ts=1347072439&use_mirror=jaist
[1] 20587
[2] 20588
--20XX-XX-XX XX:XX:XX-- http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... xxx.xxx.xxx.xxx

[1]- Done wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php
[2]+ Done ts=1347072439

で、"ls"でダウンロードできていることを確認。そしたらダダ長いファイル名が( ̄▽ ̄;

$ ls
perl5
phpMyAdmin-x.x.x.x-all-languages.zip?r=http:%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php

やってらんないので、ファイル名を"mv"コマンドで変更する。

$ mv phpMyAdmin-x.x.x.x-all-languages.zip?r=http:%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php phpmyadmin.zip

続いて、ZIPファイルを解凍。

$ unzip phpmyadmin
Archive: phpmyadmin.zip
creating: phpMyAdmin-x.x.x.x-all-languages/
inflating: phpMyAdmin-x.x.x.x-all-languages/ChangeLog
:

で、phpMyAdminディレクトリを公開ディレクトリへ移動。

$ sudo cp -rapd ~/phpMyAdmin-x.x.x.x-all-languages /usr/local/httpd/htdocs/
$ sudo mv /usr/local/httpd/htdocs/phpMyAdmin-x.x.x.x-all-languages /usr/local/httpd/htdocs/phpmyadmin

よっしゃー以上終了!って思って、喜んでphpMyAdminの管理画面にアクセス!
http://(アカウント名).rackbox.net/phpmyadmin/
するとこんな風にエラーメッセージ。


「 mysqli 拡張がありません。PHP の設定をチェックしてみてください。 」

ちなみにRackhubさんスペックがしょんぼりなので、もし以下のような画面が出たら、更新してくらさい。

にょーん。。。
これをマジで解決しようとすると時間がかかっちゃうので(次回以降のエントリーで紹介)、
取り敢えずの回避策を取るよ。

$ cd /usr/local/httpd/htdocs/phpmyadmin
$ sudo cp config.sample.inc.php config.inc.php
$ sudo vi config.inc.php

で、以下のようにファイルを編集。

$cfg['Servers'][$i]['extension'] = 'mysqli';

$cfg['Servers'][$i]['extension'] = 'mysql';

さて、できたかどーだか食べて見てみよー。
ブラウザで、「http://(ラック名).rackbox.net/phpmyadmin/」にアクセスしてログイン。

で、下記URLにアクセスして表示確認だ!
http://(アカウント名).rackbox.net/phpmyadmin/

すると今度は、ログインしようとすると、

「#2002 MySQL サーバにログインできません」

orz

こいつはどーやら、php.iniにMySQLのソケットの設定してやってないことが原因らしい。
てことで、SSHターミナルから、以下コマンドでMySQLにログインして、MySQLのソケット情報を取得する。

$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
:
mysql> status
--------------
mysql Ver x.x Distrib x.x.x
:
UNIX socket: /var/run/mysqld/mysqld.sock
:
Threads: 1 Questions: 573 Slow queries: 0 Opens: 421 Flush tables: 1 Open tables: 41 Queries per second avg: 0.386
--------------

mysql>quit
Bye

で、php.iniを編集。

$ sudo vi /usr/local/php-5.4.0/lib/php.ini

以下の設定が空欄になっているので、先ほど出てきたパスを書く。

pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
mysql.default_socket = /var/run/mysqld/mysqld.sock

Apacheを再起動。

$ sudo apachectl restart

で、ログインできることを確認。 ∩( ・ω・)∩ばんじゃーい

phpMyAdminの管理ユーザーが無いどー」っていう問題と、
mcryptありまへんがなー」って言われる問題は、次回以降のエントリーで( ー`дー´)キリッ

では後始末。DLしたZIPファイルと、旧ディレクトリを削除しよう。

$ rm ~/phpmyadmin.zip
$ rm -R phpMyAdmin-x.x.x.x-all-languages

このままだと公開ディレクトリで誰からでも見えちゃうので、
実際にはBASIC認証IPアドレス制限をかけるとかしておこう!

 

WordPressをインスールする

この人一回もマトモにインストールって言わなかったよ!
お褒めのお言葉ありがとうございます(褒めてないし誰も言ってない)

最後に本丸のWordPressをインストールしようか。

でもその前に、phpMyAdminからでもCUIからでも良いので、
WordPress用のDBと、そのDBに対するフル権限を持ったユーザーを作成しねネ!
やり方は、、SQLのコマンドリファレンスとか、phpMyAdmin適当にいじるとかして
設定してくらはい( ̄▽ ̄;

で、DBの設定終わったら、日本語WordPressサイトへGO!

この辺からURLをゲット。

で、wget→展開→公開ディレクトリへ移動→ディレクトリの権限変更。

$ cd ~
$ wget http://ja.wordpress.org/wordpress-x.x.x-ja.zip
$ unzip wordpress-x.x.x-ja.zip
Archive: wordpress-x.x.x-ja.zip
creating: wordpress/
inflating: wordpress/wp-app.php
:
$ rm wordpress-x.x.x-ja.zip
$ sudo cp -rapd ~/wordpress /usr/local/httpd/htdocs/
$ sudo chmod a+w -Rf /usr/local/httpd/htdocs/wordpress

※これだと誰でも書き込めるディレクトリになっちゃうので、できればもう少し狭めの権限を!

保存したら下記URLをブラウザで見てみよー!
http://(アカウント名).rackbox.net/wordpress/

で、改めてURLにアクセス!
http://(アカウント名).rackbox.net/wordpress/
するとインストール画面が!(∩´∀`)∩

頑張ってインストールまでやったってください。
WordPressさんDBのパスワードを入力する時にパスワード丸見えだけど、気にしないであげてください。
SSLじゃないんで通信横取りされたら丸見えだけど、気にしないd(ry

で、ウェブ画面でのインストールが完了してログインしたら、一旦ログアウト。
SSHのほうに戻って、"wp-config.php"を編集するよ。

$ sudo vi /usr/local/httpd/htdocs/wordpress/wp-config.php

FTP利用しないようにするため、どっかに以下の一行を追加。

define('FS_METHOD', 'direct');

さて、これでインストール完了だ!
http://(アカウント名).rackbox.net/wordpress/

wp-admin以下やwp-contentには、きちんと閲覧権限振ったげてね〜。

 

おまけ:WordPressのためにFTPサーバーを設定してあげる

WordPressはデフォルトでFTP利用になってるんだけど、
前述の通り、wp-config.phpを設定すりゃダイレクトに取ってきてくれる。
なんつーか、だったら最初からそうしとけよってゆーね。。

不要だけど、FTPで遣り取りさせたい時は以下の方法で設定してくだし。
※ちなみに、この方法だと自分(localhostからしか接続できないみたいなので、外部からの接続が必要な時は別途設定方法を調べてねー。

導入するのはProFTPD、有名なヤツ。たぶん。

まず最初に、現在のポートの状況を確認しよう。
こんか感じになってるはず。

$ netstat -anp
Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 172.XX.XX.XX:22 172.XX.XX.XX:XXXXX ESTABLISHED -
tcp6 0 0 :::22 :::* LISTEN -
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path

3306がMySQL、80がHTTPd、22がSSHだね。

さて、またも"apt-get"でProFTPDのインストール。

$ sudo apt-get install proftpd

インストールが終わったら、下記コマンドを実行してみる。

$ proftpd -v
ProFTPD Version 1.3.4a

入ったね!
さて、まずは設定ファイルの編集だす。

$ sudo vi /etc/proftpd/proftpd.conf

以下のニ行をどこかに追加。

AuthUserFile                    /etc/proftpd/ftpd.passwd
AuthOrder mod_auth_file.c

また、ポート番号を3000番に変更する。
開発用HTTPポートを無理やり大体するかたちだけど、
21番を空けようとするとお金がかかるので。。w

Port 21

Port 3000

次に、アカウントファイルを生成する。

$ sudo ftpasswd --file /etc/proftpd/ftpd.passwd --passwd --name (アカウント名、任意) --uid 2000 -gid 2000 --home /var/www/ --shell /bin/sh

ftpasswd: using alternate file: /etc/ftpd.passwd
ftpasswd: creating passwd entry for user ftp

Password: (パスワードを入力)
Re-type password: (パスワードを再入力)

ftpasswd: entry created

さて、アカウントも作ったので、やっとこ起動だ☆

$ sudo /etc/init.d/proftpd start

で、ポートが増えてるかを確認。

$ netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 172.XX.XX.XX:22 172.XX.XX.XX:XXXXX ESTABLISHED -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::3000 :::* LISTEN -
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path

こんな風に1つ増えたはずだ。
この状態だと、外からは繋げないみたいだけど、WordPressは中から中のFTPサーバーにつなぐ(自己完結)ので、これで問題なし。

さて、CUIにも飽き飽きしてきている頃だろうと思う。
WordPressの管理画面にログインして、実際にFTPプラグインが追加できるか確かめてみよー☆
日本語版だと標準の、「 WP Multibyte Patchプラグインを入れてみるといーと思うよっ

FTP接続時に、こんな風に設定するのさぁ。

で、「開始」して↓の感じの画面が出れば成功だよ!(プラグインは適当)

以上!

お疲れ様でした!

2012/9/16 デフォルトでPHP5.4.0が入るようになっていたのと、ApachePHPの二重化の回避方法が分かったので書き直し