Linux學習之路(三) — 搭建nginx伺服器

weixin_34413065發表於2019-02-18

簡介

官網簡介:nginx [engine x]是一個 HTTP 和反向代理伺服器,一個郵件代理伺服器和一個通用的 TCP / UDP 代理伺服器,最初由 Igor Sysoev 編寫

下載安裝 nginx

  1. 安裝 nginx 之前需要安裝一些依賴包。
# 編譯需要依賴 gcc 環境
yum install gcc-c++    

# Perl庫,包括 perl 相容的正規表示式庫。
# nginx 的 http 模組使用 pcre 來解析正規表示式,所以需要在 linux 上安裝 pcre 庫
# pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫
yum install -y pcre pcre-devel    

# zlib 庫提供了很多種壓縮和解壓縮的方式
yum install -y zlib zlib-devel

# 使 nginx 支援 https 協議
yum install -y openssl openssl-devel
  1. 下載 nginx
12088969-cbb6f45d7e583c3d.png
nginx_download
  • 使用 wget 命令下載
wget -c https://nginx.org/download/nginx-1.14.2.tar.gz
  1. 安裝
# 解壓安裝包。
tar -zxvf nginx-1.10.1.tar.gz
# 進入解壓後的檔案目錄。
cd nginx-1.10.1
# 使用預設配置(也可以自定義配置,不是太懂的最好還是老老實實的使用預設的)
./configure

# 編譯安裝
make
make install

# 檢視 nginx 安裝路徑
whereis nginx
  1. 配置 nginx.conf

使用包含檔案的形式進行配置(推薦)
遮蔽掉 nginx 裡面的 server {} 預設配置,在 http {} 中間加一句 include /usr/local/nginx/conf/vhost/*.conf;

#user  nobody;
worker_processes  1;

error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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"';

    access_log  logs/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;


    include /usr/local/nginx/conf/vhost/*.conf;

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

按照上面的路徑,新建 vhost 資料夾,在 vhost 資料夾新建 test.apitest.com.conf 檔案。
test.apitest.com.conf 檔案寫入以下的內容,儲存並退出。

server {
        listen       80;
        server_name  test.apitest.com;
        charset utf-8;
        root  /var/www/html/project;

        location / {
            index index.php index.html index.htm ;
            # include /usr/local/nginx/conf/rewrite/apitest.conf;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            fastcgi_param  PATH_INFO      $fastcgi_path_info;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
}
  1. nginx 的一些常規命令(比較麻煩,下面有變簡單的方法)
cd /usr/local/nginx/sbin/

./nginx -t    # 檢查 nginx 配置檔案

./nginx -s start    # 啟動

./nginx -s stop    # 停止,也可以使用 ./nginx -s quit

./nginx -s reload    # 重啟。

新增 nginx 到系統服務

  1. 建立 nginx 啟動命令指令碼
vi /etc/init.d/nginx
  1. 插入以下內容,注意修改PATH和NAME欄位,匹配自己的安裝路徑
#! /bin/bash
# chkconfig: - 85 15
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
  1. 設定執行許可權
chmod a+x /etc/init.d/nginx
  1. 註冊成服務
chkconfig --add nginx
  1. 設定開機啟動
chkconfig nginx on
  1. 重啟虛擬機器,檢視 nginx 是否自動執行。
shutdown -h 0 -r
netstat -apn|grep nginx
  1. 加入系統服務後的 nginx 啟動/關閉/重啟 命令
systemctl start nginx    # 啟動 nginx 

systemctl stop nginx    # 停止 nginx

systemctl restart nginx    # 重啟 nginx

systemctl reload nginx    # 重新讀取nginx的配置(這個最常用, 不用停止 nginx 服務就能使修改的配置生效)
  1. 但這個時候你會發現 nginx -t 還是不能使用,原因是因為沒有將 nginx 加入環境變數。
# 開啟環境變數檔案。
vi /etc/profile

# 在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 之前新增以下內容。
NGINX_PATH='/usr/local/nginx'
export PATH=$PATH:$NGINX_PATH/sbin

儲存退出,執行 source /etc/profile 使其配置生效。
這樣就可以在任何地方使用 nginx 了。

參考

相關文章