2012年 11月 15日
Wordpress を SUSE Linux (SLES11) で動かす
MySQL の教科書は数々あれど、Wordpress の教科書は数々あれど、両方を扱った良いテキストはほとんどありません。結局どちらの教科書を買ってきても、それぞれが専門書であり、基本的な
「このディストリビューションではどうやって環境を作るの」
という記述はありません。Wordpress の教科書には「ここでは MySQL の設定方法は教えませんよー」とありますし、MySQL の教科書については、プログラミングや管理の方法は書かれていても、インストールの方法さえ書かれていません。もちろん Wordpress って何物だ、の世界です。もっとも練習用に Windows 版のバイナリが添付されていることも多いようです。
事前に MySQL が「動いていて当たり前」で書かれているわけですね。
ぞうは言っても LAMP という言葉に代表されるように MySQL と PHP, Apach の組み合わせは Linux のデフォルトです。
ということで SUSE Linux で Wordpress はどうやってうごかすの? ということで、CMS ソフトウェアの代表である Wordpress をインストールしてみました。
openSUSE/SLES 15 はこちら
openSUSE Leap 15, How to install Wordpress (インストール)
https://islandcnt.exblog.jp/239219681/
-参考になった資料-
推奨構成とデータベースの作成 <--- おすすめ
Running WordPress on openSUSE
2010年2月のopenSUSE勉強会報告
Changing the Site URL
-SUSE(SLES11sp1)の仮想マシンインストール-
一度やればよいことなのですが、ここは訓練です。 SLES + XEN の基本環境を SSD ドライブの中に用意して、Domain-U をコピーしては、「何度も」練習しました。メモリは 768Mb vcpu:2 です。失敗すると、また仮想マシンをコピーしてやり直しですからね。SLES11sp2 の ISO ファイルを指定して12Gバイト(とりあえず)のシステムを次のように作成します。
- あらかじめ DNS サーバーに ex) wordpress.intra のようにレコードをセットします。DDNSならそれでもよし、ここでは固定IPを使って行います。
- インストール言語は英語、キーボードは日本語
- UTC は使わずハードウェアクロックを JST に設定
- 言語は us_EN, 追加言語として、Japanese を追加
- runlevel は 5 に
ここまでは日本語環境で必要な、デフォルトです。追加として
- software からソフトウェアオプションとして Web & LAMP を指定します。
(MySQL と PHP5 が同時にインストールされます)
インストール中.....
- FireWall, IPv6 は Disable に
- DNS に設定した固定 IP を設定します。
インストール後.....
- YaST > ソフトウェアレポジリトリから > phy://DVD から HTTP:// なり file////.....DVD.ISO などに設定します。ローカルコピーして iso を指定するか http などを使うのが最も良いでしょう。レポジトリからインストール用に使ったメディアを Disable にしておくか、削除します。最終的にはアクティベーションコードを購入して、YaST > カスタマセンターからアップデートします。
- 仮想環境で作る場合はインストール用メディア(ISO)を /etc/xen/vm/.... ファイルから取り除きます。
- NTP サーバーを設定します(LAN内のNTPサーバーが良いでしょう)
- YsST > Runlevel Editor > MySQL を RunLevel 3,5 で起動させます。デフォルトでは停止しています。
- YaST > HTTP Server で Apache2 を自動起動します。
- その際、同時に PHP scripting を有効に
PHP が無効な場合 xxxxx.php をダウンロードしようとします。

MySQL はhttp サーバと共にインストールれますが起動されません。runlevel 3,5 で起動させます。
PHP は有効にします。有効にしないと xxxxx.php をブラウザから開くと「ダウンロード」になります。

apache2 HTTP サーバを YaST からインストールする際に PHP を有効にします。
インストール後であれば YaST > HTTPserver > Server Module から PHP5 を Enable にします。

-Wordpressのダウンロードとインストール-
Wordpress 日本語公式ページhttp://ja.wordpress.org/
日本語ページから tar.gz 形式のファイルをダウンロードして、/srv/www/htdocs に保存します。保存したファイルは tar 解凍して、 403 にならないよう chown で wwwrun にオーナーを変えます。
※当然、root でログインして作業するわけですから、ファイルコピーなどをした後のオーナーは root のままです。wwwrun に変える必要があります。
http://software.opensuse.org/122/jaから wordpress を検索すると1クリックパッケージもありますが若干古いバージョンのようでした。また1クリックインストールで全部動くわけではありません。やっぱり MySQL の設定だとかなんだとかが必要なのでパッケージのインストールはできても設定まで自動ではやってくれないようです。ということで本家のものを使いました。
wget http://wordpress.org/latest.tar.gz を使ってダウンロードしても良いのですが、日本語が入っていませんでした。
wrps:/srv/www/htdocs # tar zfx wordpress-3.4.2-ja.tar.gz
wrps:/srv/www/htdocs # ls -l
total 4912
-rw-r--r-- 1 root root 2326 Nov 21 2004 apache_pb.gif
-rw-r--r-- 1 root root 2088 Nov 26 2008 apache_pb.png
-rw-r--r-- 1 root root 1797 Nov 26 2008 apache_pb2.gif
-rw-r--r-- 1 root root 1505 Nov 26 2008 apache_pb2.png
-rw-r--r-- 1 root root 2434 Nov 26 2008 apache_pb2_ani.gif
-rw-r--r-- 1 root root 302 Jul 24 2008 favicon.ico
drwxr-xr-x 2 root root 4096 Oct 26 10:22 gif
-rw-r--r-- 1 root root 44 Nov 21 2004 index.html
-rw-r--r-- 1 root root 2356 Feb 24 2009 info2html.css
-rw-r--r-- 1 root root 26 Dec 1 2011 robots.txt
drwxr-xr-x 5 nobody nogroup 4096 Sep 8 13:45 wordpress <-- Default で作られます。
-rwxr--r-- 1 root root 4970768 Oct 29 09:31 wordpress-3.4.2-ja.tar.gz
wrps:/srv/www/htdocs # chown wwwrun * -R <--- よく忘れます....
wordpress ディレクトリは解凍すると自動で作成されます。 blogs などの名前に変えても良いでしょう。とりあえずデフォルトで作ってみます。
この時点でローカルホストからブラウザを使って URL に localhost を指定して "It Works !" が表示されるか、 localhost/wordpress/index.php を開けるか確認します。 PHP ファイルをダウンロードしようとすれば、 PHP が有効になっていません。
403 になる場合は /srv/www/htdocs のアクセス権がおかしいので wwwrun に変えましょう。
また、root で解凍すると wp-config.php の作成に失敗します。
※セキュリティの問題が残るかもしれません。コメントください。
※その他、/wordpress に飛ばすよう /srv/www/htdocs/index.html からリダイレクトで飛ばすか、/srv/www/htdocs/ にインストールして /etc/apache2/httpd.conf のデフォルトページ(DirectoryIndex の行)に index.html を削除して index.php を追加するなどしておきます。それでも見る人が見ればこのページは Wordpress を使っているなと解ります。ディレクトリ名やファイル名が決め打ちなので、注意が必要ですね。
-MySQL の設定-
ここでがっちりはまります。 3,000円位はする MySQL の教科書の最初の10ページ目くらいに書かれていることなので、どこかで確認しておいてください。
wrps:/srv/www/htdocs # mysql -u root
<-- SQL モニタを立ち上げます。-p オプションはこの場合はまだ付けません。とりあえずパスワードは後回しにしてみます。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.95 SUSE MySQL RPM
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database wprs; <--- データベースを作成します。
Query OK, 1 row affected (0.00 sec)
mysql> grant all on wprs.* to 'wpadmin'@'localhost' identified by 'wppasswd';
<---- ここで「wprsデータベースの全てのテーブル(wprs.*)」 に権限を与えます。これが謎の呪文の正体です。
Query OK, 0 rows affected (0.00 sec)
※wpadmin は任意ですが、
mysql> show databases; <---- databasesです。
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| wprs | <---- できました
+--------------------+
4 rows in set (0.00 sec)
mysql> exit <---- SQL モニタを終了します。
※ データベースを削除してこの作業をもう一度楽しみたい場合は
mysql > drop database my-wordpress-db;
を実行します。このコマンドも MySQL の本の50ページくらいに書かれています。
-よくはまるトラブル-
- MySQL コマンドの最後を ; で終わらせていない。
- つづりや助詞が間違っている。 on を to にしたとか、そんな間違えです。
- ユーザ名、パスワードはシングルクォーテーションで囲む
- install.php を開くとダウンロードになる <--- Apach2 で PHP を有効にしましょう。
- 403 になる <--- アクセス権が間違っている。 chown wwwrun * -R します。
- wp-config.php が保存できない(インストールでループする) <--- やっぱりアクセス権の問題
- もう一度試して.....
<--- wp-config.php に書き込めない、権限がない。
<--- database ホスト名が一致しない、localhost がとりあえず無難
- MySQL, Apache が動いていない。(インストールしても、YaST でインストールと設定が必要です)
- http://myserver/wordpress/ を開くと 403 になる
<--- /etc/apache2/httpd.conf のデフォルトページ(DirectoryIndex の行)に index.php を追加しておきます。これがなければデフォルトで index.html を探してしまいます。本体は dir/index.php などにリンクするので必要ないかも知れません。外部に公開するときは要注意ですね。
こんなところでしょうか。ここまで淀みなくできるようになれば、もうコッチのものです
-再起動してみる-
一応お約束として apache2 と mysql を再起動してみます。
wrps:/srv/www/htdocs # /etc/init.d/mysql restart
Restarting service MySQL
Shutting down service MySQL done
Starting service MySQL done
wrps:/srv/www/htdocs # /etc/init.d/apache2 restart
Syntax OK
Shutting down httpd2 (waiting for all children to terminate) done
Starting httpd2 (prefork) done
wrps:/srv/www/htdocs #
-ではブラウザからアクセスを-
ローカルホストのブラウザから
localhst/wordpress/ を開きます。

SQL モニタで設定した「謎の呪文」データベース名、管理者名、管理パスワード、サーバ名(DNS名)をセットします。

データベースのホスト名は "localhost" を設定しないと動かないようです。(画面は wrps.intra ですが...)

※ localhost のブラウザはこれでOKなのですが、外部のブラウザからだと http://localhost/xxxxx が 404 になります。当たり前なのですが..... その際は /srv/www/htdocs/wordpress/wp-config.php を削除して、もう一度やり直してください。
「ようこそ」画面が出てきたらこっちのもの

※この時点で wp-config.php を削除すると、もう一度楽しめます。
サイトのタイトルと管理者名:パスワードを設定

これでログインします。

これで完成

※このようにレイアウトが壊れている場合は、画像やスタイルのリンク先が 'localhost' になっているからです。これも修正が必要です。
あとは Admin から左側の「人型」アイコンからユーザを追加します。

-localhostを参照してしまう-
当たり前ですが、コンテンツの一部に"localhost"へのリンクが残るものがあり、これを踏むと当然 404 エラーとなってしまいます。
wp-config.php に
define('WP_HOME', 'http://myserver/wordpress');
define('WP_SITEURL', 'http://myserver/wordpress');
の二行を追加すると良いようです。
Changing the Site URL
あるいは wordpress/wp-config.php を一旦削除して、再セットアップすると正しく動く場合がありました。データベースは残っているので、こちらの方が問題ないようです。
-データの保管場所-
/var/lib/mysql にデータが保存されます。
wrps:/var/lib/mysql # ls -al
total 20564
drwxr-xr-x 7 mysql mysql 4096 Oct 30 10:44 .
drwxr-xr-x 45 root root 4096 Oct 29 09:30 ..
drwx------ 2 mysql mysql 4096 Oct 26 19:36 .protected
drwxr-xr-x 2 mysql mysql 4096 Oct 30 11:43 .tmp
-rw-rw---- 1 mysql mysql 5242880 Oct 30 10:44 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Oct 26 19:36 ib_logfile1
-rw-rw---- 1 mysql mysql 10485760 Oct 30 10:44 ibdata1
drwx------ 2 mysql mysql 4096 Oct 26 19:36 mysql
srwxrwxrwx 1 mysql mysql 0 Oct 30 10:44 mysql.sock
-rw-r--r-- 1 mysql mysql 6 Oct 26 19:36 mysql_upgrade_info
-rw-rw---- 1 mysql mysql 2308 Oct 30 10:44 mysqld.log
-rw-rw---- 1 mysql mysql 740 Oct 30 10:15 mysqld.log-20121030.bz2
-rw-rw---- 1 mysql mysql 5 Oct 30 10:44 mysqld.pid
drwx------ 2 mysql mysql 4096 Oct 26 19:36 test
drwx------ 2 mysql mysql 4096 Oct 30 10:29 wprs
wrps:/var/lib/mysql #
また投稿されたコンテンツは wordpress/wp-content/upload の下に固定データとして残ります。
wrps:/srv/www/htdocs/wordpress/wp-content/uploads/2012/10 # ls -al
total 1432
drwxr-xr-x 2 wwwrun www 4096 Oct 31 13:29 .
drwxr-xr-x 3 wwwrun www 4096 Oct 31 07:25 ..
-rw-r--r-- 1 wwwrun www 8866 Oct 31 13:21 12A25a-150x150.jpg
-rw-r--r-- 1 wwwrun www 21298 Oct 31 13:21 12A25a-300x201.jpg
/srv をバックアップするなり別パーティションとするということです。
-Keyword-
How to install Wordpress on SUSE Linux SLES11 MySQL 403 Forbidden
islandcenter.jp