RHEL / CentOS 7.0のソースから「Nginx1.10.0」(安定版リリース)をインストールしてコンパイルします


Nginx は、無料のオープンソースモジュラーモデル、高性能、安定性、シンプルな構成ファイル、非同期アーキテクチャ(イベント駆動型)、必要なリソースが少ないため、パブリックインターネット向けサーバーで今日最も急速に成長しているウェブサーバーです。走る。

  1. Minimal Installation of RHEL 7.0
  2. Active RedHat Subscription and Repositories on RHEL 7.0
  1. Minimal Installation of CentOS 7.0
  1. Set Static IP Address on RHEL/CentOS 7.0

このチュートリアルでは、ソースからRed HatEnterpriseまたはCentOS7に最新の安定バージョンの Nginx 1.10.0 をインストールする方法について説明します。公式のRHEL/CentOS7リポジトリミラーはバイナリパッケージを提供していないためです。ソースのインストールを回避したい場合は、次のように、Yum Package Managerを使用して、公式のNginxリポジトリを追加し、バイナリパッケージ(使用可能なバージョンは 1.9.x )をインストールできます。

RHEL/CentOS 7のnginx公式yumリポジトリを有効にするには、次の内容のファイル/etc/yum.repos.d/nginx.repoを作成します。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

使用しているディストリビューションに応じて、「centos」を「rhel」に置き換え、次に示すように、yumパッケージマネージャーを使用してnginxをインストールします。

# yum install nginx

重要:上記の公式nginx yumリポジトリに従うと、古いバージョンのnginxが提供されることに注意してください。本当に最新バージョンのNginxをビルドしたい場合は、以下に示すようにソースインストールに従うことをお勧めします。

ソースのコンパイルとインストールを使用すると、いくつかの利点があります。利用可能な最新バージョンをインストールできるため、モジュールを追加または削除したり、インストールシステムパスを変更したり、その他の重要な設定を行ったりして、Nginx構成を微調整できます。インストールプロセスを完全に制御します。

ステップ1:Nginxをダウンロード、コンパイル、インストールする

1. Nginxのコンパイルとインストールのプロセスを開始する前に、 C/C ++コンパイラ、PCRE (Perl互換正規式)、 Zlib 圧縮ライブラリ、および OpenSSL <があることを確認してください。/b>(SSLサポートを使用してNxingを実行する場合)次のコマンドを発行して、マシンにインストールされたパッケージ。

# yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirror.net.in
 * extras: centos.mirror.net.in
 * updates: centos.mirror.net.in
Package 1:make-3.82-21.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.8.5-4.el7 will be installed
--> Processing Dependency: libgomp = 4.8.5-4.el7 for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: cpp = 4.8.5-4.el7 for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: libgcc >= 4.8.5-4.el7 for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-4.8.5-4.el7.x86_64
---> Package gcc-c++.x86_64 0:4.8.5-4.el7 will be installed
--> Processing Dependency: libstdc++-devel = 4.8.5-4.el7 for package: gcc-c++-4.8.5-4.el7.x86_64
--> Processing Dependency: libstdc++ = 4.8.5-4.el7 for package: gcc-c++-4.8.5-4.el7.x86_64
---> Package openssl-devel.x86_64 1:1.0.1e-51.el7_2.4 will be installed
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-51.el7_2.4 for package: 1:openssl-devel-1.0.1e-51.el7_2.4.x86_64
--> Processing Dependency: krb5-devel(x86-64) for package: 1:openssl-devel-1.0.1e-51.el7_2.4.x86_64
---> Package pcre-devel.x86_64 0:8.32-15.el7 will be installed
--> Processing Dependency: pcre(x86-64) = 8.32-15.el7 for package: pcre-devel-8.32-15.el7.x86_64
---> Package zlib-devel.x86_64 0:1.2.7-15.el7 will be installed
--> Processing Dependency: zlib = 1.2.7-15.el7 for package: zlib-devel-1.2.7-15.el7.x86_64
...

2. Nginxの公式ページに移動し、 wget コマンドを使用して利用可能な最新の安定バージョン( nginx 1.10.0 )を取得し、TARアーカイブを抽出し、を使用してNginx抽出ディレクトリに入ります。次のコマンドシーケンス。

# wget http://nginx.org/download/nginx-1.10.0.tar.gz
# tar xfz nginx-1.10.0.tar.gz
# cd nginx-1.10.0/
# ls -all
--2016-03-21 09:30:15--  http://nginx.org/download/nginx-1.10.0.tar.gz
Resolving nginx.org (nginx.org)... 206.251.255.63, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|206.251.255.63|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 908954 (888K) [application/octet-stream]
Saving to: ‘nginx-1.10.0.tar.gz’

100%[=====================================================================================================================================================>] 9,08,954    81.0KB/s   in 11s    

2016-03-21 09:30:27 (77.4 KB/s) - ‘nginx-1.10.0.tar.gz’ saved [908954/908954]

3.次のステップは、Nginxのインストールプロセスをカスタマイズすることです。 configure ファイルを使用して、次のコマンドを使用してコンパイルプロセスに必要な構成オプションとモジュールを視覚化し、nginx-1.6.0 /パスにいることを確認します。

# ./configure --help
-help                             print this message

  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --modules-path=PATH                set modules path
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname

  --user=USER                        set non-privileged user for
                                     worker processes
  --group=GROUP                      set non-privileged group for
                                     worker processes

  --build=NAME                       set build name
  --builddir=DIR                     set build directory

  --with-select_module               enable select module
  --without-select_module            disable select module
  --with-poll_module                 enable poll module
  --without-poll_module              disable poll module

  --with-threads                     enable thread pool support

  --with-file-aio                    enable file AIO support
  --with-ipv6                        enable IPv6 support

  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-http_v2_module              enable ngx_http_v2_module
...

4.次に、特定の構成と有効または無効なモジュールを使用してNginxをコンパイルします。このチュートリアルでは、以下のモジュールと仕様が使用されていますが、必要に応じてコンパイルを微調整できます。

  1. –user=nginx –group=nginx => system user and group that Nginx will run as.
  2. –prefix=/etc/nginx => directory for server files (nginx.conf file and other configuration files) – default is /usr/local/nginx directory.
  3. –sbin-path=/usr/sbin/nginx => Nginx executable file location.
  4. –conf-path=/etc/nginx/nginx.conf => sets the name for the nginx.conf configuration file – you can change it.
  5. –error-log-path=/var/log/nginx/error.log => sets Nginx error log file location.
  6. –http-log-path=/var/log/nginx/access.log => sets Nginx access log file location.
  7. –pid-path=/var/run/nginx.pid => sets the name for main process ID file.
  8. –lock-path=/var/run/nginx.lock => sets the name for Nginx lock file.
  9. –with-http_ssl_module => enables building the HTTPS module – not built by default and requires OpenSSL library.
  10. –with-pcre => sets the path to the sources of the PCRE library – not built by default and requires PCRE library.

すべてのNginxモジュールのリストを表示するには、Nginx Wiki Webページ(http://wiki.nginx.org/Modules)にアクセスしてください。

Nginxに特定のモジュールをインストールする必要がない場合は、次のコマンドを使用してそのモジュールを無効にできます。

--without-module_name

次に、次のコマンドを発行してNginxのコンパイルを開始します。このコマンドは、上記で説明したすべての構成とモジュールを使用します(コマンドが1行にあることを確認してください)。

# ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre
checking for OS
 + Linux 3.10.0-229.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for O_PATH ... found
checking for sendfile() ... found
checking for sendfile64() ... found
checking for sys/prctl.h ... found
checking for prctl(PR_SET_DUMPABLE) ... found
checking for sched_setaffinity() ... found
checking for crypt_r() ... found
checking for sys/vfs.h ... found
checking for poll() ... found
checking for /dev/poll ... not found
...

5.コンパイルプロセスは、GNU Cコンパイラ、PCRE、OpenSSLライブラリなどのシステムに必要なすべてのユーティリティを検証した後、 make.conf ファイルを作成し、すべての構成の概要を出力します。

Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1: using OpenSSL library
  + using system zlib library

  nginx path prefix: "/etc/nginx"
  nginx binary file: "/usr/sbin/nginx"
  nginx modules path: "/etc/nginx/modules"
  nginx configuration prefix: "/etc/nginx"
  nginx configuration file: "/etc/nginx/nginx.conf"
  nginx pid file: "/var/run/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

6.最後のステップは、 make コマンドを使用してバイナリをビルドすることです。これは、マシンリソースによっては完了するまでに時間がかかる場合があり、 make install を使用してシステムにNginxをインストールします。コマンド。

インストールを実行するには、 makeinstallにはroot権限が必要であることに注意してください。したがって、rootアカウントでログインしていない場合は、 sudo の権限ユーザーを使用してください。

# make
# make install
make -f objs/Makefile
make[1]: Entering directory `/root/nginx-1.10.0'
make[1]: Warning: File `src/core/nginx.h' has modification time 3110036 s in the future
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/nginx.o \
	src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_log.o \
	src/core/ngx_log.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_palloc.o \
	src/core/ngx_palloc.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_array.o \
	src/core/ngx_array.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_list.o \
	src/core/ngx_list.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_hash.o \
	src/core/ngx_hash.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_buf.o \
	src/core/ngx_buf.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_queue.o \
...
make -f objs/Makefile install
make[1]: Entering directory `/root/nginx-1.10.0'
make[1]: Warning: File `src/core/nginx.h' has modification time 3109935 s in the future
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/nginx.o \
	src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_log.o \
	src/core/ngx_log.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_palloc.o \
	src/core/ngx_palloc.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_array.o \
	src/core/ngx_array.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_list.o \
	src/core/ngx_list.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_hash.o \
	src/core/ngx_hash.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_buf.o \
	src/core/ngx_buf.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_queue.o \
...

ステップ2:Nginxを微調整してINITスクリプトを作成する

7.インストールプロセスが正常に終了したら、 nginx システムユーザー(ホームディレクトリとして/etc/nginx/を使用し、有効なシェルはありません)、そのユーザーをNginxに追加します。次のコマンドを発行すると、のように実行されます。

# useradd -d /etc/nginx/ -s /sbin/nologin nginx

8.コンパイルプロセスで、Nginxが nginx システムユーザーから実行されるように指定したため、 nginx.conf ファイルを開き、ユーザーステートメントを nginx

# nano /etc/nginx/nginx.conf

ここで、次のオプションを使用して、ユーザーを見つけて変更し、ルートロケーションステートメントを文書化します。

user nginx;
location / {
                root /srv/www/html;
                autoindex on;
                index index.html index.htm;

9. Nginxを起動する前に、Webドキュメントのルートパスが作成されていることを確認してから、次のコマンドを使用してnginxを起動します。

# mkdir -p /srv/www/html
# /usr/sbin/nginx

シェルプロンプトを使用してNginxが実行されているかどうかを確認する場合は、 netstat コマンドを実行してリッスン接続を確認します。

# netstat -tulpn | grep nginx

10.リモートシステムから確認するには、ファイアウォールルールを追加して、ポート 80 で外部への接続を開き、ブラウザを開いて、サーバーのIPアドレス( http:// server_IP)にURLを送信します。

# firewall-cmd --add-service=http  ## For on-fly rule
# firewall-cmd --permanent --add-service=http  ## For permanent rule
# systemctl restart firewalld

11. Nginxプロセスを管理するには、次のコマンドを使用します。

  1. nginx -V = displays Nginx modules and configurations
  2. nginx -h = help options
  3. nginx = start Nginx process
  4. nginx -s stop = stop Nginx process
  5. nginx -s reload = reload Nginx process
# nginx -V
nginx version: nginx/1.10.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre

12. init RHEL/CentOSスクリプトを使用してNginxデーモンプロセスを管理する必要がある場合は、 /etc/init.d/システムパスに次のnginxファイルを作成します。次に、 service または systemctl コマンドを使用してプロセスを管理できます。

# nano /etc/init.d/nginx

次のファイルコンテンツを追加します。

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#

# 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

13. Nginx initファイルが作成されたら、実行権限を追加し、以下のコマンドオプションを使用してデーモンを管理します。

# chmod +x /etc/init.d/nginx
# service nginx start|stop|restart|reload|force_reload|configtest|condrestart
# systemctl start|stop|restart nginx

14. Nginxをシステム全体で有効にする必要がある場合は、次のコマンドを使用して起動時に開始します。

# chkconfig nginx on

OR

# systemctl enable nginx

それで全部です!これで、RHEL/CentOS7システムに最新バージョンのNginxがインストールされました。次のチュートリアルでは、Nginx FastCGIGatewayを介してPHP-FPMプロセスマネージャーをインストールして有効にする方法について説明します。

また読む:Nginx Webサーバーのパフォーマンスを保護、強化、改善するための究極のガイド

全著作権所有。 © Linux-Console.net • 2019-2022