家のサーバのデータをぶっ飛ばしたので、CentOS8で作り直した時のメモです。
仮想マシンの構成
CentOS8はメモリの最低容量が1.5GB。今回は2GBで構築。
HDDは10GBで動作します。(www配下に外部ディスクをマウント)
※ディスクのフォーマットはあらかじめ行ってあるものとする。
CentOS8インストール
こちら
[blogcard url=”https://szkhaven.com/2019/09/25/centos8_release_and_install/”]
初期セットアップ
アップデート
yum update -y
epelのインストール
yum -y install epel-release
remi-7.4のインストール
dnf module install php:remi-7.4
※GAのPHP7.2ではWordpressが操作しない為これを行う
nginxのインストール
nginxはGAである1.14-1-9でいきます。
dif install -y nginx
================================================================================ パッケージ Arch バージョン Repo サイズ ================================================================================ インストール: nginx x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 570 k
mariaDBのインストール
こちらもGA。10.3になってます。
dnf info mariadb-server mariadb mariadb-devel
dnf install -y mariadb-server mariadb mariadb-devel
================================================================================ パッケージ Arch バージョン Repo サイズ ================================================================================ インストール: mariadb-devel x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 1.0 M mariadb-server x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 16 M 依存関係のインストール: mariadb-connector-c-devel x86_64 3.0.7-1.el8 AppStream 63 k mariadb-errmsg x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 232 k ~中略~ psmisc x86_64 23.1-3.el8 BaseOS 151 k zlib-devel x86_64 1.2.11-10.el8 BaseOS 56 k 弱い依存関係のインストール: mariadb-backup x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 6.0 M mariadb-gssapi-server x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 49 k mariadb-server-utils x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 1.6 M モジュールストリームの有効化: perl-DBD-MySQL 4.046 perl-DBI 1.641 トランザクションの概要 ================================================================================ インストール 28 パッケージ ダウンロードサイズの合計: 31 M インストール済みのサイズ: 147 M
PHPと関連モジュールのインストール
必ずModuleを7.2で更新しておく(上述)こと。
yum install php-fpm php-mysqlnd php-json php-xml php-gd php-mbstring php-pecl-zip php-pecl-imagick
Nginxの設定
/etc/nginx/nginx.conf
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/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 /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf; }
includeでconf.d/配下を読むように設定。
/etc/nginx/conf.d/~.conf
~には任意の名前でOK。
server {
listen 80;
server_name your-srvname;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2;
server_name your-srvname;
charset utf-8;
root <任意のドキュメントルート>;
index index.html index.php index.xml;
client_max_body_size 500M;
#ssl設定
ssl on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
#ServerのOpen-SSLにて発行したkey
ssl_certificate_key /etc/nginx/ssl/your.key;
#証明書発行機関から出された「Cert」と「中間証明書」を連結したもの
ssl_certificate /etc/nginx/ssl/your.cert;
ssl_stapling on;
ssl_stapling_verify on;
#ssl_trusted_certificate /etc/letsencrypt/live/mastodon.example.com/fullchain.pem;
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 10s;
add_header Strict-Transport-Security 'max-age=315360000;includeSubDomains;preload';
#gzip
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
error_page 500 501 502 503 504 /500.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
PHPの設定でPHP-fpmの設定をここで変更しておくと後から楽。
SSL化が不要な場合はsslから始まる設定をコメントアウトして、Listenで80を記載してあげてください。
SSL証明書関係
証明書をセットアップしたい人向け。
以下のコマンドでまずKeyを出して
openssl genrsa -out your.key 2048
次に↓のコマンドでkeyを基にcsrを出力する。
openssl req -new -key wwwexamplecom.key -out wwwexamplecom.csr
この後オレオレ証明してもいいし、証明書サービス―ビスを利用する人はcsrの中身をコピーして提出すればOKだ。
その後、証明書発行機関から出された中間証明書とCertを連結したものを下記に保存する。
尚/etc/nginx/sslは整理しやすいために作成したのであらかじめmkdirかなんかで作ってもいいし、別途好きな所においても良い。
vi /etc/nginx/ssl/your.cert
PHP-fpm設定
PHP-fpmでは以下の設定を追記する。
/etc/php-fpm.d/www.conf
vi /etc/php-fpm.d/www.conf
-user = apache -group = apache +user = nginx +group = nginx +listen.owner = nginx +listen.group = nginx +listen.mode = 0660 +listen = /var/run/php-fpm.sock ※Nginxのコンフィグに記載したphp-fpm sockの場所
書き換えるのは主にUserの名称変更と追加。
さらにNginxのconf.d配下のConfigで記載したSockファイルのPathもここで記載する。
パーミッション変更
chown nginx.nginx -R /var/run/
nginxでSockを読み込みできるようにパーミッション変更する。
MariaDBの初期設定
初期セットアップの前にサービスを立ち上げる
systemctl start mariadb systemctl enable mariadb
mysql_secure_installation
最初MariaDBのRootパスワードを求められるが、未設定なので空白でOK。
その後質問がいくつか飛んでくるのでセットアップを行う。
その後以下のコマンドでMariaDBコンソールに入れればOK
mysql -u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 23208 Server version: 10.3.17-MariaDB MariaDB Server 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)]>
これが出ればOK。
MariaDBでDBとUserを作成しておく
WordPressインストール時に必要になるユーザーとDBをあらかじめ作っておく。
CREATE DATABASE DB_NAME DEFAULT CHARACTER SET utf8mb4;
これで作成。最近のWordpressではCharsetはutf8mb4が推奨とのこと。
UTF8でも動くのでお好みで
GRANT ALL ON DB_NAME.* TO USERNAME@localhost IDENTIFIED BY 'password';
その後ユーザーを作成する。
ここでは上記で作った「DB_NAME」というDBに対して「USERNAME」というユーザーを作成している。
passwordは一番最後。いずれも任意の文字で問題ない。
MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]>auit
最後にコンソールから抜ければOKだ。
WordPressのインストール
wordpressをインストールする。
ダウンロードページを確認し「tar.gzをダウンロード」のURLをコピーする。
コンソールへ戻ってnginxのDocumentRootへ移動する。
今回は/var/www/htmlを選択した。
cd /var/www/html
コピーしたURLでWgetする。
Wgetが入ってない環境の場合はここでインストールしておこう。
dif install -y wget
wget https://ja.wordpress.org/latest-ja.tar.gz
その後、tarを解凍する。
tar -zxvf ./latest-ja.tar.gz
[wordpress]というディレクトリができるので、そのまま使うもいいしTOPページからWordpressにしたいならファイルを移動する。
mv ./wordpress/* ./
このままだと権限が付与されていないのでnginxのユーザーが読み込めるようにパーミッションを設定する。
chown -R nginx.nginx /var/www/html
SELinuxのラベルを付与する
chcon system_u:object_r:usr_t:s0 /var/www -R
サービスの起動
本来なら上記の手順の中で動作確認等しているはずだが、ここまで突っ切ってきた人はここでいよいよサービス起動になる。
systemctl start nginx systemctl enable nginx systemctl start php-fpm systemctl enable php-fpm
ファイアウォール設定
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https
ルータで制限をかける人はstopしてしまってもよい。
アクセス
トラブルシューティング
「サイトに重大なエラーがありました」と表示される |
PHPのVersionを確認する。
理屈までは調べてないがphp7.2だとWordpressの実行が失敗する。
CentOS8はGAがPHP7.2なので失敗しやすい事象だ。
php -v
このコマンドで7.2だったら7.4を入れなおして再度実行しよう。
コメントを残す