Nginx初体验

  1. 介绍windows环境以及linux环境安装
  2. nginx作为系统服务
  3. nginx 常用执行命名

windows

linux

备用知识

  1. centos7 防火墙相关命令

    • 启动 systemctl start firewalld
    • 关闭 systemctl stop firewalld
    • 查看状态 systemctl status firewalld
    • 开机禁用 systemctl disable firewalld
    • 开机启动 systemctl enable firewalld
    • 添加 firewall-cmd --zone=public --add-port=80/tcp --permanent

    (–permanent永久生效,没有此参数重启后失效)

    • 重新载入 firewall-cmd --reload
    • 查看 firewall-cmd --zone= public --query-port=80/tcp
    • 删除 firewall-cmd --zone= public --remove-port=80/tcp --permanent

安装

官方参考文档Building nginx from Sources

  1. 解压文件tar -zxvf nginx-${version}.tar.gz

  2. 到解压文件夹进行配置./configigure --prefix=path

–prefix=path 配置安装路径,默认/usr/local/nginx

可能会出现错误,缺少相应的library,执行命名yum -y install library library-devel进行安装

  1. 执行安装make && make install

系统服务

源码安装采用init脚本进行安装

官方init脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -n "$user" ]; then
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
}

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
sleep 1
start
}

reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
  1. 修改脚本中nginx以及NGINX_CONF_FILE
  2. 赋予运行权限 chmod +x nginx
  3. 运行service相关命令service nginx start|stop|reload|status|restart

问题

  1. cento7中按脚本方式安装过后,启动会报错,报错如下:
1
2
3
4
5
6
7
8
9
10
11
● nginx.service - SYSV: NGINX is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server
Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since 六 2018-10-13 19:58:32 CST; 18s ago
Docs: man:systemd-sysv-generator(8)
Process: 7340 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=203/EXEC)

10月 13 19:58:32 centos7-3 systemd[1]: Starting SYSV: NGINX is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server...
10月 13 19:58:32 centos7-3 systemd[1]: nginx.service: control process exited, code=exited status=203
10月 13 19:58:32 centos7-3 systemd[1]: Failed to start SYSV: NGINX is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server.
10月 13 19:58:32 centos7-3 systemd[1]: Unit nginx.service entered failed state.
10月 13 19:58:32 centos7-3 systemd[1]: nginx.service failed.

答: 查找各种资料,没找到解决办法,可采用下面两种安装办法

包安装

官方参考地址

  1. 安装yum-utils

    1
    yum -y install yum-utils
  2. 创建/etc/yum.repos.d/nginx.repo文件,文件内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true

    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
  3. 启动nginx-mainline,默认是启用nginx-stable

    1
    sudo yum-config-manager --enable nginx-mainline
  4. 执行yum -y install nginx进行安装

安装目录为/etc/nginx,公共的配置文件在nginx.conf中,私有配置在conf.d/default.conf中

执行命令

官方文档地址

  • 启动 ./nginx

  • 立即停止 ./nginx -s stop

  • 体面停止 ./nginx -s quit

  • 生效配置文件 ./nginx -s reload

  • 校验配置文件 ./nginx -t


Nginx初体验
http://example.com/2018/10/13/Nginx/Nginx初体验/
作者
FelixFly
发布于
2018年10月13日
许可协议