前言:html
本文參考了jackyzm的博客:https://www.cnblogs.com/jackyzm/p/9600738.html,進行了內容的更新,並請注意這裏適用的版本是centos7的版本。而且本文的配置方式曾經在版本8上失敗過,所以查看本文前最好先肯定服務器的版本。nginx
而關於nginx部分問題的處理,則是參考了文章:http://www.mamicode.com/info-detail-3008792.html進行,其中包括的部分錯誤以下:c++
1.make[1]: *** [objs/Makefile:473: objs/src/core/ngx_murmurhash.o] Error 1vim
2.make[1]: *** [objs/Makefile:774: objs/src/os/unix/ngx_user.o] Error 1centos
3.make[1]: *** [objs/Makefile:769: objs/src/event/ngx_event_openssl.o] Error 1瀏覽器
本文針對這些問題和一些其餘問題的解決方案都進行了闡述和流程上的改良安全
內容流程:服務器
0.前置說明,1.安裝gcc環境,2.安裝pcre庫,3.安裝ssl庫,4.安裝zlib庫,5.安裝nginx,附:nginx在make過程當中可能出現的問題,6.nginx啓動與使用,7.nginx啓動後沒法訪問的問題解決測試
具體內容:ui
0.前置說明
在centos系統中,yum源不直接提供nginx的安裝,所以能夠經過切換yum源的方法進行nginx的安裝,也能夠經過直接下載依賴庫和nginx安裝包的方法來實現,本文介紹的是後者。
一些必要的庫和nginx的關係:nginx 中gzip模塊須要 zlib 庫,rewrite模塊須要 pcre 庫,ssl 功能須要openssl庫
而後本文將選定/usr/local爲安裝目錄,一些庫的具體版本號各位可根據實際改變,但因爲互相依賴,因此最新的可能存在一些問題,謹慎選擇。
且如下命令均需在root權限下執行
1.安裝gcc gcc-c++(如新環境,未安裝請先安裝)
$ yum install -y gcc gcc-c++
2.安裝pcre庫
$ cd /usr/local/
$ wget https://sourceforge.net/projects/pcre/files/pcre/8.36/pcre-8.36.tar.gz
(注:pcre版本會實時更新,8.36版本一樣是舊版本,若是須要最新版本自行搜索pcre便可,而後選擇新版本,不過新版本可能會不太穩定,須要注意。
當前網址獲取新版本的方法爲訪問:https://sourceforge.net/projects/pcre/files/pcre/)
$ tar -zxvf pcre-8.36.tar.gz
$ cd pcre-8.36
$ ./configure
$ make && make install
如報錯:configure: error: You need a C++ compiler for C++ support
解決方案:yum install -y gcc gcc-c++
3.安裝ssl庫
$ cd /usr/local/
$ wget https://www.openssl.org/source/openssl-1.0.1j.tar.gz
(注:openssl一樣有版本更新,這裏爲2020.04的版本,當前網址獲取新版本的方法爲訪問:https://www.openssl.org/source/
這裏沒有采用1.1.x等版本是由於在後面安裝nginx出現了沒法解決的錯誤,因此選擇了這一較久的版本,若是能夠解決,能夠進行嘗試,若是能告知解決方案或者成功案例就更感謝了)
$ tar -zxvf openssl-1.0.1j.tar.gz
$ cd openssl-1.0.1j
$ ./config
$ make && make install
4.安裝zlib庫
$ cd /usr/local/
$ wget http://zlib.net/zlib-1.2.11.tar.gz
(注:同前,版本更新網址爲:http://zlib.net/)
$ tar -zxvf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make && make install
5.安裝nginx
$ cd /usr/local/
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
(注:同前,獲取新版本的網址爲:http://nginx.org/download/)
$ tar -zxvf nginx-1.8.0.tar.gz
$ cd nginx-1.8.0
$ ./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.36 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.0.1j
(注: --with-http_ssl_module:這個不加後面在nginx.conf配置ssl:on後,啓動會報nginx: [emerg] unknown directive "ssl" in /opt/nginx/conf/nginx.conf 異常;兒針對pcre、zlib和openssl等等的指定,則是爲了保證nginx可以和以前下載的版本匹配一致,注意路徑和版本號須要修改成和以前下載對應的樣子)
$ make && make install
附:nginx在make過程當中可能出現的問題:
報錯1:make[1]: *** [objs/Makefile:460: objs/src/core/ngx_murmurhash.o] Error 1
將警告視爲報錯進行了程序終止
解決方案:進入到nginx安裝目錄的objs文件夾中,修改Makefile文件:
按下a進入編輯模式,將CFLAGS中的-Werror去除,而後按下esc,輸入:wq保存退出
而後再次進行嘗試make && make install指令
報錯2:make[1]: *** [objs/Makefile:747: objs/src/os/unix/ngx_user.o] Error 1
提示咱們struct crypt_data’沒有名爲‘current_salt’的成員:cd.current_salt[0] = ~salt[0];原文做者說最好的辦法是換一個版本,這裏開始選擇的1.9出現了報錯,可是切換成了nginx1.8後仍是沒有效果,所以便在nginx1.8的基礎上使用了替代方案:代碼註釋
即在nginx安裝目錄下經過執行vim src/os/unix/ngx_user.c,對ngx_user.c第36行的代碼進行註釋,先後以下:
而後保存退出,再次嘗試make && make install
報錯3:make[1]: *** [objs/Makefile:769: objs/src/event/ngx_event_openssl.o] Error 1
說明ssl版本沒有告知nginx,應該是前面./configure的時候沒有指定ssl版本致使的,須要從新configure,即須要在configure時增長ssl的指定。
--with-openssl=/usr/local/openssl-1.0.1j
報錯4:./configure: error: SSL modules require the OpenSSL library.
能夠嘗試執行指令:
yum -y install openssl openssl-devel
報錯5:./configure: error: the HTTP gzip module requires the zlib library
configure時沒有制定好另外兩個庫的路徑,在–prefix後面接如下命令(具體使用方式見./configure指令的執行):
--with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的源碼路徑。--with-zlib=/usr/local/zlib-1.2.11 指的是zlib-1.2.11 的源碼路徑。
若是以上報錯仍是沒法解決問題,最好查看centos版本是不是7,我就是在更換系統版本後直接成功的。若是遇到其餘報錯,最好進行檢索,沒法解決十分抱歉。
6.nginx啓動與使用
$ /usr/local/nginx/sbin/nginx
啓動成功的標誌:打開瀏覽器訪問服務器的ip地址,若是瀏覽器出現Welcome to nginx! 則表示 nginx 已經安裝並運行成功。
其餘的一些命令以下:
重啓:
$ /usr/local/nginx/sbin/nginx -s reload
中止:
$ /usr/local/nginx/sbin/nginx -s stop
測試配置文件是否正常:
$ /usr/local/nginx/sbin/nginx -t
強制關閉:
$ pkill nginx
注:這裏沒有設置軟連接,所以只能經過這麼長的指令進行管理,若有須要可自行檢索處理,後面若是我有時間也會更新到本文中。
7.nginx啓動後沒法訪問的問題解決
這裏若是還看不到nginx的頁面,多是服務器的安全組沒有配置致使的,例如阿里雲就須要在這裏添加http,端口80的配置,以下:
安全組配置以後只需刷新頁面便可看到nginx的成功頁面。
最後祝各位配置順利。