FreeBSD + Nginx + PHP + MariaDBの環境を構築
ローカルの仮想マシンにウェブ開発環境を設定しているときの覚書。
初期設定は前の記事を参考に。
参考: FreeBSD13.1の仮想マシンをインストールして初期設定
環境: FreeBSD 14.0
OSのバージョン確認
# freebsd-version
14.0-RELEASE-p6
インストール済みのパッケージ情報を表示。
# pkg info
自動起動するサービスはbsdconfigが一覧で分かりやすい。
# bsdconfig
1.nginxのインストール
公式リポジトリを検索。
# pkg search nginx
インストールしてconfの場所などビルドオプション確認。
# pkg install nginx
# nginx -V
nginx version: nginx/1.24.0built with OpenSSL 3.0.12 24 Oct 2023TLS SNI support enabledconfigure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --user=www --group=www ...
自動起動ON、起動、確認。
# service nginx enable
# service nginx start
# service nginx status
設定ファイルを編集。
# cd /usr/local/etc/nginx/
# less nginx.conf
worker_processes auto;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;include /usr/local/etc/nginx/conf.d/*.conf;}
conf.dを作る。
# mkdir conf.d
testしてnginx再起動。
# nginx -t
# service nginx restart
2. php8.3をインストール
pkg経由でインストール。
php-fpmとmysqlndはデフォルトでバンドルされていた。
php83-filterとphp83-mysqliはphpMyAdminのために必要。
(phpMyAdmin6.0からはmysqlndを使うらしい)
php83-pharはwp-cliを実行するのに必要。
# pkg search php8
# pkg install php83 php83-curl php83-filter php83-gd php83-mbstring php83-mysqli php83-session php83-xml php83-zip php83-phar
確認。
# php --version
# php-fpm --version
PHP 8.3.6 (fpm-fcgi) (built: Apr 18 2024 01:11:07)Copyright (c) The PHP GroupZend Engine v4.3.6, Copyright (c) Zend Technologies
ビルドオプションも確認。
# php-config --configure-options
--disable-all--program-prefix=--with-config-file-scan-dir=/usr/local/etc/php--with-layout=GNU--with-libxml--with-openssl--with-password-argon2=/usr/local--enable-dtrace--enable-embed--enable-fpm--with-fpm-group=www--with-fpm-user=www--enable-mysqlnd--with-external-pcre=/usr/local--prefix=/usr/local--localstatedir=/var--mandir=/usr/local/share/man--infodir=/usr/local/share/info/
...
phpinfoも確認(mysqlndがインストールされているか)。
# php -i | less
読み込まれているiniファイルを確認。
# php --ini
Loaded Configuration File: (none)
iniファイルが読み込まれてないのでiniファイルを作る。
このサーバーは開発用なのでphp.ini-developmentをコピーする。
# cd /usr/local/etc
# cp php.ini-development php.ini
phpのタイムゾーンを設定する。
# less php.ini
date.timezone = "Asia/Tokyo"
読み込まれているか確認して現在時刻を確認。
# php --ini
# php -r 'echo date("Y/m/d H:i");'
php-fpmをUnix socketでlistenする。
# less php-fpm.d/www.conf
;listen = 127.0.0.1:9000listen = /var/run/php-fpm.sock
listen.owner = wwwlisten.group = wwwlisten.mode = 0660
php-fpmの自動起動ON、起動、確認。
# service php-fpm enable
# service php-fpm start
# service php-fpm status
FreeBSDではセッションの置き場所を設定しないといけないみたい。
# mkdir /var/tmp/php
# mkdir /var/tmp/php/session
# chown -R www:www /var/tmp/php
CentOSにならってwww.confに設定。
# less php-fpm.d/www.conf
php_value[session.save_path] = /var/tmp/php/session
php-fpm再起動。
# service php-fpm restart
3. MariaDBをインストール
MariaDBを検索してインストール。
# pkg search mariadb
# pkg install mariadb1011-server
設定確認、service名確認、自動起動ON、起動。
# mariadb-config
# ls /usr/local/etc/rc.d/
# service mysql-server enable
# service mysql-server start
# service mysql-server status
初期設定スクリプトを実行。
# mysql_secure_installation
文字コードを確認する。
# mariadb -u root -p
root@localhost [(none)]> show variables like "chara%";
+--------------------------+----------------------------------+| Variable_name | Value |+--------------------------+----------------------------------+| character_set_client | utf8mb3 || character_set_connection | utf8mb3 || character_set_database | latin1 || character_set_filesystem | binary || character_set_results | utf8mb3 || character_set_server | latin1 || character_set_system | utf8mb3 || character_sets_dir | /usr/local/share/mysql/charsets/ |+--------------------------+----------------------------------+
utf8mb3からutf8mb4へ変更する。
root@localhost [(none)]> quit
# less /usr/local/etc/mysql/conf.d/server.cnf
[server]character-set-server = utf8mb4collation-server = utf8mb4_general_ci
# less /usr/local/etc/mysql/conf.d/mysql-clients.cnf
[mysql]default-character-set=utf8mb4
MariaDBを再起動して確認。
# service mysql-server restart
# mariadb -u root -p
root@localhost [(none)]> show variables like "chara%";
root@localhost [(none)]> quit
4. phpMyAdminをインストール
pkgからインストールするか迷ったけど、公式サイトから最新版をダウンロードする。
いつものウェブサーバー用置き場所を作るところから。
# mkdir /home/httpd
# mkdir /home/httpd/httpdocs
# cd /home/httpd/httpdocs/
# curl -O https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-english.tar.gz
# tar xzvf phpMyAdmin-5.2.1-english.tar.gz
# mv phpMyAdmin-5.2.1-english phpMyAdmin
# rm phpMyAdmin-5.2.1-english.tar.gz
configファイル編集
# cd phpMyAdmin
# cp config.sample.inc.php config.inc.php
# less config.inc.php
$cfg['Servers'][$i]['host'] = '127.0.0.1';$cfg['Servers'][$i]['compress'] = false;$cfg['Servers'][$i]['AllowNoPassword'] = false;$cfg['Servers'][$i]['user'] = 'root';$cfg['Servers'][$i]['password'] = 'pass';$cfg['Servers'][$i]['auth_type'] = 'config';
host名をlocalhostから127.0.0.1に変更してtcpコネクションにしないとエラーになった。
tmpディレクトリを作る。
# mkdir tmp
# chmod 777 tmp/
nginxの設定ファイルを作る。
# cd /usr/local/etc/nginx/conf.d/
# vi 01_phpMyAdmin.conf
server {listen 80 default_server;server_name _;root /home/httpd/httpdocs;index index.php index.html index.htm;charset utf-8;location = /robots.txt { access_log off; log_not_found off; }location = /favicon.ico { access_log off; log_not_found off; }location ~* \.php$ {include conf.d/include/fastcgi_php.inc;client_max_body_size 20M;}location ~ /\. {deny all;access_log off;log_not_found off;}}
共通設定ファイルをgit cloneする。
# git clone git@gitlab.com:settings/nginx-global.git include
nginx再読み込み。
# service nginx reload
ブラウザでアクセスして確認する。