Wordpress を SUSE Linux (SLES11) で動かす

ここではイントラネットで利用することを目標にCMS(コンテンツ管理システム)の代表である Wordpress を SUSE Linux 11 sp2 (SLES11sp2)に導入する手順を記します。

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サーバーが良いでしょう)

- PHP5 を PHP5.3 にアップグレード 5.3 では動きませんでした。
- YsST > Runlevel Editor > MySQL を RunLevel 3,5 で起動させます。デフォルトでは停止しています。

- YaST > HTTP Server で Apache2 を自動起動します。

- その際、同時に PHP scripting を有効に
   PHP が無効な場合 xxxxx.php をダウンロードしようとします。

Wordpress を SUSE Linux (SLES11) で動かす_a0056607_144278.jpg

MySQL はhttp サーバと共にインストールれますが起動されません。runlevel 3,5 で起動させます。

PHP は有効にします。有効にしないと xxxxx.php をブラウザから開くと「ダウンロード」になります。
Wordpress を SUSE Linux (SLES11) で動かす_a0056607_14435125.jpg

apache2 HTTP サーバを YaST からインストールする際に PHP を有効にします。

インストール後であれば YaST > HTTPserver > Server Module から PHP5 を Enable にします。
Wordpress を SUSE Linux (SLES11) で動かす_a0056607_1505690.jpg




-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 は任意ですが、後に変更できません。wppasswd も任意ですが、これがデータベースのパスワードになります。 (テキスト保存されるのでセキュリティ上、要注意です) '管理者名'@'localhost' と 'パスワード' がシングルクォーテーションで囲まれているところに注意してください。また、コマンドの最後はセミコロン(;) で終わります。(よく忘れます)


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/ を開きます。
Wordpress を SUSE Linux (SLES11) で動かす_a0056607_1552476.jpg


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


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

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


「ようこそ」画面が出てきたらこっちのもの
Wordpress を SUSE Linux (SLES11) で動かす_a0056607_15563270.jpg

※この時点で wp-config.php を削除すると、もう一度楽しめます。

サイトのタイトルと管理者名:パスワードを設定
Wordpress を SUSE Linux (SLES11) で動かす_a0056607_1557364.jpg


これでログインします。
Wordpress を SUSE Linux (SLES11) で動かす_a0056607_15583635.jpg


これで完成
Wordpress を SUSE Linux (SLES11) で動かす_a0056607_1559893.jpg

※このようにレイアウトが壊れている場合は、画像やスタイルのリンク先が 'localhost' になっているからです。これも修正が必要です。

あとは Admin から左側の「人型」アイコンからユーザを追加します。
Wordpress を SUSE Linux (SLES11) で動かす_a0056607_11303839.jpg


-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
by islandcenter | 2012-11-15 14:03 | SUSE | Comments(0)