Centos6.7编译安装Nginx1.81 +mysql-5.5.33 + php-5.5
1、nginx简介: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、新浪、网易、腾讯等。
Nginx的特性:
模块化设计、较好扩展性
高可靠性
master-->worker
低内存消耗
10000个keep-alive连接在Nginx仅消耗2.5MB
支持热部署
不停机而更新配置文件、更换日志文件、更新服务器程序版本
基本功能:
静态资源的web服务器,能缓存打开的文件 描述符
http,smtp, pop3协议的反向代理服务器,缓存、负载均衡;
支持FastCGI (fpm)
模块化,非DSO机制,过滤器zip,SSI及图像大小调整;
支持SSL
扩展功能:
基于名称和IP的虚拟主机;
支持keepalive
支持平滑升级
定制访问日志,支持使用日志缓冲区提高日志存储性能
支持url rewrite
支持路径别名
支持基于IP及用户的访问控制
支持速率限制,支持并发数限制
Nginx的基本架构:
一个master进程,生成一个或多个worker
事件驱动: epoll, kqueue, /dev/poll (event ports)
消息通知:select, poll, rt signals
支持sendfile, sendfile64
支持AIO
支持mmap
Nginx的版本
Nginx版本分为主线版和稳定版,主线版更新速度较快,从官网上看大约一个月更新1-2次,目前 最新主线版已更新到nginx-1.9.14,而官方宣布的最新稳定版则是nginx-1.8.1,and本文就以1.8.1版为例演示其在CentOS7上的安装和配置过程。Nginx官方网站http://nginx.org/ 。
2、下载: 1
2
3
4
5
6
[iyunv@nginx ~]# mkdir /tools
[iyunv@nginx ~]# cd /tools/
[iyunv@nginx tools]# wget http://nginx.org/download/nginx-1.8.1.tar.gz
[iyunv@nginxtools]# ls nginx-1.8.1.tar.gz -sh
816K nginx-1.8.1.tar.gz
# 可以看到nginx源码包非常小
3、解压 1
2
3
4
[iyunv@nginx tools]# tar xf nginx-1.8.1.tar.gz
[iyunv@nginx tools]# cd nginx-1.8.1
[iyunv@nginx nginx-1.8.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
4、安装准备 4.1、先配置阿里云yum源: 1
2
3
4
5
6
7
8
9
10
11
1、备份
# mv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 6:
# wget-O /etc/yum.repos.d/CentOS-Base.repo
CentOS 7:
# wget-O /etc/yum.repos.d/CentOS-Base.repo
3、之后运行yummakecache生成缓存
4.2、添加Epel源:
4.3、解决依赖关系 编译安装nginx需要事先需要安装开发包组"DevelopmentTools"和 "Development Libraries"。同时,还需要专门安装pcre-devel,openssl-devel包:
1
2
3
4
[iyunv@nginx nginx-1.8.1]# yum grouplist"Development Tools" "Development Libraries"
[root@nginxnginx-1.8.1 ]# yum groupinstall Development Tools Development Libraries -y
# yum安装nginx必须的依赖库
# yum -y install pcre-devel openssl openssl-devellibxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed
4.4、创建用户: 创建一个名为nginx且没有登录权限的用户和一个名为nginx的用户组,用来运行nginx服务进程:
1
2
3
4
5
6
[iyunv@nginx nginx-1.8.1]# groupadd -r nginx
[iyunv@nginx nginx-1.8.1]# useradd -r -g nginx nginx -s/sbin/nologin -M # g GID:指明用户所属基本组,可为组名,也可以GID;
# -d /PATH/TO/HOME_DIR: 以指定的路径为家目录;
# -s SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中;
# -r: 创建系统用户
# -M: 不自动创建用户的家目录
1
2
3
4
[iyunv@nginx nginx-1.8.1]# tail -1/etc/passwd
nginx:x:500:500::/home/nginx:/sbin/nologin
[iyunv@nginx nginx-1.8.1]# id nginx
uid=497(nginx)gid=497(nginx) groups=497(nginx)
4.5、新建Nginx安装时所需要的目录 1
2
3
4
5
[iyunv@nginx ~]# cd /var/tmp/
[iyunv@nginx tmp]# mkdir -p/var/tmp/nginx/{client,proxy,fastcgi,uwsgi,scgi}
[iyunv@nginx tmp]# mkdir -p /var/run/nginx
[iyunv@nginx tmp]# cd /tools/nginx-1.8.1
[root@nginxnginx-1.8.1 ]#
5、编译安装: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# ./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_perl_module \
--with-http_flv_module\
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-pcre
6、为nginx提供SysV init脚本:
新建文件/etc/rc.d/init.d/nginx,内容如下:
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
[iyunv@nginx ~]# vim /etc/rc.d/init.d/nginx
#!/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的sbin目录
nginx="/usr/local/nginx/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:" | sed
's/[^*]*--user=\([^ ]*\).*/\1/g' -`
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
}
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
7、给脚本赋予执行权限: 1
[iyunv@nginx ~]# chmod +x /etc/rc.d/init.d/nginx
8、添加至服务管理列表,并让其开机自动启动: 1
2
[iyunv@nginx ~]# chkconfig --add nginx
[iyunv@nginx~]# chkconfig nginx on
9、启动服务 1
[iyunv@nginx nginx-1.8.1]# service nginx start
10、防火墙设置: (1) 插入新的防火墙规则,开通80端口
1
2
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
(2) 保存规则:
1
/etc/rc.d/init.d/iptables save
(3) 重启防火墙服务
1
/etc/init.d/iptables restart
1
2
3
注意:内网环境中iptables建议关闭:
# server iptables stop
# chkonfig iptables off
11、关闭SELINUX 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
永久关闭:
[iyunv@nginx nginx-1.8.1]# vi/etc/selinux/config
# This file controls the state ofSELinux on the system.
# SELINUX= can take one of thesethree values:
# enforcing - SELinux security policy isenforced.
# permissive - SELinux prints warningsinstead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy inuse. Possible values are:
# targeted - Only targeted network daemonsare protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
# SELINUXTYPE= type of policy inuse. Possible values are:
# targeted - Only targeted network daemonsare protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
临时关闭:
1
[iyunv@nginx nginx-1.8.1]# setenforce 0
12、测试: 浏览器访问http://192.168.0.111
nginx编译安装成功!
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com