CentOS7 + Nginx + PHP7 + MariaDB + Node.jsの環境を構築する手順まとめ
カゴヤ・クラウド/VPSを借りて最小構成から環境構築したときの覚書。
CentOS6をセットアップしたときの記事を参考に
目次
このときの記事から変えたこと。
< 2019/01/20 追記 >
前と変わっていたので別記事にした。
# vi /etc/yum.repos.d/nginx.repo
起動、自動起動ON、確認
# systemctl start nginx
# systemctl enable nginx
# systemctl list-unit-files -t service | grep nginx
前の記事を参考にCPU数に合わせて設定する
# less /etc/yum.repos.d/remi-php70.repo
# yum install php php-fpm php-devel php-cli php-mysqlnd php-mbstring php-gd php-mcrypt
起動、自動起動ON、確認
# systemctl start php-fpm
# systemctl enable php-fpm
# systemctl list-unit-files -t service | grep php-fpm
画像変換はphp-gdではなくImageMagickを使うのでremiリポジトリの最新版をインストール
# yum install ImageMagick-last
確認
# convert --version
# yum install php-pecl-imagick
確認
# systemctl restart php-fpm
# php -i | grep imagick
Downloads | MariaDB
ページ一番上の「repository configuration tool.」からCentOS7用のYUMリポジトリを選択する。
リポジトリ追加
# vi /etc/yum.repos.d/MariaDB.repo
起動、自動起動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
# systemctl restart mariadb
# mkdir /home/httpd
# mkdir /home/httpd/httpdocs
# cd /home/httpd/httpdocs
# curl -O https://files.phpmyadmin.net/phpMyAdmin/4.6.0/phpMyAdmin-4.6.0-english.tar.gz
展開
# tar -xzvf phpMyAdmin-4.6.0-english.tar.gz
# mv phpMyAdmin-4.6.0-english phpMyAdmin
# rm phpMyAdmin-4.6.0-english.tar.gz
nginx設定
# cd /etc/nginx/conf.d/
# mv default.conf 00_default.conf
# rm example_ssl.conf
共通の設定ファイルを作る
# mkdir global
# vi global/fastcgi_php.conf
# nginx -t
# systemctl restart nginx
ブラウザでアクセスしてみる。
http://111.222.333.444/phpMyAdmin/
「Variables」のタブでさっき設定した値が反映されているか確認
# useradd node
# passwd node
nginxの実行ユーザーと同じグループ「www」にする。
# groupadd www
# usermod -G www node
# usermod -G www nginx
確認
# groups node
# groups nginx
セッションの書き込みディレクトリ権限を変更。
# chown nginx.www -R /var/lib/php/
※ YUMでPHPが更新されたときに権限が変更されるので、毎回権限を変更し直す必要がある。
php-fpmとnginxの設定変更。実行ユーザーをnginx、グループをwwwにする。
# less /etc/php-fpm.d/www.conf
# nginx -t
# systemctl restart nginx
# systemctl restart php-fpm
nvmを使ってNode.jsのインストール。
# su - node
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
ログインし直してインストール。
# su - node
$ nvm ls-remote
$ nvm install v4.4.2
$ nvm alias default v4.4.2
npmをアップデート
$ npm update -g
前の記事を参考によく使うパッケージをインストールするシェルスクリプトを作成
$ vi npm-global.sh
$ chmod +x npm-global.sh
$ ./npm-global.sh
# yum install postfix
# vi /etc/postfix/main.cf
# systemctl start postfix
# systemctl enable postfix
# systemctl list-unit-files -t service | grep postfix
DKIMは前の記事を参考に
SPF(Sender Policy Framework)レコードの設定も忘れずに。
mailxをインストールして送信してみる。
# yum install mailx
# mail hoge@gmail.com
ログを確認する。/var/log/maillogに保存されなくなったみたい
# journalctl -u postfix
DKIMを監視しながらメール送信するとき
# journalctl -f -u opendkim
ちなみにGoogle Domainsを使っている場合は下記のようにTXTレコードを設定する
最後にGmailで表示される鍵マークに対応する(暗号化)
# less /etc/postfix/main.cf
# yum list installed | grep cron
インストール
# yum install cronie
サービス(デーモン)として登録されているか確認
# systemctl list-unit-files -t service
一時間ごとにWordPressのcronを実行するようにする場合
# vi /etc/cron.d/wordpress-cron
# systemctl start crond
ログ確認
# journalctl -u crond
実行したコマンドログが出ないので直接確認
# journalctl | grep wp-cron
< Related Posts >
CentOS6をセットアップしたときの記事を参考に
目次
- 初期設定
- nginxをインストール
- PHP7をインストール
- MariaDBをインストール
- phpMyAdminをインストール
- Node.jsをインストール
- postfix + DKIM(送信ドメイン認証)をインストール
- cronをインストール
1.初期設定
前の記事を参考にこのときの記事から変えたこと。
- VPS上で時刻合わせは出来ないらしい。
# yum remove chrony - SELinuxはgetenforceコマンドがなかったので飛ばした
< 2019/01/20 追記 >
前と変わっていたので別記事にした。
2.nginxをインストール
公式ドキュメントに従ってYUMリポジトリを追加# vi /etc/yum.repos.d/nginx.repo
[nginx]# yum install nginx
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
起動、自動起動ON、確認
# systemctl start nginx
# systemctl enable nginx
# systemctl list-unit-files -t service | grep nginx
前の記事を参考にCPU数に合わせて設定する
3.PHP7をインストール
remiリポジトリのphp7を編集# less /etc/yum.repos.d/remi-php70.repo
[remi-php70]インストール
enabled=1
# yum install php php-fpm php-devel php-cli php-mysqlnd php-mbstring php-gd php-mcrypt
起動、自動起動ON、確認
# systemctl start php-fpm
# systemctl enable php-fpm
# systemctl list-unit-files -t service | grep php-fpm
画像変換はphp-gdではなくImageMagickを使うのでremiリポジトリの最新版をインストール
# yum install ImageMagick-last
確認
# convert --version
Version: ImageMagick 6.9.3-7 Q16 x86_64 2016-03-07 http://www.imagemagick.orgPHPのImageMagick用エクステンションをインストール
Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc jbig jng jpeg lcms ltdl lzma openexr pangocairo png ps rsvg tiff webp wmf x xml zlib
# yum install php-pecl-imagick
確認
# systemctl restart php-fpm
# php -i | grep imagick
4.MariaDBをインストール
公式ドキュメントを参考にDownloads | MariaDB
ページ一番上の「repository configuration tool.」からCentOS7用のYUMリポジトリを選択する。
リポジトリ追加
# vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.1 CentOS repository list - created 2016-04-07 10:30 UTC# yum install MariaDB-server MariaDB-client
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
起動、自動起動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]# less /etc/my.cnf.d/server.cnf
default-character-set=utf8mb4
[server]再起動
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
thread_handling = pool-of-threads
max_connections = 500
# Tuning
key_buffer_size = 128M
sort_buffer_size = 1M
read_rnd_buffer_size = 1M
query_cache_type = 1
query_cache_limit = 256K
query_cache_min_res_unit = 2k
query_cache_size = 80M
# systemctl restart mariadb
5.phpMyAdminをインストール
公式サイトからダウンロード。# mkdir /home/httpd
# mkdir /home/httpd/httpdocs
# cd /home/httpd/httpdocs
# curl -O https://files.phpmyadmin.net/phpMyAdmin/4.6.0/phpMyAdmin-4.6.0-english.tar.gz
展開
# tar -xzvf phpMyAdmin-4.6.0-english.tar.gz
# mv phpMyAdmin-4.6.0-english phpMyAdmin
# rm phpMyAdmin-4.6.0-english.tar.gz
nginx設定
# cd /etc/nginx/conf.d/
# mv default.conf 00_default.conf
# rm example_ssl.conf
共通の設定ファイルを作る
# mkdir global
# vi global/fastcgi_php.conf
## vi 00_default.conf
# PHP-FPM
#
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
# This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_intercept_errors on;
server {configtestしてnginx再起動
listen 80;
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;
}
}
# nginx -t
# systemctl restart nginx
ブラウザでアクセスしてみる。
http://111.222.333.444/phpMyAdmin/
「Variables」のタブでさっき設定した値が反映されているか確認
6.Node.jsをインストール
nodeユーザー追加# useradd node
# passwd node
nginxの実行ユーザーと同じグループ「www」にする。
# groupadd www
# usermod -G www node
# usermod -G www nginx
確認
# groups node
# groups nginx
セッションの書き込みディレクトリ権限を変更。
# chown nginx.www -R /var/lib/php/
※ YUMでPHPが更新されたときに権限が変更されるので、毎回権限を変更し直す必要がある。
php-fpmとnginxの設定変更。実行ユーザーをnginx、グループをwwwにする。
# less /etc/php-fpm.d/www.conf
user = nginx# less /etc/nginx/nginx.conf
group = www
user nginx www;再起動
# nginx -t
# systemctl restart nginx
# systemctl restart php-fpm
nvmを使ってNode.jsのインストール。
# su - node
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
ログインし直してインストール。
# su - node
$ nvm ls-remote
$ nvm install v4.4.2
$ nvm alias default v4.4.2
npmをアップデート
$ npm update -g
前の記事を参考によく使うパッケージをインストールするシェルスクリプトを作成
$ vi npm-global.sh
#! /bin/sh権限を追加して実行
# Install Node Packages
npm install -g grunt-cli node-dev pm2 npmlist
# Show Installed List
echo
echo 'Completed!!'
echo
npm -g list --depth=0
$ chmod +x npm-global.sh
$ ./npm-global.sh
7.postfix + DKIM(送信ドメイン認証)をインストール
メール送信するための設定。postfixをインストール。# yum install postfix
# vi /etc/postfix/main.cf
myhostname = www.webserver.com起動、自動起動、確認
mydomain = webserver.com
myorigin = $mydomain
inet_interfaces = localhost
mydestination = localhost.$mydomain, localhost
# systemctl start postfix
# systemctl enable postfix
# systemctl list-unit-files -t service | grep postfix
DKIMは前の記事を参考に
SPF(Sender Policy Framework)レコードの設定も忘れずに。
mailxをインストールして送信してみる。
# yum install mailx
# mail hoge@gmail.com
ログを確認する。/var/log/maillogに保存されなくなったみたい
# journalctl -u postfix
DKIMを監視しながらメール送信するとき
# journalctl -f -u opendkim
ちなみにGoogle Domainsを使っている場合は下記のようにTXTレコードを設定する
最後にGmailで表示される鍵マークに対応する(暗号化)
# less /etc/postfix/main.cf
## systemctl restart postfix
# SMTP TLS
#
smtp_tls_CAfile = /etc/pki/tls/cert.pem
smtp_tls_security_level = may
smtp_tls_loglevel = 1
8.cronをインストール
インストールされているか確認# yum list installed | grep cron
インストール
# yum install cronie
サービス(デーモン)として登録されているか確認
# systemctl list-unit-files -t service
一時間ごとにWordPressのcronを実行するようにする場合
# vi /etc/cron.d/wordpress-cron
SHELL=/bin/bash起動
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
# Excute WordPress WP_Cron
0 */1 * * * nginx curl https://hoge.com/wp-cron.php > /dev/null 2>&1
# systemctl start crond
ログ確認
# journalctl -u crond
実行したコマンドログが出ないので直接確認
# journalctl | grep wp-cron
< Related Posts >