文章和代碼已經歸檔至【Github倉庫:https://github.com/timerring/front-end-tutorial 】或者公眾號【AIShareLab】回復 nginx 也可獲取。
文章目錄
- 虛擬機安裝CentOS7.4
- Linux配置
- 配置上網
- 配置靜態ip
- Nginx的安裝
- 版本區別
- 備份克隆
- 安裝
- 編譯安裝
- 報錯解決
- 啟動Nginx
- 防火墻
- 安裝成系統服務
虛擬機:VMware workstation 16
操作系統:CentOS 7.4
下載地址:https://vault.centos.org/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso
建議電腦配置:
- 內存:建議8G以上
- 磁盤:建議使用SSD
- CPU:4核以上主流即可
虛擬機安裝CentOS7.4
1 新建虛擬機
2 典型安裝
3 選擇CentOS鏡像
4 存儲位置
5 虛擬機磁盤配置 :注意這里只是分配最大磁盤大小,實際不會在一開始占用那么多,是一個動態的區域,在實際實用中逐漸分配。
6 自定義其他配置:默認即可。
7 安裝系統
默認即可,在分區選擇時記得點進去確認一下。
接下來繼續安裝,安裝過程中可以設置root密碼。安裝后重啟即可。
Linux配置
配置上網
修改配置網卡配置文件(Linux中所有設置都是通過修改配置文件實現的)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
把 ONBOOT
修改為yes即可,即重啟操作系統時就會重啟該網卡。
然后重啟網絡服務
systemctl restart network
重新測試ping可發現,網絡正常。
可以用 ip addr
測試當前ip地址。
通常,為了便于連接服務器以及復制粘貼等功能,一般采用XShell作為終端。下載地址:https://www.xshell.com/zh/free-for-home-school/
配置靜態ip
之前的網絡配置是使用dhcp方式分配ip地址,這種方式會在系統每次聯網的時候分配一個ip給我們用,系統下次啟動的時候ip會變,不方便管理。
配置靜態ip首先需要打開網卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改啟動協議 BOOTPROTO=static
手動配置ip地址
IPADDR=192.168.44.101
NETMASK=255.255.255.0
GATEWAY=192.168.44.1
DNS1=8.8.8.8
一些常見的公網DNS服務器:
阿里
223.5.5.5 223.6.6.6
騰訊
119.29.29.29 182.254.118.118
百度
180.76.76.76
114DNS
114.114.114.114 114.114.115.115
谷歌
8.8.8.8 8.8.4.4
注意,這里是嚴格區分大小寫的。
樣例:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=10ac735e-0b8f-4b19-9747-ff28b58a1547 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.44.101 NETMASK=255.255.255.0 GATEWAY=192.168.44.1 DNS1=8.8.8.8
然后重啟網絡服務即可。
systemctl restart network
這里第一次配置時,網絡仍然無法連接,這里我修改了網關與虛擬機的網關保持一致。
虛擬機網關查看方法:
編輯---> 虛擬網絡編輯器--->選擇VMnet8--->NAT設置--->網關IP
然后把上述GATEWAY修改為你的網關IP即可。然后就可以ping通了,僅供參考。
Nginx的安裝
版本區別
常用版本分為四大陣營
Nginx開源版:非常純粹的反向代理,負載均衡。
http://nginx.org/
Nginx plus 商業版
https://www.nginx.com
openresty:以Lua腳本擴展的nginx
http://openresty.org/cn/
Tengine:以C語言擴展的nginx
http://tengine.taobao.org/
備份克隆
在安裝前,最好先克隆備份,以防安裝錯誤后難以恢復。
首先可以通過 init 0
關閉虛擬機。
然后右鍵虛擬機,選擇 管理—>克隆,選擇創建連接克隆,這種克隆方法可以比較出兩者之間的差異。
安裝
編譯安裝
首先傳輸nginx安裝包,然后 tar zxvf nginx-1.21.6.tar.gz
, 進入解壓后的文件夾,執行 ./configure
安裝,由于缺少相關的依賴,因此會報錯。只需要根據對應的報錯安裝即可。
./configure --prefix=/usr/local/nginx #設置前綴,安裝到指定的目錄下
make
make install
報錯解決
提示
checking for OSLinux 3.10.0-693.el7.x86_64 x86_64
checking for C compiler ... not found
./configure: error: C compiler cc is not found
安裝gcc
yum install -y gcc
提示
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
安裝perl庫
yum install -y pcre pcre-devel
提示:
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
安裝zlib庫
yum install -y zlib zlib-devel
啟動Nginx
手動啟動的方式,進入安裝好的目錄/usr/local/nginx/sbin
。
./nginx 啟動
./nginx -s stop 快速停止
./nginx -s quit 在退出前完成已經接受的連接請求
./nginx -s reload 重新加載配置
防火墻
關閉防火墻
systemctl stop firewalld.service
禁止防火墻開機啟動
systemctl disable firewalld.service
放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
重啟防火墻
firewall-cmd --reload
關閉防火墻后啟動服務,可以通過瀏覽器訪問ip驗證服務是否啟動。若成功則如下所示:
安裝成系統服務
每次手動啟動服務過于復雜,可以考慮安裝成系統級的服務。
創建服務腳本
vi /usr/lib/systemd/system/nginx.service
服務腳本內容
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加載系統服務
systemctl daemon-reload
啟動服務
systemctl start nginx.service
查看服務狀態(是否啟動)
systemctl status nginx.service
可以看到,服務是已經active的。
開機啟動
systemctl enable nginx.service