NginxのインストールからHello worldまで
Go言語を使ってWeb socketで遊びたいと思い、サーバ周りを色々調べてたらリバースプロキシなる言葉に行き当たり、サーバはApacheではなくNginx*1がいいんではないか?と思えてきた。
で、vmware上でHello worldまでやってみました。
Nginxのインストール
yumから行う。
CentOSの初期リポジトリにはNginxが無い(古い?)ので、公式のリポジトリを設定します。
vim /etc/yum.repos.d/nginx.repo
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
yum -y install nginx
ポート設定
ハマったので一連の手順として忘れないように入れておく。
CentOS7でのネットワーク設定 - 自分用めも
firewall-cmd --permanent --add-service=http
これ大事。
権限絡みのセキュリティ設定(を無効化)
デフォルトで入っている非常に強力な、linuxのユーザーレベルでのアクセス制御機能との事。これのせいでNginxが立ち上がらず…。
設定が複雑すぎて無効化するのが普通になっているらしい。右に習っておきます。
vim /etc/selinux/config
SELINUX=disabled
sudo reboot
再起動で反映。
Nginxのconf設定
vim /etc/nginx/nginx.conf
user nginx; worker_processes 2; error_log /srv/www/logs/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 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 /srv/www/logs/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; include /srv/www/nginx.conf; # バーチャルホストの設定は外出し }
バーチャルホストのドキュメントルートは、このサンプルでは
/srv/www/192.168.0.10/html
としています。
/srv以下は多分何もないと思うので、wwwからmkdirが必要です。
vim /srv/www/nginx.conf
server { listen 80 default_server; server_name 192.168.0.10; # vmwareに割り当てたIP access_log /srv/www/192.168.0.10/logs/access.log main; # 任意のpath error_log /srv/www/192.168.0.10/logs/error.log warn; etag off; location / { root /srv/www/192.168.0.10/html; index index.html; } }
systemctl restart nginx
問題があったら、
systemctl status nginx
で確認。
テスト用HTMLの配置
vim /srv/www/192.168.0.10/html/index.html
<html><body> Hello world. </body></html>
これでブラウザから「http://192.168.0.10」にアクセスすると、Hello world.が表示されます。
*1:えんじんえっくす。ロシアで開発されたWebサーバ