WordPress をVine Linux へインストール

インストール状況の確認

まずは、WordPress のサーバー要求事項を確認します

  • PHP バージョン 5.2.4 以上
  • MySQL バージョン 5.0.15 以上

 っという事なので、自分の環境のインストール状態を確認します

$ rpm -qa | grep -i php
php5-apache2-5.5.36-1vl6.i686
php5-mysql-5.5.36-1vl6.i686
php5-pear-5.5.36-1vl6.i686
php5-5.5.36-1vl6.i686
php5-pdo-5.5.36-1vl6.i686

php はすでにインストールされているようです。
次に、公開されているMySQLのパッケージを確認します

$ rpm -qa | grep -i mysql

今度は、何も出来きませんから、インストールされていないようです
インストールしなければ、いけませんね。

MySQL のインストール

バージョンが違うからなのか、ちょっと違うところもありましたが、私は下記を参考にさせていただきました
【Vine Linuxで自宅サーバー】MySQLの導入

パッケージ管理ツールで、MySQLのパッケージ名を調べます

$ apt-cache search mysql
MySQL-client - MySQL - Client
・・・・
MySQL-server - MySQL: a very fast and reliable SQL database server
MySQL-client - MySQL - Client
・・・・
・・・・
・・・・

結構沢山出来ていきました
この中で必要なのは次の3つのようです

MySQL-client
MySQL-server
php5-mysql

パッケージ管理ツール [apt]でインストールします
ただし、インストールには管理者権限が必要なので、「sudo」コマンドを使います

$ sudo apt-get install MySQL-client MySQL-server php5-mysql

インストールが完了しました。
最初私は、php5-mysql を忘れていて、WordPress の設定画面までいって「エラー」になってしまい、かなり遠回りしてしまいました。


次に、文字コードを「PHP」と「MySQL」で合わせておいたほうがよいようです。
まず、「PHP」を確認します。設定ファイルは、「/etc/php5/php.ini」で、「mbstring.internal_encoding」の項目で設定されているようです
設定ファイルを「cat」コマンドで表示させ、確認しますが、行が沢山あって大変です。こんな時には、「|」パイプが使えます。
全部の内容を「grep」コマンドに渡し、その横に書いた検索したいキーワードで表示内容を絞る事ができます

$ cat /etc/php5/php.ini | grep mbstring.internal_encoding
mbstring.internal_encoding = UTF-8

よかったです。一般的な「UTF-8」で設定されていました。
文字コードには、「シフトJIS」や「EUC」「JIS」などがあるようですが、「UTF-8」がいいようです。
詳細はよく調べていませんが、あまり考えず、「MySQL」でも同じにします
設定ファイルは、/etc/my.cnf のようですが、私の環境ではこのファイルは存在しませんでした。
調べると、MySQLのインストールディレクトリの中の、my-medium.cnf のファイルをコピーして使うようです。
MySQLのインストールディレクトリは /usr/share/mysql/ だったのでコピーして vi で編集します・・

$ sudo cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
$ sudo vi /etc/php5/php.ini

[mysqld]の項目に下記を追記
default-character-set=utf8
skip-character-set-client-handshake
意味は、
・デフォルトのサーバ文字コードを指定する
・サーバーの文字コード設定をクライアントでもそのまま使うようにする
のようです。あまり考えず、その通りに編集して保存します。
ちなみに、vi エディタでは、ファイルを開いた後は、コマンドモードになっているのでその状態で「:/mysqld」と打ち込むと、検索できます。
思惑の行でなかった場合は、「n」キーを押すと次へジャンプします
そんな感じで [mysqld] 項目を探し、上記のコードを追加します。
サーバー機を再起動しても、自動的に起動できるように、設定し、起動させます

$ sudo chkconfig mysql on

確認します

$ sudo chkconfig --list mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off

2~5が「on」であれば大丈夫です。MySQLを起動させましょう。

$ sudo /etc/init.d/mysql restart
Shutting down MySQL..... SUCCESS!
Starting MySQL. SUCCESS!

いよいよ、MySQLを立上げますが、作成直後は管理ユーザー「root」でもパスワードなしで入れるようです。

$ sudo mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.73-log VineLinux MySQL RPM


MySQLの設定

MySQLが立ち上がっていると、プロンプトが変わるので[MySQL]モード中なのが分かります

まずは、初期状態での、ユーザー、ホスト、パスワードを確認します
     ※ホスト名は、ここでは仮として「hogehoge.com」で進めます

mysql> select user,host,password from mysql.user;

+------+--------------+----------+
| user | host         | password |
+------+--------------+----------+
| root | localhost    |          |
| root | hogehoge.com |          |
| root | 127.0.0.1    |          |
|      | localhost    |          |
|      | hogehoge.com |          |
+------+--------------+----------+

・パスワードが未だ設定されていないので、設定します。
サーバー機で直接設定する場合は、localhost だけでいいかもしれませんが
私の場合、別のPCから設定するので、外部からのホスト名用のrootパスワードも設定します

localhost の root パスワードの設定

mysql> set password for root@localhost=password('パスワード');
Query OK, 0 rows affected (0.00 sec)

・hogehoge.com の root パスワードの設定

mysql> set password for root@hogehoge.com=password('パスワード');
Query OK, 0 rows affected (0.00 sec)

・確認します

mysql> select user,host,password from mysql.user;

+------+--------------+-------------------------------------------+
| user | host         | password                                  |
+------+--------------+-------------------------------------------+
| root | localhost    | *1234567890ABCDEFGHIJGMLN1234567890ABCDEF |
| root | hogehoge.com | *1234567890ABCDEFGHIJGMLN1234567890ABCDEF |
| root | 127.0.0.1    |                                           |
|      | localhost    |                                           |
|      | hogehoge.com |                                           |
+------+--------------+-------------------------------------------+

パスワードが設定されたのが分かります。
内容は暗号化されているので、設定した内容とは同じにはなりません。

・名前のない、匿名ユーザーを削除し確認

mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.00 sec)

mysql> select user,host,password from mysql.user;
+------+--------------+-------------------------------------------+
| user | host         | password                                  |
+------+--------------+-------------------------------------------+
| root | localhost    | *6F333411CDA0B714A73F4FFC679591D420DB5DD7 |
| root | hogehoge.com | *6F333411CDA0B714A73F4FFC679591D420DB5DD7 |
| root | 127.0.0.1    |                                           |
+------+--------------+-------------------------------------------+
3 rows in set (0.00 sec)
    

MySQL の下準備は完了しました
いよいよ、WordPress 用の設定をします。
下記が参考になります

WordPress のインストール - WordPress Codex 日本語版


まずは、WordPress に必要な情報をまとめておきます。

  • データベース名:WpDatabase
  • ユーザー名:WpUser
  • パスワード:WpPassword
  • ローカルホスト:Hogehoge.com

次に、MySQL に設定をしていきます。
上記サイトによると、「cPanel」「phpMyAdmin」のツールが使えるみたいですが、
そのインストールも面倒なので、シェルでおこってみます

  1. 管理者権限で、MySQL起動
  2. WordPress用のデータベース作成
  3. WordPress用ユーザー作成と、権限付与
  4. 権限の反映

の操作を行います。

$ sudo mysql -u root -p
Enter password:「パスワード」
Welcome to the MySQL monitor.  Commands end with ; or \g.    
 ・
 ・
mysql> Create database :WpDatabase;
Query OK, 1 row affected (0.39 sec)

mysql> GRANT ALL PRIVILEGES ON :WpDatabase.* TO "WpUser"@"Hogehoge.com"
    -> IDENTIFIED BY "WpPassword";
Query OK, 0 rows affected (0.39 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
   

WordPres インストール

WordPress をダウンロード
適当な、ダウンロードスペースに、ダウンロードします。
私は、ホームディレクトリの「Download」ディレクトリへダウンロードします
ダウンロードには「wget」コマンドを使用します

・展開
展開には、「tar」コマンドを使用します。
コマンドのオプションは「xvzf」

  • x  展開する
  • v 進行状態を表示
  • z 圧縮ファイルに対応
  • f ファイル名指定
$ tar xvzf wordpress-4.9.5-ja.tar.gz
wordpress/
wordpress/wp-mail.php
wordpress/wp-links-opml.php
・
・
wordpress/wp-content/plugins/akismet/akismet.php
wordpress/wp-content/plugins/akismet/class.akismet-rest-api.php
wordpress/xmlrpc.php
wordpress/wp-config-sample.php

・展開した、WordPressディレクトリを、サーバーの公開場所へ移動

$ sudo mv ./wordpress/ /home/httpd/html    

・実際保存されたディレクトリとWeb上でのアドレスを紐付けします
・紐付けは、apacheの設定ファイル「apache2.conf」を編集します

$ sudo vi /etc/apache2/conf/apache2.conf    

・apache2.conf に、下記のコマンドを追加します
・Alias は別名の意味で「Alias "Web上のアドレス" "実際のディレクトリ"」となります

  ・
  ・
Alias /blog /home/httpd/html/wordpress

設定は終了です。apache を再起動します。

$ sudo /etc/init.d/apache2 restart 
Apache2 HTTP Serverを停止中:      [  OK  ]
Apache2 HTTP Serverを起動中:      [  OK  ]

さあこれで、動いてくれるはず・・・

Webに接続してみます。 http://hogehoge.com/blog

f:id:kazuban:20180502141346p:plain

やったぁ!WordPress の設定画面が出てきました。
とりあえず、PHPMySQL は正常に動き出したようですね !(^^)!
・・・

ところが、次のページに必要事項を入力後、次へ進むとエラー発生!

f:id:kazuban:20180502141929p:plain

う~ん!
良く分かりませんが、データベースとその管理ユーザーは、「localhost」でも作成しなけらばいけないのかもしれません。MySQL の GRANTコマンドで作成します

mysql> GRANT ALL PRIVILEGES ON :WpDatabase.* TO "WpUser"@"localhost" 
    -> IDENTIFIED BY "WpPassword";

やった、とりあえず一歩進みましたが、またエラー!!!

f:id:kazuban:20180502142943p:plain

wp-config.php というファイルがWordPress の設定ファイルのようですが
たぶんファイル権限の関係で、Web上からのWordPress がそのファイルを
書き換える事ができないのだと思います
とりあえず、力づくで、手動で編集してしまいます。
WordPress」を展開したディレクトリへ移動して、内容を確認してみます

$ cd /home/httpd/html/wordpress
$ ls
index.php             wp-config-sample.php  wp-mail.php
license.txt           wp-content/           wp-settings.php
readme.html           wp-cron.php           wp-signup.php
wp-activate.php       wp-includes/          wp-trackback.php
wp-admin/             wp-links-opml.php     xmlrpc.php
wp-blog-header.php    wp-load.php
wp-comments-post.php  wp-login.php

なるほど、 wp-config-sample.php という、サンプルファイルが用意されていました。
これを、wp-config.php というファイル名でコピーして編集する事にします

$ cp -p wp-config-sample.php wp-config.php
$ vi wp-config.php 
  ・
  ・
/** WordPress のためのデータベース名 */
define('DB_NAME', 'database_name_here');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'username_here');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password_here');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');
  ・
  ・

これを、下記のように、編集しました。

/** WordPress のためのデータベース名 */
define('DB_NAME', 'WpDatabase');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'WpUser');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'WpPassword');

/** MySQL のホスト名 */
define('DB_HOST', 'Hogehoge.com');

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

先ほど、ファイル権限らしきエラーが出たので、権限を変更しておきます
まず、apache の設定ファイルをみると、下記の設定がみつかります

  ・
  ・
User apache
Group apache
  ・
  ・

これは、Web側から、サーバーにアクセスする場合、
ユーザー名「apache」のグループ名「apache」でアクセスするという事です。
したがって、Web上のWordPress がWordPessディレクトリ 内へ
アップロードしたり更新したりする場合、
apache」ユーザーを許可する必要があります
ちょっと、セキュリティ的に不安がありますが、下記サイトを見る限り
大丈夫なようです。

WordPressのファイルのパーミッションはどうすべきなのか

っという事で、WordPress ディレクトリはapache を所有者にしようと思います
「chown」コマンドを使用します。apache:apache で「ユーザー」「グループ」
を変更する。-R オプションで、指定ディレクトリを再帰的に変更します

$ cd /home/httpd/html/ 
$ chown -R apache:apache ./wordpress/

やった!ついに動きだしました!!

http://kazuban.com/blog/

f:id:kazuban:20180502160424p:plain