ステータス:非推奨

この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。

理由 CentOS 6は2020年11月30日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このため、このガイドは維持されなくなりました。

代わりに参照:このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。

序章


「enginex」と発音されるnginxは、HTTPおよびリバースプロキシサーバーであり、メールプロキシサーバーでもあります。

nginxは、スレッドプール内のインスタンスにリクエストを委任するスレッドベースのモデルを使用するApacheとは対照的に、epollメカニズムを使用してクライアントにサービスを提供するオープンソースのウェブサーバーです。 nginxは、その速度のためにApacheよりも多く使用されています。 nginx13%以上の市場シェアを持ち、継続的に増加しています。

ソースからコンパイルする理由

ソースコードからのコンパイルは、次の場合に役立ちます。

  1. リリース直後に最新バージョンにアップグレードします。
  2. セキュリティの脆弱性の修正
  3. サービスに影響を与えている既知のバグを修正する
  4. サーバー名などのデフォルトの変更
  5. 既知のバグを修正したパッチの適用
  6. 依存関係の階層が原因で、ソフトウェアリポジトリが最新バージョンにアップグレードされない

その痛みを伴う理由:

  1. ソフトウェアのバージョンを最新に保つ必要があります
  2. サーバーソフトウェアは、依存関係ツリーの古いバージョンに依存している可能性があります

モジュールとサードパーティモジュール

nginxには、既存のVPSに機能を追加する多くのモジュールがあります。 有名なサードパーティモジュールのいくつかは次のとおりです。

  • SPDYはnginx1.5.0に含まれていました(以前はパッチとして提供されていました)
  • google pagespeed source )は、変更を必要とせずにページと関連アセット(CSS、JavaScript、画像)にWebパフォーマンスのベストプラクティスを自動的に適用することで、サイトを高速化し、ページの読み込み時間を短縮します既存のコンテンツまたはワークフロー
  • ModSecurity は、アプリケーションサーバーへの既知の攻撃を減らすためのオープンソースのWebアプリケーションファイアウォールです。 * TCPプロキシを使用すると、nginxはデフォルトのソケットモードの代わりにtcpサーバーを介してプロキシできます。

VPSを設定する


新しいVPSを作成するか、既存のVPSを選択します

ドメイン名を使用して新しいVPSを作成します。 ドメインとして「example.com」を使用するか、ホスト名の代わりにサーバーIPを使用できます。

ソースからコンパイルするための前提条件の設定


VPSに安全にログインします

ホストのパスワードを使用してVPSにログインできます。

ssh [email protected]

nginxの依存関係をインストールします

コンパイルするためにインストールする前提条件はほとんどありません。これには、開発ライブラリとソースコードコンパイラが含まれます。

yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

まず、ソースコードを保存するディレクトリを作成しましょう。

mkdir -p src && cd src

ソースからのコンパイル


ソースコードのダウンロード

http://nginx.org/en/download.htmlから現在のnginxバージョン番号を取得しましょう

次のコマンドを実行して、ソースをダウンロードします。

nginxVersion="1.5.5"
wget http://nginx.org/download/nginx-$nginxVersion.tar.gz
tar -xzf nginx-$nginxVersion.tar.gz 
ln -sf nginx-$nginxVersion nginx

nginxソースの準備

まず、必要な基本オプションを備えたnginxを準備します。

オプションの完全なリストについては、./configure --helpをご覧ください。

基本的なファイルパス名のオプション

これらのオプションは、/etc/でデフォルトのシステムパスを使用するためにオーバーライドする基本変数であり、rpmを介してインストールしたときに同様に機能するようにします。 userおよびgroupオプションは、非特権でnginxワーカープロセスを実行するために使用されます。

--user
--group
--prefix
--sbin-path
--conf-path
--pid-path
--lock-path
--error-log-path
--http-log-path

別のオプション

  • --with-http_gzip_static_moduleオプションを使用すると、nginxはgzipを使用できます(ディスクからgzip対応クライアントにファイルを提供する前に、このモジュールは「.gz」で終わる同じ場所で事前圧縮されたファイルを検索します。 目的は、要求されるたびに同じファイルが圧縮されないようにすることです。)[送信される情報のサイズを縮小するために推奨]

  • --with-http_stub_status_moduleオプションを使用すると、nginxを介して他のプラグインを使用して、ステータスを取得できます(このモジュールは、nginxからステータスを取得する機能を提供します)。 [統計を取得するために推奨]

  • --with-http_ssl_module-HTTPSサーバーを実行する場合に必要です。 CentOS6のnginxでSSL証明書を作成する方法を参照してください。

  • --with-pcreオプションを使用すると、ルートを定義するときに正規表現マッチングを介してルートをマッチングできます。 [推奨、ルートの追加と照合を開始すると、これをさらに活用できるようになります]

  • --with-file-aio-デフォルトのファイル送信オプションよりも優れた非同期I/Oを有効にします(ユーザーに静的ファイルのダウンロードを許可する場合に推奨)

  • --with-http_realip_moduleは、ロードバランサーの背後にあるときにクライアントのIPを取得するために使用されます。 これは、CloudFlareのようなサービスの背後でコンテンツを提供するときに役立ちます。

  • --without-http_scgi_module-SCGIモジュールを無効にします(通常、CGIスクリプトを実行するときに使用されます)

  • --without-http_uwsgi_module-UWSGIモジュールを無効にします(通常、CGIスクリプトの実行時に使用されます)

  • --without-http_fastcgi_module-FastCGIモジュールを無効にします(通常、CGIスクリプトを実行するときに使用されます)

構成オプション

cd nginx

./configure \
--user=nginx                          \
--group=nginx                         \
--prefix=/etc/nginx                   \
--sbin-path=/usr/sbin/nginx           \
--conf-path=/etc/nginx/nginx.conf     \
--pid-path=/var/run/nginx.pid         \
--lock-path=/var/run/nginx.lock       \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module        \
--with-http_stub_status_module        \
--with-http_ssl_module                \
--with-pcre                           \
--with-file-aio                       \
--with-http_realip_module             \
--without-http_scgi_module            \
--without-http_uwsgi_module           \
--without-http_fastcgi_module

nginxソースのコンパイル

pre-requisitesステップでインストールしたコンパイラ(gcc、g ++)などの追加要件をチェックするソースを構成できるようになったら、次のようにします。

 make
 make install

VPSの実行

  1. ユーザーnginxをシステムに追加します。 これは1回限りのコマンドです。

     useradd -r nginx
    
  2. システムの起動時に実行するファイル/etc/init.d/nginxを設定する必要があります。

     #!/bin/sh
     #
     # nginx - this script starts and stops the nginx daemin
     #
     # chkconfig:   - 85 15
     # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
     #               proxy and IMAP/POP3 proxy server
     # processname: nginx
     # config:      /etc/nginx/nginx.conf
     # pidfile:     /var/run/nginx.pid
     # user:        nginx
     
     # Source function library.
     . /etc/rc.d/init.d/functions
     
     # Source networking configuration.
     . /etc/sysconfig/network
     
     # Check that networking is up.
     [ "$NETWORKING" = "no" ] && exit 0
     
     nginx="/usr/sbin/nginx"
     prog=$(basename $nginx)
     
     NGINX_CONF_FILE="/etc/nginx/nginx.conf"
     
     lockfile=/var/run/nginx.lock
     
     start() {
         [ -x $nginx ] || exit 5
         [ -f $NGINX_CONF_FILE ] || exit 6
         echo -n $"Starting $prog: "
         daemon $nginx -c $NGINX_CONF_FILE
         retval=$?
         echo
         [ $retval -eq 0 ] && touch $lockfile
         return $retval
     }
     
     stop() {
         echo -n $"Stopping $prog: "
         killproc $prog -QUIT
         retval=$?
         echo
         [ $retval -eq 0 ] && rm -f $lockfile
         return $retval
     }
     
     restart() {
         configtest || return $?
         stop
         start
     }
     
     reload() {
         configtest || return $?
         echo -n $"Reloading $prog: "
         killproc $nginx -HUP
         RETVAL=$?
         echo
     }
     
     force_reload() {
         restart
     }
     
     configtest() {
       $nginx -t -c $NGINX_CONF_FILE
     }
     
     rh_status() {
         status $prog
     }
     
     rh_status_q() {
         rh_status >/dev/null 2>&1
     }
     
     case "$1" in
         start)
             rh_status_q && exit 0
             $1
             ;;
         stop)
             rh_status_q || exit 0
             $1
             ;;
         restart|configtest)
             $1
             ;;
         reload)
             rh_status_q || exit 7
             $1
             ;;
         force-reload)
             force_reload
             ;;
         status)
             rh_status
             ;;
         condrestart|try-restart)
             rh_status_q || exit 0
                 ;;
         *)
             echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
             exit 2
     esac
    

    オプションで、次の場所からソースを入手できます。

     wget -O /etc/init.d/nginx https://gist.github.com/sairam/5892520/raw/b8195a71e944d46271c8a49f2717f70bcd04bf1a/etc-init.d-nginx
    

    このファイルは、’service nginxを介して使用できるように、実行可能にする必要があります。 ‘:

     chmod +x /etc/init.d/nginx
    
  3. システムが起動するたびに開始するようにサービスを設定します。

     chkconfig --add nginx
     chkconfig --level 345 nginx on
    
  4. /etc/nginx/nginx.confを設定して、増やす必要のあるtypes_hash_bucket_sizeserver_names_hash_bucket_sizeを設定します。

     http {
         include       mime.types;
         default_type  application/octet-stream;
     	# add the below 2 lines under http around line 20
         types_hash_bucket_size 64;
         server_names_hash_bucket_size 128;
    
  5. サーバーを起動します。 これにより、ポート80でVPSが開始されます。

     service nginx start
    

セットアップ完了

example.comまたはブラウザのIPアドレスにアクセスします。 次のように表示されます。

Welcome to nginx!

おめでとう! 新しいnginxサーバーが稼働しています。

メンテナンス

nginxバイナリが変更されたら、nginxサーバーを再起動します:service nginx restart

nginx.confが変更されたときにnginxをリロードします:service nginx reload

nginxWebサーバーの構成

最新バージョンへのアップグレード

http://nginx.org/en/download.htmlから現在のnginxバージョンを取得しましょう

次のコマンドを実行して、ソースをダウンロードします。

ssh [email protected]
cd ~/src/
nginxVersion="1.5.5" # set the value here from nginx website
wget http://nginx.org/download/nginx-$nginxVersion.tar.gz
tar -xzf nginx-$nginxVersion.tar.gz
rm nginx # removes the soft link
ln -sf nginx-$nginxVersion nginx

cd nginx

./configure \
--user=nginx                          \
--group=nginx                         \
--prefix=/etc/nginx                   \
--sbin-path=/usr/sbin/nginx           \
--conf-path=/etc/nginx/nginx.conf     \
--pid-path=/var/run/nginx.pid         \
--lock-path=/var/run/nginx.lock       \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module        \
--with-http_stub_status_module        \
--with-http_ssl_module                \
--with-pcre                           \
--with-file-aio                       \
--with-http_realip_module             \
--without-http_scgi_module            \
--without-http_uwsgi_module           \
--without-http_fastcgi_module

make
make install

service nginx restart

nginxに関するその他のリソース

DigitalOceanのnginxに関するリソース