Raspberry Pi 3 Model B+ 上の OpenBSD 7.0 環境に Apache/PHP/MariaDB をインストールする手順です。
Apache/PHP/MariaDB の基本的な設定変更までを行います。
パッケージをインストールします。
raspberrypi# pkg_add mariadb-server
quirks-4.53 signed on 2021-10-15T18:58:49Z
quirks-4.53: ok
mariadb-server-10.6.4p2v1:nghttp2-1.44.0: ok
mariadb-server-10.6.4p2v1:curl-7.79.0: ok
mariadb-server-10.6.4p2v1:xz-5.2.5: ok
mariadb-server-10.6.4p2v1:libiconv-1.16p0: ok
mariadb-server-10.6.4p2v1:libxml-2.9.12: ok
mariadb-server-10.6.4p2v1:lz4-1.9.3p0: ok
mariadb-server-10.6.4p2v1:lzo2-2.10p2: ok
mariadb-server-10.6.4p2v1:snappy-1.1.8: ok
mariadb-server-10.6.4p2v1:mariadb-client-10.6.4v1: ok
mariadb-server-10.6.4p2v1:p5-Params-Util-1.07p2: ok
mariadb-server-10.6.4p2v1:p5-Math-Base-Convert-0.11p0: ok
mariadb-server-10.6.4p2v1:p5-Clone-0.45: ok
mariadb-server-10.6.4p2v1:p5-Module-Runtime-0.016p0: ok
mariadb-server-10.6.4p2v1:p5-SQL-Statement-1.414: ok
mariadb-server-10.6.4p2v1:p5-Net-Daemon-0.48p1: ok
mariadb-server-10.6.4p2v1:p5-PlRPC-0.2020p0: ok
mariadb-server-10.6.4p2v1:p5-FreezeThaw-0.5001p0: ok
mariadb-server-10.6.4p2v1:p5-MLDBM-2.05p0: ok
mariadb-server-10.6.4p2v1:p5-DBI-1.643: ok
mariadb-server-10.6.4p2v1:p5-DBD-MariaDB-1.21p3: ok
mariadb-server-10.6.4p2v1:bzip2-1.0.8p0: ok
mariadb-server-10.6.4p2v1:pcre2-10.36: ok
mariadb-server-10.6.4p2v1: ok
起動スクリプトは /etc/rc.d ディレクトリ以下に配置されます。
raspberrypi# ls -l /etc/rc.d/mysqld
-rwxr-xr-x 1 root bin 206 Sep 27 10:51 /etc/rc.d/mysqld
設定ファイルは /etc ディレクトリ以下に配置されます。
raspberrypi# ls -l /etc/my.cnf
-rw-r--r-- 1 root wheel 452 Oct 21 22:48 /etc/my.cnf
本稿では以下の方針例の通り設定ファイルの編集 (各設定値の変更) を行うこととします。
バッファプールのサイズ | 64M に変更 |
---|---|
同時接続数 | 15 に変更 |
文字コードの設定 | UTF8 に変更 |
以下は編集後の /etc/my.cnf の内容例となります。
[client-server]
#socket=/var/run/mysql/mysql.sock
#port=3306
# This will be passed to all MariaDB clients
[client]
#password=my_password
default-character-set=utf8
# The MariaDB server
[mysqld]
# To listen to all network addresses, use "bind-address = *"
bind-address=localhost
# Directory where you want to put your data
#data=/var/mysql
# This is the prefix name to be used for all log, error and replication files
#log-basename=mysqld
# Logging
#general-log
#slow_query_log
character-set-server=utf8
innodb_buffer_pool_size=64M
max_connections=15
MariaDB データディレクトリを初期化して、システムテーブルを作成します。
raspberrypi# /usr/local/bin/mariadb-install-db
Installing MariaDB/MySQL system tables in '/var/mysql' ...
OK
MariaDB を起動します。
raspberrypi# rcctl start mysqld
mysqld(ok)
MariaDB に root ユーザで接続します。
※パスワードは設定されていないため指定不要です。
raspberrypi# /usr/local/bin/mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.4-MariaDB OpenBSD port: mariadb-server-10.6.4p2v1
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
root ユーザのパスワードを設定します。
以下はパスワードを『Password1234』の文字列に設定する場合の例となります。
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Password1234';
Query OK, 0 rows affected (0.025 sec)
MariaDB [(none)]>
MariaDB との接続を切断します。
MariaDB [(none)]> quit
Bye
MariaDB の自動起動が行われるようにする場合は、rcctl コマンドで mysqld を有効化します。
raspberrypi# rcctl enable mysqld
/etc/rc.conf.local に以下の設定が追加されます。
pkg_scripts=mysqld
MariaDB のログファイルは切り替え後にフラッシュ操作が必要となるため、本稿では手動でログローテーションを行うこととします。
※newsyslog の設定だけではログローテーションは完結しない形となります。
ログファイルの切り替えを行います。
本稿では日付 (_YYYYMMDD) のサフィックスを付与することとします。
raspberrypi# mv /var/mysql/raspberrypi.err /var/mysql/raspberrypi.err_`/bin/date '+%Y%m%d'`
フラッシュ操作を行います。
mysqladmin flush-logs コマンド実行後、パスワード入力のプロンプトが表示されます。
パスワードを入力します。
raspberrypi# /usr/local/bin/mysqladmin -u root -p flush-logs
Enter password:
新規ログファイルの作成とオープンが行われます。
raspberrypi# ls -l /var/mysql/raspberrypi.err*
-rw-rw---- 1 _mysql _mysql 0 Oct 21 23:00 /var/mysql/raspberrypi.err
-rw-rw---- 1 _mysql _mysql 1500 Oct 21 23:00 /var/mysql/raspberrypi.err_20211021
パッケージをインストールします。
raspberrypi# pkg_add apache-httpd
quirks-4.53 signed on 2021-10-15T18:58:49Z
apache-httpd-2.4.51:apr-1.6.5p0: ok
apache-httpd-2.4.51:db-4.6.21p7v0: ok
apache-httpd-2.4.51:apr-util-1.6.1p2: ok
apache-httpd-2.4.51:jansson-2.13.1: ok
apache-httpd-2.4.51:pcre-8.44: ok
apache-httpd-2.4.51:brotli-1.0.9p0: ok
apache-httpd-2.4.51: ok
MPM のデフォルトは prefork となります。
raspberrypi# /usr/local/sbin/httpd2 -V
Server version: Apache/2.4.51 (Unix)
Server built: Oct 11 2021 16:10:37
Server's Module Magic Number: 20120211:118
Server loaded: APR 1.6.5, APR-UTIL 1.6.1
Compiled using: APR 1.6.5, APR-UTIL 1.6.1
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/var/www"
-D SUEXEC_BIN="/usr/local/sbin/suexec2"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/etc/apache2/httpd2.conf"
起動スクリプトは /etc/rc.d ディレクトリ以下に配置されます。
raspberrypi# ls -l /etc/rc.d/apache2
-rwxr-xr-x 1 root bin 351 Oct 12 07:18 /etc/rc.d/apache2
設定ファイルは /etc/apache2 ディレクトリ以下に配置されます。
raspberrypi# ls -l /etc/apache2/httpd2.conf
-rw-r--r-- 1 root wheel 21671 Oct 21 23:06 /etc/apache2/httpd2.conf
/etc/apache2/httpd2.conf の『ServerName』の設定を変更します。
以下は ServerNameを『raspberrypi』とする場合の例となります。
#ServerName www.example.com:80
ServerName raspberrypi
Apache を起動します。
raspberrypi# rcctl start apache2
apache2(ok)
DocumentRoot (/var/www/htdocs ディレクトリ) に配置された index.html にアクセスします。
以下例の通り HTML ソースが表示されることを確認します。
raspberrypi# /usr/local/bin/curl http://localhost/index.html
<html><body><h1>It works!</h1></body></html>
Apache の自動起動が行われるようにする場合は、rcctl コマンドで apache2 を有効化します。
raspberrypi# rcctl enable apache2
/etc/rc.conf.local の『pkg_scripts=mysqld』の既存の設定に『apache2』が追加されます。
pkg_scripts=mysqld apache2
/etc/newsyslog.conf にログローテーションの設定を追加します。
本稿では OpenBSD のデフォルト Web サーバ用の既存の設定を流用することとします。
以下は /var/www/logs/access_log と /var/www/logs/error_log に対して、毎日 00:00 に gzip 圧縮を行い 7 世代保存を行う場合の例となります。
#/var/www/logs/access.log 644 4 * $W0 Z "pkill -USR1 -u root -U root -x httpd"
#/var/www/logs/error.log 644 7 250 * Z "pkill -USR1 -u root -U root -x httpd"
/var/www/logs/access_log 644 7 * @T00 Z "pkill -USR1 -u root -U root -x httpd2"
/var/www/logs/error_log 644 7 * @T00 Z "pkill -USR1 -u root -U root -x httpd2"
パッケージをインストールします。
本稿では PHP のバージョンは 7.4 を選択することとします。
また mysqli の拡張モジュールも併せてインストールすることとします。
raspberrypi# pkg_add php-apache-7.4.24 php-mysqli-7.4.24
quirks-4.53 signed on 2021-10-15T18:58:49Z
php-apache-7.4.24:femail-1.0p1: ok
php-apache-7.4.24:femail-chroot-1.0p3: ok
php-apache-7.4.24:argon2-20190702: ok
php-apache-7.4.24:libsodium-1.0.18p1: ok
php-apache-7.4.24:oniguruma-6.9.7.1: ok
php-apache-7.4.24:gettext-runtime-0.21p1: ok
php-apache-7.4.24:php-7.4.24: ok
php-apache-7.4.24: ok
php-mysqli-7.4.24: ok
設定ファイルは /etc ディレクトリ以下に配置されます。
raspberrypi# ls -l /etc/php-7.4.ini
-rw-r--r-- 1 root wheel 72586 Oct 21 23:17 /etc/php-7.4.ini
/etc/php-7.4.ini の『date.timezone = UTC』の設定をコメントアウト (または削除) して、『date.timezone = Asia/Tokyo』の設定を追加します。
;date.timezone = UTC
date.timezone = Asia/Tokyo
/etc/php-7.4.ini に『mbstring.language = Japanese』の設定を追加 (コメントアウトを解除) します。
;mbstring.language = Japanese
mbstring.language = Japanese
mysqli の拡張モジュールをロードする設定を追加します。
設定ファイルの雛型をコピーして /etc/php-74/mysqli.ini を新規作成します。
raspberrypi# cp -p /etc/php-7.4.sample/mysqli.ini /etc/php-7.4/mysqli.ini
PHP モジュールをロードする設定と PHP ファイルに関するハンドラの設定を追加します。
設定ファイルの雛型をコピーして /var/www/conf/modules/php-7.4.conf を新規作成します。
raspberrypi# cp -p /var/www/conf/modules.sample/php-7.4.conf /var/www/conf/modules/php-7.4.conf
設定の反映 (Apache の再起動) を行います。
raspberrypi# rcctl restart apache2
apache2(ok)
apache2(ok)
/var/www/htdocs/test.php を新規作成します。
以下は内容例となります。
<?php
$link = mysqli_connect( "localhost", "root", "Password1234" );
if( mysqli_connect_errno() ){
printf( "Connect failed: %s\n", mysqli_connect_error() );
exit();
}
printf( "Server version: %s\n", mysqli_get_server_info($link) );
mysqli_close( $link );
?>
test.php にアクセスします。
以下例の通り MariaDB のバージョンが表示されることを確認します。
raspberrypi# curl http://localhost/test.php
Server version: 5.5.5-10.6.4-MariaDB