Ubuntu 22.04 + Nginx + PHP8.1 + MariaDB + Sambaをインストール
開発用仮想マシンにUbuntu 22.04をインストールしたときの覚書。
環境: Ubuntu 22.04.03, nginx 1.24.0, php 8.1.2
Ubuntuのバージョンを確認。
# less /etc/os-release
インストールして初期設定は前の記事を参考に。
参考: Ubuntu Server 22.04 を仮想マシンとしてインストール
1.nginxのインストール
公式サイトに従って最新版をapt経由でインストールできるようにする。
参考: nginx: Linux packages
必要なツールをインストール。
# apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
公式の認証用文字列から公開鍵暗号方式で認証キーを生成してバイナリ形式で保存。
teeコマンドはファイル出力と標準出力が同時にできるコマンド。
# curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
認証キーを検証。
# gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62uid nginx signing key <signing-key@nginx.com>
stable(安定版)パッケージをaptリストに追加する。
# echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
ディストリビューション標準よりnginx公式を優先させる。
# echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | tee /etc/apt/preferences.d/99nginx
取得して情報表示、インストール。
# apt update
# apt info nginx
# apt install nginx
nginxのバージョンとコンパイルオプション確認。
# nginx -V
nginx version: nginx/1.24.0built by gcc 11.2.0 (Ubuntu 11.2.0-19ubuntu1)built with OpenSSL 3.0.2 15 Mar 2022TLS SNI support enabledconfigure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -ffile-prefix-map=/data/builder/debuild/nginx-1.24.0/debian/debuild-base/nginx-1.24.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'
起動、自動起動ON、確認
# systemctl start nginx
# systemctl enable nginx
# systemctl list-unit-files -t service | grep nginx
CPU数の設定がautoになっているか確認。
# less /etc/nginx/nginx.conf
GitLabから共通設定をcloneしておく(プライベートリポジトリです)。
# cd /etc/nginx/conf.d/
# git clone git@gitlab.com:hoge-settings/nginx-global.git global
ユーザーグループ「www」を作成。
nginxユーザーをwwwグループに追加。
# groupadd www
# usermod -G www nginx
# less /etc/nginx/nginx.conf
user nginx www;
ユーザーのグループ確認して、nginx再起動。
# groups nginx
# nginx -t
# systemctl restart nginx
2.phpをインストール
apt経由でインストール。
# apt install php-fpm php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-zip
バージョン確認
# php -v
PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)Copyright (c) The PHP GroupZend Engine v4.1.2, Copyright (c) Zend Technologieswith Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies
php8.2を試したいときは有志の人が公開しているリポジトリを追加する。
- ***** The main PPA for supported PHP versions with many PECL ext... : Ondřej Surý
- GitHub - oerdnj/deb.sury.org: Public bugreports for anything ppa:ondrej/*
特別な事情がない限りディストリビューション標準をインストールした方が間違いがない。
最新を追いすぎるとextensionをビルドするときにハマることがある。
起動確認。
参照しているconfの場所も確認。
# systemctl status php8.1-fpm
# systemctl list-unit-files -t service | grep php8.1-fpm
実行ユーザーを変更する。
Unix socketの場所を変更(運用しているCentOSと合わせたいから)。
# less /etc/php/8.1/fpm/pool.d/www.conf
user = nginx
group = www
listen.owner = nginxlisten.group = wwwlisten = /run/php-fpm/www.sock
Unix socketの場所を作る。
# mkdir /run/php-fpm
# chown nginx.www /run/php-fpm
起動スクリプトを編集する。
# less /lib/systemd/system/php8.1-fpm.service
他の起動ファイルも編集しないといけないことが分かったので止めた。
タイムゾーンを設定する。
# less /etc/php/8.1/fpm/php.ini
date.timezone = "Asia/Tokyo"
timezoneの確認。
# php -r 'echo date("Y/m/d H:i");'
セッションの書き込みディレクトリ権限を変更。
# chown nginx.www -R /var/lib/php/*
※ PHP更新時に毎回変更しないといけない
起動スクリプトを編集したので、再起動して自動起動するか確認。
# reboot
# systemctl status php8.1-fpm
3.MariaDBをインストール
apt経由でインストール。
# apt install mariadb-server
バージョン確認。
# mariadb --version
mariadb Ver 15.1 Distrib 10.6.12-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
起動確認
# systemctl status mariadb
# systemctl list-unit-files -t service | grep mariadb
初期設定スクリプトを実行。
# mariadb-secure-installation
文字コードの確認。
# mariadb -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE 'collation%';
+----------------------+--------------------+| Variable_name | Value |+----------------------+--------------------+| collation_connection | utf8mb3_general_ci || collation_database | utf8mb4_general_ci || collation_server | utf8mb4_general_ci |+----------------------+--------------------+
MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8mb3 || character_set_connection | utf8mb3 || character_set_database | utf8mb4 || character_set_filesystem | binary || character_set_results | utf8mb3 || character_set_server | utf8mb4 || character_set_system | utf8mb3 || character_sets_dir | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+
本番環境ではチューニングを忘れずに。
4.phpMyAdminをインストール
公式サイトからダウンロードして設置する。
# 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
tmpフォルダを書き込み可にする。
# mkdir /home/httpd/httpdocs/phpMyAdmin/tmp
# chown nginx.www /home/httpd/httpdocs/phpMyAdmin/tmp
nginxの設定。
他のサーバーを参考にコピペする。
# cd /etc/nginx/conf.d/
# vi 01_phpMyAdmin.conf
nginxの再起動。
# nginx -t
# systemctl restart nginx
ブラウザでアクセスして確認。
開発環境なのでconfig.inc.phpを設置してパスワードなしでログインできるようにする。
# cd /home/httpd/httpdocs/phpMyAdmin/
# cp config.sample.inc.php config.inc.php
# less config.inc.php
$cfg['Servers'][$i]['auth_type'] = 'config';$cfg['Servers'][$i]['user'] = 'root';$cfg['Servers'][$i]['password'] = 'password';
5.Sambaをインストール
WindowsのエクスプローラーからLAN経由でアクセスしたいので、Sambaをインストールする。
# apt install samba
バージョン確認。
# smbd -V
Version 4.15.13-Ubuntu
起動確認
# systemctl status smbd
# systemctl list-unit-files -t service | grep smbd
既存Linuxユーザー「daiki」をsambaユーザーとして追加する。
# smbpasswd -a daiki
ユーザー一覧を確認
# pdbedit -L
設定ファイル編集。
# less /etc/samba/smb.conf
workgroup = VM
netbios name = vm-dev4map to guest = Neversecurity = user[opt]comment = Option Directorypath = /optbrowseable = yeswritable = yes[httpd]comment = httpdpath = /home/httpdbrowseable = yeswritable = yes
共有したフォルダをdaikiユーザーで書き込み可能にする。
# chown daiki -R /opt/
samba再起動して確認。
# systemctl restart smbd
# systemctl status smbd
WindowsからNetBIOS名でPINGを打って確認する。
Windowsのエクスプローラーから「\\vm-dev4」にアクセスする。
メールアドレス: VM\daiki
パスワード: (設定したパスワード)
sambaの接続状況を確認。
# smbstatus
一応daikiユーザーをwwwグループに追加しておく。
# usermod -G www daiki
確認
# groups daiki