ブログを立ち上げるにあたって、久しぶりに FreeBSD で WordPress を使えるようセットアップ(5年ぶりくらい?)しました。
が、まったく思い出せず試行錯誤した際のメモです。
FreeBSD で WordPress をセットアップしたいという方に向けて、参考になればと思います。
まぁ、あまりいないと思いますが・・・
環境
- FreeBSD 12.1-RELEASE
- Apache24-2.4.43
- WordPress 5.3.2.1
- MySQL 8.0.19
- PHP 7.2.30
FreeBSD と Apache はインストール済みの前提です。
インストール
WordPress のインストールそのものは pkg でサクッとやれますが、php 系の依存パッケージがあまりついてこないようです。
Ubuntu の apt の親切な挙動に慣れているとちょっと不安になりますね。
# pkg install wordpress
# pkg install php72-mysqli php72-mbstring php72-dom \
php72-exif php72-fileinfo php72-openssl php72-iconv \
php72-pecl-imagick mod_php72-filter mysql80-server
使用する WordPress のテーマによっては、手動で php72-XXX をもう少し追加インストールする必要があるかもしれません。
また、FreeBSD の pkg の WordPress は少々古いようで、依存でインストールされる PHP のバージョンも少し古いです。
この記事を書いている現時点でも推奨バージョンは 7.3 以降ということなので、WordPress 自体は pkg を使うのではなくダウンロードしてインストールしたほうが良いかもしれません(php74 系をインストールすると、WordPress はアンインストールされます)。
MySQL 設定
WordPress が使用するデータベースを作成します。
まずは定番の、サービスの有効化設定を /etc/rc.conf
に書き込みます。
# echo 'mysql_enable="YES"' >> /etc/rc.conf
WordPress は初期状態では MySQL に対して native password でアクセスするようなので、そのままでは認証が通りません。
以下のように my.cnf の mysqld セクションに設定を追加しておきます。
# vi /usr/local/etc/mysql/my.cnf
:
[mysqld]
:
:
default-authentication-plugin = mysql_native_password
:
以下を参考にさせていただきました。
MySQL の daemon を起動してから、初期設定を実行します。
# /usr/local/etc/rc.d/mysql-server start
Starting mysql.
# mysql_secure_installation
mysql_secure_installation: [ERROR] unknown variable 'prompt=\u@\h [\d]>\_'.
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT 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 component?
Press y|Y for Yes, any other key for No:y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:1 # <= ここはお好みで
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) :y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
初期設定を終えたら、設定したパスワードを使って MySQL のコンソールに入り、WordPress 用の DB とユーザーを作成します。
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.19 Source distribution
Copyright (c) 2000, 2020, 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.
root@localhost [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
root@localhost [(none)]> create user wp_user identified by '${YOUR_PASSWORD}';
Query OK, 0 rows affected (0.01 sec)
root@localhost [(none)]> grant all on wordpress.* to wp_user;
Query OK, 0 rows affected (0.00 sec)
作成したら、wp_user に適切な権限が設定されていることを確認してから flush します。
root@localhost [(none)]> show grants for wp_user;
+--------------------------------------------------------+
| Grants for wp_user@% |
+--------------------------------------------------------+
| GRANT USAGE ON *.* TO `wp_user`@`%` |
| GRANT ALL PRIVILEGES ON `wordpress`.* TO `wp_user`@`%` |
+--------------------------------------------------------+
2 rows in set (0.00 sec)
root@localhost [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
root@localhost [(none)]> quit
Bye
PHP 設定
MySQL に比べると、PHP はあまりやることはありません。
# cd /usr/local/etc
# cp -a php.ini-production php.ini
基本的にはこれだけですが、デフォルトではアップロードの最大サイズが 2MB なので、必要に応じて以下を変更しておくとよいでしょう。
upload_max_filesize だけだと POST サイズ上限にひっかかるので、post_max_size(デフォルトは 8M)も変更しておきます。
post_max_size = 8M
upload_max_filesize = 2M
WordPress 設定
WordPress のファイルは、FreeBSD 標準では /usr/local/www/wordpress
下にインストールされます。
実体は php のファイル群です。
この wordpress
ディレクトリ内の設定ファイル(設定ファイルも php)を変更した上で、これらをごそっと Apache の DocumentRoot 以下に好きな場所においてやれば、ブラウザ上で WordPress が動作するようになります。
設定は、wp-config.php に対して行います。
まずは先ほど設定した MySQL の DB 情報を設定します。
データベース接続エラーの9割くらいはこの設定のミスが原因ですので、慎重に行いましょう。
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'wp_user' );
/** MySQL database password */
define( 'DB_PASSWORD', 'YOUR_PASSWORD' );
次に、鍵情報を生成します。
wp-config.php 内にも書いてある通り、WordPress.org secret-key service にアクセスすることで生成できます。
# curl https://api.wordpress.org/secret-key/1.1/salt/
define('AUTH_KEY', 'XXXXXXXXXXXXX');
define('SECURE_AUTH_KEY', 'XXXXXXXXXXXXX');
define('LOGGED_IN_KEY', 'XXXXXXXXXXXXX');
define('NONCE_KEY', 'XXXXXXXXXXXXX');
define('AUTH_SALT', 'XXXXXXXXXXXXX');
define('SECURE_AUTH_SALT', 'XXXXXXXXXXXXX');
define('LOGGED_IN_SALT', 'XXXXXXXXXXXXX');
define('NONCE_SALT', 'XXXXXXXXXXXXX');
こんな感じで生成されるので、これを wp-config.php 内の該当箇所と置き換えておきます。
wp-config.php を更新したら、/usr/local/www/wordpress/
以下のファイルを、DocumentRoot 下の任意の場所へコピーします。
# cp -a /usr/local/www/wordpress/* /usr/local/www/apache24/data/blog/
あとはブラウザで https://hplugr2.zapto.org/blog にアクセスして WordPress の管理画面が表示されたら完了です。
おつかれさまでした。
コメント
昨今、日本語・個人でFreeBSDの記事を書いていらっしゃる方が少ないので、参考になりました。ありがとうございます。
コメントありがとうございます!
あくまで自分用のメモで適当に書いているだけなので、逆に恐縮です。。
こういうのをやると、やはり Ubuntu とか Linux 系はよくできてるな・・・と思いますね。