初めてのvhost with Nginx
ここ最近、めっきりzabbix!! , zabbix!! という感じでしたがインターシップ先でnginxを弄る機会がありまして、リバースプロキシのついでにvhostもやってみましょうという私の遊び心あふれたものになっています。
じゃ、早速やってみましょう!
Contents
vhostって何?
vhostとは、nginxやapacheなどのwebサーバで複数のドメインを一つのwebサーバで動かすという技術です。
具体的には、弊学のサークルで使用しているのがwordpressなわけですが1つのnginx上でサークルのホームページも自分のブログもドメインだけ変更させてうまい感じで公開しましょう って感じです。 (わかりにくいですね...サーセン)
何はともあれ実際やってみる。
今回の環境は以下の通りです。
CentOS7.5 minimal
- Nginx 1.14
- php 7.2.11
- wordpress 4.9.8
こちらの環境で、検証していきたいと思います。CentOS7.5のインストールは何も面白くないので省略しちゃってもいいですか?
ま、とりあえず載せておきますね。言語は、日本語を選択します。
インストール先のアイコンを押下すると下記画面が出ます。
左上の完了ボタンを押して戻ってください。
次に、ネットワークの設定を行います。
右側、最初はオフになっているのでオンに切り替えてください。最後にパスワードを設定して終了です。
最後に右下の再起動ボタンを押してインストールは完了です。
ここからは、SSHでリモートでの作業になります。
Teraterm か Putty での作業になりますので、どちらかのソフトをダウンロードしてご用意ください、Macの場合はterminalでもsshがつながると思いますのでそちらを利用していただいても構いません。Nginx インストール
Nginxをダウンロードする上でリポジトリを整えておく必要があります。
root@localhost ~# vi /etc/yum.repos.d/nginx.repo
insertキー or i キーを押して編集モードにします。
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
root@localhost ~# yum -y install nginx
root@localhost ~# systemctl enable nginx
ここまでで、nginxのインストールができました。
一応 php-fpmもインストールしておきます。
何はともあれ、remiさんのリポジトリを登録しておかなければですね。
root@localhost ~# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
root@localhost ~# vi /etc/yum.repos.d/remi-php72.repo
[remi-php72]
name=Remi's PHP 7.2 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php72/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php72/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php72/mirror
enabled=0 ←enabled=1 に変更
root@localhost ~# yum -y install php72 php72-php php php-fpm php-mysql
root@localhost ~# systemctl enable php-fpm
次に、php-fpmの設定ファイルにあるuserとgroupを変更しておきます。
root@localhost ~# vi /etc/php-fpm.d/www.conf
insertキー or iキーを押下して編集モードにする。
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache ←Nginxに変える。
; RPM: Keep a group allowed to write in log dir.
group = apache ←Nginxに変える。
MariaDBもインストールしておく
root@localhost ~# vi /etc/yum.repos.d/mariadb.repo
insertキー or iキーを押下して編集モードに。
# MariaDB 10.3 CentOS repository list - created 2018-10-23 08:27 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
root@localhost ~# yum -y install MariaDB-server MariaDB-client
root@localhost ~# systemctl enable mariadb
Nginxでvhostするためのconfigに移るよ~
root@localhost ~# vi /etc/nginx/conf.d/default.conf
開いたらとりあえず、書かれている内容を消しましょう。
他ブログサイトでも様々なconfigが書かれていますが、既存で記載されている内容を消さないと文法エラーで動かないので注意が必要です。
server {
listen 80;
server_name localhost2;
keepalive_timeout 65;
client_max_body_size 1024M;
location / {
root /usr/share/nginx/html/vhost1;
index index.php index.html;
}
location ~ .php$ {
root /usr/share/nginx/html/vhost1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 81;
server_name localhost3;
keepalive_timeout 65;
client_max_body_size 1024M;
location / {
root /usr/share/nginx/html/vhost2;
index index.php index.html;
}
location ~ .php$ {
root /usr/share/nginx/html/vhost2;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
次に、nginxのhello worldであるindex.htmlなどを削除しておきます。
root@localhost ~# rm -f /usr/share/nginx/html/index.html
root@localhost ~# rm -f /usr/share/nginx/html/50x.html
php.iniで、uploadサイズの変更を加えます。
実は、wordpressのアップローダーはそこまで大容量ファイルのアップロードには対応していません。
よって、php.iniでアップロード容量の下限を引き上げておく必要があります。
root@localhost ~# vi /etc/php.ini
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M ←1024Mに変更
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 8M ← 1024Mに変更
ここらへんで、いったんrebootをかけておいてください。
wordpress用に、databaseを作る。
今回は、vhost1 , vhost2というディレクトリを作りそこにwordpressをそれぞれ配置する予定です。
ポート番号は前者が80 , 後者が81の予定です。
では、データベースを作っていきます。
vhost1 用
root@localhost ~# mysql -u root
MariaDB [(none)]> CREATE DATABASE wordpress1; #wordpress1 がvhost1用のデータベース名
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress1.* TO wp_user1@localhost IDENTIFIED BY "password1";
#この場合、ユーザ名 : wp_user1 , パスワード : password1になる。
MariaDB [(none)]> exit
vhost2用に繰り返します。
root@localhost ~# mysql -u root
MariaDB [(none)]> CREATE DATABASE wordpress2; #wordpress2 がvhost2用のデータベース名
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress2.* TO wp_user2@localhost IDENTIFIED BY "password2";
#この場合、ユーザ名 : wp_user2 , パスワード : password2になる。
MariaDB [(none)]> exit
wordpress導入
root@localhost ~# curl -LO https://ja.wordpress.org/latest-ja.tar.gz
#vhost1用
root@localhost ~# tar -xzvf latest-ja.tar.gz
root@localhost ~# mv /root/wordpress/ /root/vhost1/
root@localhost ~# mv /root/vhost1 /usr/share/nginx/html
#vhost2用
root@localhost ~# tar -xzvf latest-ja.tar.gz
root@localhost ~# mv /root/wordpress/ /root/vhost2/
root@localhost ~# mv /root/vhost2 /usr/share/nginx/html
では、wordpress のconfig設定を自動で記載してもらうために、ディレクトリ所持者変更及び、アクセス権限の変更を行います。
#vhost1用(所有者ユーザ変更)
root@localhost ~# chown -R nginx:nginx /usr/share/nginx/html/vhost1
#vhost2用(所有者ユーザ変更)
root@localhost ~# chown -R nginx:nginx /usr/share/nginx/html/vhost2
#vhost1用(権限変更)
root@localhost ~# chmod -R 777 /usr/share/nginx/html/vhost1
#vhost2用(権限変更)
root@localhost ~# chmod -R 777 /usr/share/nginx/html/vhost2
最後に、SELinux と firewalldを無効化する。
root@localhost ~# vi /etc/sysconfig/selinux
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
root@localhost ~# systemctl disable firewalld
うまくいくと、このように表示されます。
接続先 vhost1 : IP/wp-admin
接続先 vhost2 : IP:81/wp-admin
このように、Nginx1つでwordpress2つ立ち上げることができました。!!
所感
いやぁ、1年半ぐらい前からvhostできねぇとtwitter上で嘆いていましたがついに自分の力だけで立ち上げることができました。!!
これで、サークルのサーバに寄生でき ゲフンゲフン...