[webサーバー]apacheからnginxへ…(そして伝説へ…[違])

こんばんは。

重い腰を上げて、使ってるサーバー(vps)の環境をapacheからnginxにwebサーバーを変更しました😎
最近ではnginxが主流なようなので、新しくwebを始める人はこっちだけ使っていく流れなんですかね。
業務で使うvagrantやdockerにもデフォがnginxになってきたので、設定ファイルにも少しずつ慣れてきました。

nginxとは

wikiによると下記みたいな感じです。
C10K問題(クライアントが1万台アクセスすると、サーバーがパンクしちゃう系の問題)を解決していて、Apacheよりも早いらしいです。実際計測してないので、うーん・・・🤔 ですが体感的に早い気がしています?!
比較されている良い記事がQiitaにありました。
1.47倍ほどnginxのほうが早いらしいです。使わない手はないですね。

nginx(「エンジンエックス」のように発音[3])は、フリーかつオープンソースなWebサーバである。処理性能・高い並行性・メモリ使用量の小ささに焦点を当てて開発されており、HTTP, HTTPS, SMTP, POP3, IMAPのリバースプロキシの機能や、ロードバランサ、HTTPキャッシュなどの機能も持つ。

さようならapache

10年前、専門学校で習ったときからwebサーバーはapacheでした。windowsのiisなんて、ほとんど使うこともなく業務ではapache。xamppというlamp環境を簡単に作れるソフトにもapacheが入っていました。
これからの主流といわれていたlamp(linux, apache, mysql, php)が懐かしい…(遠い目)

移行する

移行手順と設定ファイルの一部を晒しています。
ちょっと昔なので、抜けている所があるかもしれませんが、設定ファイル等参考になれば…!

nginxインストール

yum install nginx

yumコマンドでnginxをインスールします。

nginxの設定(ホームページ、wordpressブログ)

/etc/nginx/conf.d/default.conf

default.confというデフォの設定ファイルがあるので、中身を#で全部コメントアウトしました。

新しく立ち上げるwebサイトの設定ファイルを、サブドメインを含めて作成します。

個人事業ホームの設定ファイルです。(ディレクトリは自分の環境で書き換えています)

server {
    server_name  codelike.info;

    location / {
        root   /hoge/www/xxx;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ .php$ {
        root           /hoge/www/xxx;
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /hoge/www/xxx$fastcgi_script_name;
        include        fastcgi_params;
    }
    ・・・SSL省略・・・
}

次は、このブログの設定ファイルです。
wordpressの設定ファイルは上記のように単純に書くと記事が見れなくなるので注意が必要です。
こんな感じにしました。

server {
    server_name  codelikes.com;
    client_max_body_size 20M;

    root         /hoge/www/xxx;
    index        index.php

    charset utf-8;

    location ~ .(jpg|png|gif|swf|jpeg)$ {
        log_not_found off; # 404の時にerror_logに書き込まないようにする設定
        access_log off;
        expires 3d;
    }


   location / {
        try_files $uri $uri/ @wordpress;
    }

    location ~ /wp-login.php.* {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /hoge/www/xxx$fastcgi_script_name;        
        include        fastcgi_params;
    }

    location ~ .php$ {
        try_files $uri @wordpress;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME  /hoge/www/xxx$fastcgi_script_name;        
        include       fastcgi_params;
    }

    location @wordpress {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME   /hoge/www/xxx/index.php;
        include       fastcgi_params;
    }
    ・・・SSL省略・・・
}

php-fpmの設定

nginxからphpを使う場合は、php-fpmが必要なため、設定しました。

nginxをまずはインストールします。

yum install --enablerepo=remi php-fpm

エディタで開いて、設定ファイルを弄ります。

sudo vi /etc/php-fpm.d/www.conf 

下記を書き込んで(既に行がある場合はコメントアウトなどで)、保存します。

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock

httpdを止めて、nginxを動かす。

service httpd stop
service nginx start
service php-fpm start

さよならapache!!

まとめ

こんな感じで、意外と簡単にapacheからnginxの移行ができました。
サーバー周りの設定などはプログラムに比べてまだ、よく理解できてないところが多いような気がしました。
学習していかねば。

👋

コメント

タイトルとURLをコピーしました