ios中amplify配置configure_Nginx源码编译安装及配置文件初步学习
????通過源碼編譯安裝。
nginx.org #官網地址???# 安裝過程???wget?http://nginx.org/download/nginx-1.18.0.tar.gz?-P?/usr/src???# tar文件用tar命令解壓???tar?-zxvf?nginx-1.18.0.tar.gz關于wget的-P參數,manual中的解釋是
prefix,Set directory prefix to prefix????./configure
????源碼安裝三步曲,配置-編譯-安裝,和上一篇文章介紹python源碼安裝相同。我們進入到解壓后的nginx目錄下面,可以看到這個configure,其類似于windows系統上的exe,我們也可以使用./configure --help來查看幫助
????因為我的云服務器上已經安裝了相關依賴,所以可以直接進行配置
./configure --prefix=/usr/local/nginx????如果發現配置報錯,可以看下錯誤,大概率是報依賴的錯誤,例如
error: the HTTP rewrite module requires the PCRE library????如果為了省事,在配置之前可以一口氣安裝以下4個依賴,從左到右分別為C語言編譯器,nginx重寫功能,解壓相關的依賴。
yum -y install gcc pcre-devel zlib zlib-devel????依賴安裝完成之后,centos下可以使用如下命令查看版本,此時再進行配置就沒關系了。
rpm -q pcre-devel >>>pcre-devel-8.42-4.el8.x86_64? ? 配置完成之后可能會發現OpenSSL library is not used,這個是專用于將域名從http跳轉到https加密必須要使用的庫。
?????配置完成之后該目錄下會多出一個文件Makefile和一個文件夾objs。
make
??? make將源碼進行編譯,生成可執行程序。
????make之前的obj目錄
????make之后
make install
??? make install,安裝。
????我們可以看到安裝完成之后在服務器上生成了很多文件,以下凡是prefix和path指定的是目錄,而file則指定的是文件。
nginx?path?prefix?#?nginx安裝目錄nginx?binary?file?#?nginx執行程序,二進制文件就是啟動程序nginx?modules?path?#?nginx模塊存放目錄nginx configuration prefix # 配置文件存放目錄nginx configuration file # 配置文件nginx?pid?file # nginx進程號nginx error log file # 錯誤日志nginx http access log file# 使用二進制文件啟動/usr/local/nginx/sbin/nginx????可以看到80端口(nginx默認監聽端口)已經在監聽了,如果此時Linux防火墻和安全組放行了端口號,通過瀏覽器訪問云服務器的公網IP應該是已經可以看到Welcome to nginx!的經典畫面了。(服務的三大要素:端口,監聽地址,協議。)
????我們也可以在云服務器上通過elinks(文本界面瀏覽器)來訪問公網IP,elinks的好處在于沒有緩存!開發測試時都知道緩存有多難受!我的服務器版本是centos8
cat /proc/versionLinux version 4.18.0-147.5.1.el8_1.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)) #1 SMP Wed Feb 5 02:00:39 UTC 2020?
? ? 需要通過PowerTools倉庫,先查看下自己的擁有的倉庫
yum?config-manager?--enable?PowerTools# 加入PowerTools倉庫yum install elinks lynx # 再安裝????此時在服務器上輸入elinks,彈出如下畫面,則說明安裝成功
或者直接 elinks?IP,也可以看見相關內容
? ? 初步了解Nginx全局配置文件nginx.conf(PS:因為我使用Xshell連接的服務器,上傳下載蠻不方便,于是裝了lrzsz,就可以愉快的使用rz和sz快捷的上傳和下載文件,以后再次安裝這個包,我們也許不記得包名,但是可以使用yum search rz來對包名進行搜索)。
在網上找了張釋義圖,蠻形象的
????回歸正文-配置文件每行釋義
#啟動nginx子進程的默認用戶是誰?#user nobody;????查看80端口,發現有兩個nginx,其中上面的是父進程,父進程肯定是由root用戶啟動的。
#子進程數有幾個?一般修改為核數#?工作進程是單進程多線程的# 這里定義的是工作進程數量worker_processes 4;修改用戶(用戶名不是亂加的,須是在/etc/passwd文件下的用戶)和子進程數之后,再次啟動,使用ps命令查看如下所示:
其中root用戶一行STAT為Ss,S表示為休眠狀態,s表示其是進程的領導者(在它之下有子進程)。
#全局錯誤日志的位置及日志格式#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#主進程號#pid?logs/nginx.pid;可以看到正好與上面ps命令查看到的root用戶啟動的主進程ID15427相同,寫到這里又不得不多寫一句,想到之前看過的一篇文章,介紹Unix/Linux 的基本哲學之一,“一切皆是文件”,可以看到我們所謂的進程ID與普通文件的查看方式也沒什么不同。
events { #每個工作進程下的最大線程數 worker_connections 1024;}從上,我們可以知道最大并發數即為最大線程數*工作進程數量。
http服務器設置
#http服務器設置,可以嵌套多個serverhttp {....}在http服務器配置中的參數詳解如下:
#設定mime類型,類型由mime.type文件定義#所有http都走這個模型include mime.types;# 日志記錄格式#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 main此時,我們其實可以看下access.log,大致是這么個東西
從左至右的順序正式我們log_format中定義的數據格式。
??? remote_addr和http_x_forwarded_for用以記錄客戶端的ip地址;
??? remote_user:用于記錄客戶端用戶名稱;
??? time_local:用于記錄訪問時間和時區;
??? request:用于記錄請求的url和http協議;
??? status:記錄請求狀態
??? body_bytes_sent:發送給客戶端文件的html主體內容大小,在前端頁面中對應Response Headers中的Content-Length
??? http_referer:記錄上一個頁面訪問鏈接
??? http_user_agent:客戶瀏覽器的相關信息
#指定nginx是否調用sendfile函數(zero copy方式)來輸出文件#對于普通應用,必須設為onsendfile on;#允許或禁止socke的TCP_CORK的選項,此選項僅在使用sendfile時使用#默認開啟#tcp_nopush on;#長連接超時時間#keepalive_timeout 0;keepalive_timeout??65;#gzip??on;如何配置server?我們是通過server來發布一個網站,一個server就可以發布一個網站,server又被稱作虛擬主機。
server { #虛擬主機使用的端口 listen 80; #虛擬主機的域名是什么 server_name localhost; #虛擬主機支持的字符集 #charset koi8-r; #虛擬主機的訪問日志路徑 #access_log logs/host.access.log main; #定位web的根路徑,即用戶訪問你域名時所訪問的內容 location / { #根目錄路徑下面的html文件夾 #這也可以解釋為什么啟動nginx之后用戶可以看到歡迎頁面,即存在根目錄下的html目錄下 root html; #索引頁 index index.html index.htm; } #grep -r "404"??#error_page??404??????????????/404.html; # redirect server error pages to the static page /50x.html #根據錯誤碼返回對應的頁面 #如果是以下50*的錯誤狀態,那么就讓用戶去訪問/50x.html error_page 500 502 503 504 /50x.html; #當用戶去訪問/50x.html頁面時,定義頁面路徑 location = /50x.html { root html;??}}總結
以上是生活随笔為你收集整理的ios中amplify配置configure_Nginx源码编译安装及配置文件初步学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 俞敏洪回应财富巨幅缩水185亿:那不是我
- 下一篇: Nginx指南和配置详解