亞馬遜AWS服務器CentOS/Linux系統Shell安裝Nginx及配置自啓動

領了一個亞馬遜的1年免費服務器,今天嘗試安裝 Nginx 服務器,使用原生的 Shell 方法。javascript

亞馬遜AWS服務器CentOS/Linux系統Shell安裝Nginx及配置自啓動 經驗總結 第1張

爲了方便之後查看,就把過程記錄一下。php

注意:亞馬遜(AWS)服務器默認只能用 user-ec2 帳戶進行登錄,須要切換一下,使用 root 帳戶登錄。不然會由於權限不夠,致使一些軟件或功能沒法安裝。css

參考我以前的文章:使用Xshell登陸亞馬遜AWS EC2服務器&配置root+密碼方式登陸html

系統平臺:Amazon Linux 2 AMI (HVM)java

安裝步驟:

1、安裝編譯工具及庫文件

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

2、首先要安裝 PCRE

PCRE 做用是讓 Nginx 支持 Rewrite 功能。node

注:須要按步驟一步一步操做,特別注意目錄。linux

一、下載 PCRE 安裝包nginx

插:這裏可能會提示 -bash: wget: command not found web

須要安裝 wget 下載工具:若已安裝,直接跳過便可shell

yum -y install wget

安裝完成便可繼續操做。

下載 PCRE 安裝包,下載地址:https://pilotfiber.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz

cd /usr/local/src/ wget https://pilotfiber.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz

二、解壓安裝包:

tar zxvf pcre-8.43.tar.gz

三、進入安裝包目錄

cd pcre-8.43

四、編譯安裝 

這裏可能會提示 -bash: make: command not found ,參考上面 wget 的安裝,若是已經安裝直接跳過。

yum -y install gcc automake autoconf libtool make

而後繼續操做,編譯安裝:

./configure make make install

五、查看 PCRE 版本

pcre-config --version

安裝 Nginx

一、下載 Nginx,下載地址:http://nginx.org/download/nginx-1.16.0.tar.gz

cd /usr/local/src/ wget http://nginx.org/download/nginx-1.16.0.tar.gz

二、解壓安裝包

tar zxvf nginx-1.16.0.tar.gz

三、進入安裝包目錄

cd nginx-1.16.0

四、編譯安裝

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.43 make make install

注意,此處用 pcre2 make 會報錯,建議老實用 pcre ,別問我是怎麼知道的。

五、查看nginx版本

/usr/local/webserver/nginx/sbin/nginx -v

至此,nginx安裝完成。

亞馬遜AWS服務器CentOS/Linux系統Shell安裝Nginx及配置自啓動 經驗總結 第2張

Nginx 配置

建立 Nginx 運行使用的用戶 www:

/usr/sbin/groupadd www  /usr/sbin/useradd -g www www

配置 nginx.conf ,將 /usr/local/webserver/nginx/conf/nginx.conf 替換爲如下內容:

cat /usr/local/webserver/nginx/conf/nginx.conf user www www; worker_processes 2; #設置值和CPU核心數一致 error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日誌位置和日誌級別 pid /usr/local/webserver/nginx/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 65535; events {   use epoll;   worker_connections 65535; } http {   include mime.types;   default_type application/octet-stream;   log_format main  '$remote_addr - $remote_user [$time_local] "$request" '                '$status $body_bytes_sent "$http_referer" '                '"$http_user_agent" $http_x_forwarded_for';    #charset gb2312;   server_names_hash_bucket_size 128;   client_header_buffer_size 32k;   large_client_header_buffers 4 32k;   client_max_body_size 8m;   sendfile on;   tcp_nopush on;   keepalive_timeout 60;   tcp_nodelay on;   fastcgi_connect_timeout 300;   fastcgi_send_timeout 300;   fastcgi_read_timeout 300;   fastcgi_buffer_size 64k;   fastcgi_buffers 4 64k;   fastcgi_busy_buffers_size 128k;   fastcgi_temp_file_write_size 128k;   gzip on;    gzip_min_length 1k;   gzip_buffers 4 16k;   gzip_http_version 1.0;   gzip_comp_level 2;   gzip_types text/plain application/x-javascript text/css application/xml;   gzip_vary on;  #limit_zone crawler $binary_remote_addr 10m;  #下面是server虛擬主機的配置  server   {     listen 80;#監聽端口     server_name localhost;#域名     index index.html index.htm index.php;     root /usr/local/webserver/nginx/html;#站點目錄       location ~ .*\.(php|php5)?$     {       #fastcgi_pass unix:/tmp/php-cgi.sock;       fastcgi_pass 127.0.0.1:9000;       fastcgi_index index.php;       include fastcgi.conf;     }     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$     {       expires 30d;   # access_log off;     }     location ~ .*\.(js|css)?$     {       expires 15d;    # access_log off;     }     access_log off;   } }

檢查配置文件 nginx.conf 的正確性命令:

/usr/local/webserver/nginx/sbin/nginx -t

亞馬遜AWS服務器CentOS/Linux系統Shell安裝Nginx及配置自啓動 經驗總結 第3張

啓動 Nginx:

/usr/local/webserver/nginx/sbin/nginx #啓動Nginx ps -ef|grep nginx #查看Nginx進程

訪問站點:

從瀏覽器訪問咱們配置的站點ip:

亞馬遜AWS服務器CentOS/Linux系統Shell安裝Nginx及配置自啓動 經驗總結 第4張

Nginx 其餘命令:

/usr/local/webserver/nginx/sbin/nginx -s reload            # 從新載入配置文件 /usr/local/webserver/nginx/sbin/nginx -s reopen            # 重啓 Nginx /usr/local/webserver/nginx/sbin/nginx -s stop              # 中止 Nginx

設置 Nginx 開機自啓:

方法一:該腳原本自 Nginx 官方,腳本地址:http://wiki.nginx.org/RedHatNginxInitScript :

首先,在 linux 系統的 /etc/init.d/ 目錄下建立 nginx 文件,使用以下命令:

vim /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 # config:      /etc/sysconfig/nginx # pidfile:     /var/run/nginx.pid # 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/local/webserver/nginx/sbin/ngin" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/webserver/nginx/conf/nginx.conf" [ -/etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() {    # make required directories    user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`    if [ -"$user" ]; then       if [ -"`grep $user /etc/passwd`" ]; then          useradd --/bin/nologin $user       fi       options=`$nginx -V 2>&1 | grep 'configure arguments:'`       for opt in $options; do           if [ `echo $opt | grep '.*-temp-path'` ]; then               value=`echo $opt | cut -d "=" -f 2`               if [ ! -"$value" ]; then                   # echo "creating" $value                   mkdir -p $value && chown -R $user $value               fi           fi        done     fi } start() {     [ -x $nginx ] || exit 5     [ -f $NGINX_CONF_FILE ] || exit 6     make_dirs     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     sleep 1     start } reload() {     configtest || return $?     echo -n $"Reloading $prog: "     killproc $nginx -HUP     RETVAL=$?     echo } force_reload() {     restart } configtest() {   $nginx --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

按鍵盤的 ESC 鍵進入命令模式,輸入 :wq 保存並退出 vim 。

不過要注意,若是你是自定義編譯安裝的 nginx ,須要根據您的安裝路徑修改上方代碼中的這兩項配置:(以上代碼已修改成咱們上方的路徑)

nginx="/usr/local/webserver/nginx/sbin/nginx" #修改爲Nginx執行程序的路徑。
NGINX_CONF_FILE="/usr/local/webserver/nginx/conf/nginx.conf" #修改爲配置文件的路徑。

保存腳本文件後設置文件的執行權限:

chmod a+/etc/init.d/nginx

而後,就能夠經過該腳本對nginx服務進行管理了:

/etc/init.d/nginx start /etc/init.d/nginx stop

使用 chkconfig 進行管理:

上面的方法完成了用腳本管理 Nginx 服務的功能,可是仍是不太方便,好比要設置 Nginx 開機啓動等。這時可使用 chkconfig 來設置。

先將 Nginx 服務加入 chkconfig 管理列表:

chkconfig --add /etc/init.d/nginx

而後,就可使用 service 對 Nginx 進行啓動,重啓等操做了。

service nginx start
service nginx stop

設置終端模式開機啓動:

chkconfig nginx on

參考自:http://blog.csdn.net/boyish_/article/details/51768784

方法二:

在腳本中添加以下命令:

#!/bin/bash # nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: - 85 15# description: Nginx is a high-performance web and proxy server. #              It has a lot of features, but it's not for everyone.# processname: nginx # pidfile: /var/run/nginx.pid # config: /usr/local/nginx/conf/nginx.conf nginxd=/usr/local/webserver/nginx/sbin/nginx nginx_config=/usr/local/webserver/nginx/conf/nginx.conf nginx_pid=/var/run/nginx.pid RETVAL=0prog="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[ -x $nginxd ] || exit 0# Start nginx daemons functions. start() {if [ -e $nginx_pid ];then    echo "nginx already running...."    exit 1fi    echo -n $"Starting $prog: "    daemon $nginxd -c ${nginx_config}    RETVAL=$?    echo    [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx   return $RETVAL } # Stop nginx daemons functions. stop() {         echo -n $"Stopping $prog: "         killproc $nginxd         RETVAL=$?         echo         [ $RETVAL = 0 ] && rm -/var/lock/subsys/nginx /var/run/nginx.pid } # reload nginx service functions. reload() {     echo -n $"Reloading $prog: "     #kill -HUP `cat ${nginx_pid}`     killproc $nginxd -HUP     RETVAL=$?     echo } # See how we were called.case "$1" instart)         start         ;; stop)         stop         ;; reload)         reload         ;; restart)         stop         start         ;; status)         status $prog         RETVAL=$?         ;;*)         echo $"Usage: $prog {start|stop|restart|reload|status|help}"         exit 1esac exit $RETVAL
注意配置裏的路徑,須要將路徑改成本身的相應路徑。

接着,設置文件的訪問權限:

chmod a+/etc/init.d/nginx; #(a+x參數表示 ==> all user can execute  全部用戶可執行)

最後將 Ngix加入到 rc.local 文件中,這樣開機的時候 Nginx 就默認啓動了

vi /etc/rc.local

添加

/etc/init.d/nginx start

保存並退出。

下次重啓就會生效,實現 Nginx 的自啓動。

https://www.w3h5.com/post/335.html

相關文章
相關標籤/搜索