CentOS8 + Nginx + PHP + MariaDB + Node.js + Certbotの環境を構築する手順まとめ
CentOS8の開発環境をセットアップしているときの覚書。
環境: Mac mini(Mid 2010), VMware Fusion 8.5.10, CentOS 8.1
インストールまでは前の記事を参考に。
インストールまでは前の記事を参考に。
epelリポジトリをインストールしておく。
# dnf install epel-release
1.nginxのインストール
nginxのモジュール一覧
# dnf module list nginx
mainlineのバージョン確認
# dnf module info nginx:mainline
最新のStableをインストール
# dnf module install nginx:1.16/common
起動、自動起動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:dksg-settings/nginx-global.git global
nginx.confは前の記事のGistを参考に。
ユーザーグループ「www」を追加。
# groupadd www
# usermod -G www nginx
修正後、確認して反映させる。
# nginx -t
# systemctl reload nginx
2.PHPのインストール
phpのモジュール一覧
# dnf module list php
php7.3をインストール
# dnf module install php:7.3/common
その他のPHPモジュールをインストール
# dnf install php-mysqlnd php-gd
起動、自動起動ON、確認
# systemctl start php-fpm
# systemctl enable php-fpm
# systemctl list-unit-files -t service | grep php-fpm
# php --version
画像処理用にImageMagickをインストールするかは考え中。
実行ユーザーを変更する。
# less /etc/php-fpm.d/www.conf
user = nginxgroup = www
listen = /run/php-fpm/www.socklisten.owner = nginxlisten.group = wwwlisten.mode = 0660
アクセスがデフォルトでTCP PortからUnix socketになってた。
調べてみたらUnix socketの方が速いらしい。参考:TCP localhostとUnix Domain Socketはどちらが速いのか? - Qiita
nginxの設定を変更
# less /etc/nginx/conf.d/global/fastcgi_php.conf
fastcgi_pass unix:/run/php-fpm/www.sock;
再起動
# nginx -t
# systemctl reload nginx
# systemctl restart php-fpm
セッションの書き込みディレクトリ権限を変更。
# chown nginx.www -R /var/lib/php/*
※ PHP更新時に毎回変更しないといけないかは後日確認
3.MariaDBをインストール
MariaDBのモジュール一覧
# dnf module list mariadb
サーバーをインストール
# dnf module install mariadb/server
起動、自動起動ON、確認
# systemctl start mariadb
# systemctl enable mariadb
# systemctl list-unit-files -t service | grep mariadb
初期設定スクリプトを実行
# mysql_secure_installation
デフォルトの文字コードを「utf8mb4」にする。とりあえずのチューニング設定も。
# less /etc/my.cnf.d/mysql-clients.cnf
[mysql]default-character-set=utf8mb4
# less /etc/my.cnf.d/mariadb-server.cnf
[server]character-set-server = utf8mb4collation-server = utf8mb4_unicode_cithread_handling = pool-of-threadsmax_connections = 500# Tuningkey_buffer_size = 128Msort_buffer_size = 1Mread_rnd_buffer_size = 1Mquery_cache_type = 1query_cache_limit = 256Kquery_cache_min_res_unit = 2kquery_cache_size = 80M
再起動
# systemctl restart mariadb
確認
# mysql -u root -p
MariaDB [(none)]> show variables like "chara%";
4.Node.jsをインストール
Nodejsのモジュール一覧
# dnf module list nodejs
EPELと名前が被っている。
AppStremからインストールする。名前は/etc/yum.repos.d/を参照。
# dnf module install nodejs:12/common --disablerepo epel-modular
5.phpMyAdminをインストール
Git cloneすると1GBぐらい消費するので、ダウンロードして設置する。
# cd /home/httpd/httpdocs
# curl -O https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-english.tar.gz
# curl -O https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-english.tar.gz
# tar -xzvf phpMyAdmin-5.0.2-english.tar.gz
# mv phpMyAdmin-5.0.2-english phpMyAdmin
# rm phpMyAdmin-5.0.2-english.tar.gz
nginxの設定
# cd /etc/nginx/conf.d/
余計なconfファイルを移動
# mkdir bak
# mv php-fpm.conf bak/
公開する場所を指定する設定ファイルを作る。
# vi 00_default.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/global/fastcgi_php.conf;client_max_body_size 20M;}location ~ /\. {deny all;access_log off;log_not_found off;}}
ブラウザでアクセスして確認。
6.certbotをインストール
リポジトリで配信されているか確認
# dnf search certbot
# dnf info certbot
EPELリポジトリからインストール
# dnf install certbot
Error:Problem: package certbot-1.3.0-3.el8.noarch requires python3-certbot = 1.3.0-3.el8, but none of the providers can be installed- conflicting requests- nothing provides python3-mock needed by python3-certbot-1.3.0-3.el8.noarch- nothing provides python3.6dist(mock) needed by python3-certbot-1.3.0-3.el8.noarch
python3-virtualenvをインストールすればいいという情報があった(参考:ssl - Install Certbot in Red Hat Enterprise Linux 8 manually - Server Fault)
インストールしてみる。
# dnf install python36
# dnf install python3-virtualenv
# dnf install certbot
同じエラー。
python3-mockが見つからないから?
検索すると「CentOS PowerTools」にあるのを見つけた。
# dnf install certbot --enablerepo=PowerTools
無事インストール完了。
nginxのSSL設定用にdhparam.pemを作る。
詳しくは前の記事(NginxのSSL/TLS設定を見直す(2019年版))を参考に。
10分くらい掛かる。
# openssl dhparam -out /etc/ssl/dhparam.pem 4096
【関連記事】