2017年10月6日金曜日

FreeBSD 11にpkgを使ってwordpressをインストールする

先日、必要があってFreeBSD 11にpkgを使ってwordpressをインストールしたので、その時を記録を以下に示します。

このインストールには以下のWWWページを参照しました。
How to Install WordPress on FreeBSD 11 with Apache, PHP and MySQL
https://linoxide.com/webserver/install-wordpress-freebsd-11-apache-php-mysql/
以下がその記録です。

まずapache24とmqsql56-serverをインストールします。
$ sudo pkg install apache24

$ sudo pkg install mysql56-server


$
これらのサーバーを起動します。
$ sudo sysrc apache24_enable=YES mysql_enable=YES
$ sudo service apache24 start

$ sudo service mysql-server start


$
mysqlにパスワードなどを設定します。
$ sudo mysql_secure_installation

Securing the MySQL server deployment.
Connecting to MySQL server using password in '/root/.mysql_secret'
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: n
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) :  n

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

$ sudo mysql -u root -p
Password: xxxxx
Enter password: yyyyy
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.7.19-log Source distribution
...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

root@localhost [(none)]> CREATE DATABASE wordpressdb;
Query OK, 1 row affected (0.01 sec)

root@localhost [(none)]> CREATE USER wordpressuser@localhost IDENTIFIED BY 'IotIpsj_2017';
Query OK, 0 rows affected (0.00 sec)

root@localhost [(none)]> GRANT ALL PRIVILEGES ON wordpressdb.* TO 'wordpressuser'@'localhost';
Query OK, 0 rows affected (0.01 sec)

root@localhost [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

root@localhost [(none)]> EXIT;
Bye
$
WordPressとmod_phpをインストールします。これで必要なパッケージはインストールされるはずです。
$ sudo pkg install ja-wordpress

$ sudo pkg install mod_php56
次にPHPの設定ファイルを置きます。
$ sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
そしてapcheでPHPを取り扱えるようにします。
$ sudo vi /usr/local/etc/apache24/Includes/php.conf

    <IfModule dir_module>
        DirectoryIndex index.php index.html
        <FilesMatch "\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>
        <FilesMatch "\.phps$">
            SetHandler application/x-httpd-php-source
        </FilesMatch>
    </IfModule>
これらの設定後、インストールしたWordPressのサイトをWWWブラウザで開きます。
$ firefox http://www.example.com/wordpress
そして現れた画面で必要な設定をしていきます。まず[さあ、始めましょう]をクリックして以下の値を設定します。
データベース名: wordpressdb
ユーザー名: wordpressuser
パスワード: xxxx
データベースのホスト名: localhost
テーブル接頭辞: wp_

そして[送信]を押します。すると、うまく書き込めないというエラーメッセージが出たので、画面の指示に従って、設定をviなどで書き込みます。
$ sudo vi wp-config.php

現れた画面をcopy&paste

$ sudo chown www:www wp-config.php
そして、次の画面に進み、またサイトの情報を入力します。
サイトのタイトル: Web Pages
ユーザー名: adminuser
パスワード: xxxxxxx
メールアドレス: abc@example.com
検索エンジンでの表示>   [ ]
これでほぼ終わりです。

最後に、WordPressの管理者でログインしてモジュールを更新します。
すると、FTPの設定をしなければならないという警告が出ます。これは以下のページのように、ファイルの所有者を変更しました。
WordPressのモジュールの更新
http://www.sandalot.com/wordpress%E6%9B%B4%E6%96%B0%E3%81%A7ftp%E5%85%A5%E5%8A%9B%E7%94%BB%E9%9D%A2%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/

プラグインのアップデートなどの際にFTP関連設定を入力しなければいけなくなる場合があります。
『要求されたアクションを実行するには、WordPress が Web サーバーにアク
セスする必要があります。』と出てくるあの画面のことです。
              
chownでWordPressファイルのオーナーを変更する

問題の画面は、スクリプトの実行ユーザーとファイルやフォルダを作成した際のオーナーが異なることにあるそうです。

もう少し具体的には、『wp-admin/includes/file.php』の中で、まず仮のファイルを作成し、そのオーナー(つまりUID)をfileowner()で取得しています。そして、getmyuid()でスクリプト実行者のUIDを取得して、両者を比較します。

それらが同じならそのままダウンロードする、同じでなければFTP情報を入力する画面を表示する、という条件分岐を行なっています。

なので、スクリプト実行者をファイル作成者を合わせるために、以下のようにファイルオーナーを変更します。
       
chown -R apache:apache (WordPressを設置したディレクトリの名称)
以下のようにしました。          
$ cd /usr/local/www/wordpress/
$ sudo chown -R www:www .
$