写点什么

Nginx 安装与部署

作者:timerring
  • 2023-08-13
    山东
  • 本文字数:2541 字

    阅读完需:约 8 分钟

文章和代码已经归档至【Github 仓库:https://github.com/timerring/front-end-tutorial 】或者公众号【AIShareLab】回复 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.101NETMASK=255.255.255.0GATEWAY=192.168.44.1DNS1=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 脚本扩展的 nginxhttp://openresty.org/cn/


Tengine:以 C 语言扩展的 nginxhttp://tengine.taobao.org/

备份克隆

在安装前,最好先克隆备份,以防安装错误后难以恢复。


首先可以通过 init 0 关闭虚拟机。


然后右键虚拟机,选择 管理--->克隆,选择创建连接克隆,这种克隆方法可以比较出两者之间的差异。

安装

编译安装

首先传输 nginx 安装包,然后 tar zxvf nginx-1.21.6.tar.gz, 进入解压后的文件夹,执行 ./configure 安装,由于缺少相关的依赖,因此会报错。只需要根据对应的报错安装即可。


./configure --prefix=/usr/local/nginx #设置前缀,安装到指定的目录下makemake install
复制代码

报错解决

提示


checking for OS
Linux 3.10.0-693.el7.x86_64 x86_64checking 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_moduleoption, or install the PCRE library into the system, or build the PCRE librarystatically 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_moduleoption, or install the zlib library into the system, or build the zlib librarystatically 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 serverAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stopExecQuit=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]WantedBy=multi-user.target
复制代码


重新加载系统服务


systemctl daemon-reload
复制代码


启动服务


systemctl start nginx.service
复制代码


查看服务状态(是否启动)


systemctl status nginx.service
复制代码



可以看到,服务是已经 active 的。


开机启动


systemctl enable nginx.service
复制代码


发布于: 刚刚阅读数: 3
用户头像

timerring

关注

公众号【AIShareLab】 2022-07-14 加入

他日若遂凌云志

评论

发布
暂无评论
Nginx 安装与部署_nginx_timerring_InfoQ写作社区