在CentOS中通过源码编译安装Nginx

177 阅读4分钟

前言

根据不同的操作系统,Nginx的安装有多中选择,比较方便的是通过软件包的方式安装,不过为了更灵活,我们通过源码编译安装Nginx

通过源码安装的好处是灵活,因为安装包中有很多模块,暂时用不到的可以先不安装,等要用的时候重新编译并使用--with-选项添加需要的模块即可。

安装

  1. 安装依赖

Nginx中的功能是模块化的,有些模块是依赖于一些软件包的(如OpenSSL),因此先安装依赖。

yum -y install pcre-devel openssl-devel

yum -y install gcc gcc-c++ wget

编译安装时需要gcc、gcc-c++编译器,因此必须安装,而wget是下载工具,支持HTTP、HTTPS、FTP。

  1. 安装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 

configure

make install

devel 包比非devel包(普通的软件包)多了头文件、静态库甚至源码。

启动与停止

  1. 启动Nginx
cd /usr/local/nginx/sbin
./nginx
ps aux | grep nginx

ps aux

  1. 停止Nginx
  • 立即停止:./nginx -s stop
  • 从容停止:./nginx -s quit
  • 通过kill:killall nginx

-s 表示发送信号到主进程(Master Process)

  1. 其他命令
  • 重新加载配置文件:nginx -s reload
  • 以特定目录的配置文件启动Nginx:nginx -c /XXX/nginx.conf
  1. 查看端口号占用

默认情况下Nginx启动后会监听80端口,如果已被占用则启动失败。

查看端口号占用情况:netstat -tlnp,但CentOS minimal没有安装这个工具,因此yum install net-tools

netstat -tlnp

t查看tcp协议,l查看监听,n不解析名称以数字显示,p显示进程名和pid

访问测试

默认情况下,CentOS 开启了iptables防火墙。

防火墙默认屏蔽了80端口的访问

配置防火墙,实现开放80端口的访问:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

I插入规则,p指定协议,dport指定目标端口,j指定操作

查看防火墙状态:service iptables status 保存到防火墙规则中:service iptables save 查看规则:iptables --list INPUT -nn表示以数字形式显示而不解析成某服务

必须保存规则,否则系统重启或iptables 服务重启之后就恢复原来的规则了

这两条命令可能出错,所以需要你自己安装或升级该服务。

systemctl stop firewalld
systemctl disable firewalld
firewall-cmd --state 
yum -y install iptables-services
systemctl enable iptables
systemctl start iptables

iptables

welcome

后续

  1. 静态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 -rnroute -n

建议先使用 dhcp ,然后查看网关等配置后再填写

静态IP

  1. 建立软链接

查看环境变量:echo $PATH

我们就在usr/local/sbin建立软链接:

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx

ln用以创建链接,s表示创建软链接,类似于快捷方式

  1. 添加到系统服务

之前的很多服务如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

service nginx reload

  1. 设置开机自启动

使用命令: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之间。

Linux 运行级别

添加支持

接下来,使用命令添加 Nginx 服务自启动操作:

chkconfig --add nginx

然后查看下:

chkconfig --list

chkconfig 自启动

  1. 安装 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

安装 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 许可协议。转载请注明出处,严禁商业用途!