前言
根据不同的操作系统,Nginx的安装有多中选择,比较方便的是通过软件包的方式安装,不过为了更灵活,我们通过源码编译安装Nginx。
通过源码安装的好处是灵活,因为安装包中有很多模块,暂时用不到的可以先不安装,等要用的时候重新编译并使用--with-
选项添加需要的模块即可。
安装
- 安装依赖
Nginx中的功能是模块化的,有些模块是依赖于一些软件包的(如OpenSSL),因此先安装依赖。
yum -y install pcre-devel openssl-devel
yum -y install gcc gcc-c++ wget
编译安装时需要gcc、gcc-c++编译器,因此必须安装,而wget是下载工具,支持HTTP、HTTPS、FTP。
- 安装Nginx
wget https://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module # prefix用以配置安装位置
make && make install
devel 包比非devel包(普通的软件包)多了头文件、静态库甚至源码。
启动与停止
- 启动Nginx
cd /usr/local/nginx/sbin
./nginx
ps aux | grep nginx
- 停止Nginx
- 立即停止:
./nginx -s stop
- 从容停止:
./nginx -s quit
- 通过kill:
killall nginx
-s
表示发送信号到主进程(Master Process)
- 其他命令
- 重新加载配置文件:
nginx -s reload
- 以特定目录的配置文件启动Nginx:
nginx -c /XXX/nginx.conf
- 查看端口号占用
默认情况下Nginx启动后会监听80
端口,如果已被占用则启动失败。
查看端口号占用情况:netstat -tlnp
,但CentOS minimal没有安装这个工具,因此yum install net-tools
。
t
查看tcp协议,l
查看监听,n
不解析名称以数字显示,p
显示进程名和pid
访问测试
默认情况下,CentOS 开启了iptables
防火墙。
配置防火墙,实现开放80端口的访问:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
I
插入规则,p
指定协议,dport
指定目标端口,j
指定操作
查看防火墙状态:service iptables status
保存到防火墙规则中:service iptables save
查看规则:iptables --list INPUT -n
,n
表示以数字形式显示而不解析成某服务
必须保存规则,否则系统重启或iptables 服务重启之后就恢复原来的规则了
这两条命令可能出错,所以需要你自己安装或升级该服务。
systemctl stop firewalld
systemctl disable firewalld
firewall-cmd --state
yum -y install iptables-services
systemctl enable iptables
systemctl start iptables
后续
- 静态IP设置
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33
编辑它,并更改:BOOTPROTO="static"
,然后加入:
IPADDR=192.168.177.5
NETMASK=255.255.255.0
GATEWAY=192.168.177.2
DNS1=192.168.177.2
然后执行命令:service network restart
使配置生效。
查看网关,使用命令:netstat -rn
或route -n
。
建议先使用 dhcp ,然后查看网关等配置后再填写
- 建立软链接
查看环境变量:echo $PATH
我们就在usr/local/sbin
建立软链接:
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
ln
用以创建链接,s
表示创建软链接,类似于快捷方式
- 添加到系统服务
之前的很多服务如iptables
就可使用service
命令来控制,而service
命令实际调用的是/etc/init.d
目录下的shell脚本,也就是说一下两个命令是等价的:
/etc/init.d/network restart
service network restart
因此只需要在/etc/init.d
中编写一个名为nginx
的脚本即可。
#! /bin/bash
DAEMON=/usr/local/nginx/sbin/nginx
case "$1" in
start)
echo "Starting nginx daemon..."
$DAEMON && echo "SUCCESS"
;;
stop)
echo "Stopping nginx daemon..."
$DAEMON -s quit && echo "SUCCESS"
;;
reload)
echo "Reloading nginx daemon..."
$DAEMON -s reload && echo "SUCCESS"
;;
restart)
echo "Restarting nginx daemon..."
$DAEMON -s quit
$DAEMON && echo "SUCCESS"
;;
*)
echo "Usage: service nginx (start|stop|restart|reload)"
exit 2
;;
esac
shell case 语句:wiki.jikexueyuan.com/project/she…
添加完脚本之后,就为此脚本添加上可执行权限:
chmod +x /etc/init.d/nginx
- 设置开机自启动
使用命令:chkconfig (--add|--del|--list)
,add
增加指定的服务为开机启动,del
取消该服务的自启动,lsit
列出系统素有服务的启动情况
若要实现开机启动,需要在/etc/init.d/nginx
脚本文件中添加对chkconfig
的支持,在代码前(第2行)加入# chkconfig 35 85 15
即启动级别是3和5,启动顺序(S)是85,关闭顺序(K)是15,“晚启动早关闭”,值的范围在0~99之间。
接下来,使用命令添加 Nginx 服务自启动操作:
chkconfig --add nginx
然后查看下:
chkconfig --list
- 安装 VMware-tools
首先,选择“虚拟机->安装 VMware Tools”。
然后挂载光盘:mount -t iso9660 /dev/cdrom /mnt
。
然后复制文件:cp /mnt/VMwareTools-9.6.0-1294478.tat.gz /tmp/
解压文件:tar -zxf VMwareTools-9.6.0-1294478.tat.gz
进入文件夹:cd vmware-tools-distrib
可能需要安装perl
解释器:yum -y install perl
然后开始安装:./vmware-install.pl
安装完成后弹出安装光盘:unmount /dev/cdrom
。
命令格式:mount [-t vfstype] [-o options] device dir 1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有: 光盘或光盘镜像:iso9660 DOS fat16文件系统:msdos Windows 9x fat32文件系统:vfat Windows NT ntfs文件系统:ntfs Mount Windows文件网络共享:smbfs UNIX(LINUX) 文件网络共享:nfs 2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有: loop:用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset:指定访问文件系统所用字符集 3.device 要挂接(mount)的设备。 4.dir设备在系统上的挂接点(mount point)。
结语
参考了《Nginx 高性能 Web 服务器实战教程》中的部分内容。
dfface 的版权声明:所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处,严禁商业用途!