nginx——linux環(huán)境下載安裝使用

最近在部署項(xiàng)目包括申請(qǐng)環(huán)境之類的東西,感觸倒是也比較多,總想著記一記筆記。但是因?yàn)榉N種原因一拖再拖。今天終于下定決定從頭整理。
幾年前上家公司做過部署,但是因?yàn)橐?guī)模小,所以所謂的服務(wù)器倒也是windows系統(tǒng),當(dāng)時(shí)也整理了線上環(huán)境搭建的簡單過程。簡單的線上環(huán)境搭建教程
不過這次部署是linux系統(tǒng),并且用到了一直傳說中的docker,差別蠻大的。這次是從一個(gè)空服務(wù)器開始的,整體分為三塊:

  • nginx下載安裝使用
  • docker私庫創(chuàng)建
  • docker啟動(dòng)

Nginx下載

下載地址是這個(gè):
http://nginx.org/en/download.html
我這邊下載的是linux系統(tǒng)的穩(wěn)定版:

image.png

下載完之后我這邊的安裝是完全按照推薦路徑來的,也就是/usr/local/nginx。第一次頭鐵想要自定義路徑,后來發(fā)現(xiàn)和現(xiàn)有的各種教程有出入,改來改去賊麻煩,也就認(rèn)輸了。然后nginx需要一些依賴,我們?cè)诎惭b之前下載就行:
這里說個(gè)插曲,因?yàn)槲覀冞@個(gè)服務(wù)器是公司提供的,一開始下載依賴都會(huì)報(bào)錯(cuò),后來發(fā)現(xiàn)是服務(wù)器設(shè)置的問題,找了安全團(tuán)隊(duì)解決的。之所以這里單獨(dú)說下是因?yàn)橐婚_始不敢確定是啥問題,自己鼓搗好久,總是懷疑是我命令或者操作有問題。浪費(fèi)了一些時(shí)間,反正大家以后如果看到這個(gè)報(bào)錯(cuò),可以第一時(shí)間往網(wǎng)絡(luò)上想。
下載依賴報(bào)錯(cuò)

繼續(xù)說nginx所需要的依賴:

  1. gcc環(huán)境:

yum install gcc-c++

  1. pere(解析正則的一個(gè)三方包)

yum install -y pcre pcre-devel

  1. zlib(壓縮和解壓的一個(gè)包)

yum install -y zlib zlib-devel

  1. openssl(如其名,用于支持https請(qǐng)求的一個(gè)三方包)

yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

nginx安裝過程

解壓

首先第一步下載的nginx包傳到服務(wù)器上,解壓到推薦目錄下(這個(gè)目錄其實(shí)是有點(diǎn)講究的,屬于約定俗成的一個(gè)東西,usr算是linux的系統(tǒng)級(jí)目錄,一般用戶自己安裝的軟件都建議放在/usr/local下。):

tar -xvf nginx-1.14.0.tar.gz -C /usr/local

解壓nginx

創(chuàng)建makeFile文件

解壓完成后,進(jìn)入到/usr/local/nginx-xxx目錄下(如果你的解壓地址和我上面說的一樣)然后執(zhí)行下面這一串命令:

./configure
--prefix=/usr/local/nginx
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--with-http_gzip_static_module
--http-client-body-temp-path=/var/temp/nginx/client
--http-proxy-temp-path=/var/temp/nginx/proxy
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi
--http-scgi-temp-path=/var/temp/nginx/scgi
--with-http_stub_status_module
--with-http_ssl_module
--with-file-aio
--with-http_realip_module

需要注意的是如果報(bào)錯(cuò):bash: ./configure: No such file or directory。
那我的建議是如下兩步操作:

  • 檢查我們的nginx解壓包里有沒有configure,可以用如下命令:

find -name configure

  • 在/usr/local/下創(chuàng)建nginx目錄,命令如下:

mkdir nginx

這幾步?jīng)]啥難度,但是需要注意目錄切換。


image.png

確定nginx源碼目錄下有makefile文件即可


image.png

創(chuàng)建臨時(shí)文件目錄

mkdir /var/temp/nginx -p

然后在nginx源碼目錄下編譯和安裝即可,命令如下(感覺執(zhí)行第二個(gè)的時(shí)候沒啥效果,不過因?yàn)槲耶?dāng)時(shí)兩個(gè)都執(zhí)行了,所以無法驗(yàn)證第二個(gè)命令到底是不是必須的了):


image.png

make
make install

然后我們打開/usr/local/nginx的目錄結(jié)構(gòu),如果包括cong,html,sbin。說明應(yīng)該沒問題。其中sbin中是執(zhí)行文件,conf是配置文件。html是頁面。

nginx命令

上面應(yīng)該是安裝完了,下面我們可以啟動(dòng)下試試,注意這個(gè)命令在sbin目錄下執(zhí)行

./nginx

正常來講這個(gè)時(shí)候nginx就可以啟動(dòng)了。然后這里如果報(bào)各種亂七八糟的問題,可以針對(duì)性百度或者排查。比如如果顯示端口被占用,可以考慮是不是80端口被占用了,我們可以搜一下:

netstat -ntlp

我個(gè)人當(dāng)時(shí)就遇到了這個(gè)問題,這里建議最開始用nginx默認(rèn)的配置文件啟動(dòng)。因?yàn)槟J(rèn)的沒啥配置,可以排除因?yàn)榕渲梦募懙挠袉栴}啟動(dòng)不了。然后確定nginx啟動(dòng)沒問題了,我們?cè)偃バ薷呐渲梦募?,一點(diǎn)點(diǎn)做成我們想要的配置。
下面列幾個(gè)我們常用的命令:

  1. 啟動(dòng)nginx:

./nginx

  1. 刷新nginx配置文件:

./nginx -s reload

  1. 停止nginx:

./nginx -s stop

  1. nginx的啟動(dòng)/停止都要在sbin目錄下執(zhí)行
  2. nginx 的配置文件位于/usr/local/conf目錄下的nginx.conf文件

至于nginx的配置,說簡單也簡單,說難也挺復(fù)雜。反正我是多次重啟反復(fù)嘗試才算是配置了一個(gè)勉強(qiáng)能用的配置文件。個(gè)人建議就是遇到問題百度吧,我這邊把配置文件貼出來分享下:

worker_processes  4;
error_log  logs/error.log  debug;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens on;
    server_names_hash_bucket_size 64;
    server_names_hash_max_size 2048;
    sendfile on;
    
    server {
        listen 443 ssl;
        server_name cnbu.xxx.com; 
        rewrite ^/$ https://cnbu.xxx.com/xxx-ui/ permanent; 
        root html;
        index index.html index.htm;
        ssl_certificate cnbu_xxx_com.crt;
        ssl_certificate_key cnbu_xxx_com.key;   
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   
        ssl_prefer_server_ciphers on;
        location /xxx-ui/ {
            client_max_body_size 8M;
            client_body_buffer_size 128k;
            fastcgi_intercept_errors on;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
            add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
            proxy_pass http://10.96.178.81:81/xxx-ui/;
            proxy_set_header        Host                    $http_host;
            proxy_set_header        X-Real-IP               $remote_addr;
            proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto       $scheme;
            proxy_set_header        X-Forwarded-Port        $server_port;
            proxy_connect_timeout 300s;
            proxy_send_timeout 300s;
            proxy_read_timeout 300s;
        }
    }


    server {
        listen       80;
        server_name  localhost;

        location / {
            return 301 https://cnbu.xxx.com; 
        }
        location /admin {
            client_max_body_size 8M;
            client_body_buffer_size 128k;
            fastcgi_intercept_errors on;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
            add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
            proxy_pass http://10.96.178.81:1338;
            proxy_set_header        Host                    $http_host;
            proxy_set_header        X-Real-IP               $remote_addr;
            proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto       $scheme;
            proxy_set_header        X-Forwarded-Port        $server_port;
            proxy_connect_timeout 300s;
            proxy_send_timeout 300s;
            proxy_read_timeout 300s;    
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

至此,這個(gè)nginx就搭建完成。本篇筆記就到這里,如果對(duì)你稍有幫助記得點(diǎn)個(gè)喜歡點(diǎn)個(gè)關(guān)注。大家工作愉快吧~!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容