标签:nginx安装
Centos6.7编译安装Nginx1.81 +mysql-5.5.33 + php-5.5
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/。
[root@nginx ~]# mkdir /tools [root@nginx ~]# cd /tools/ [root@nginx tools]# wget http://nginx.org/download/nginx-1.8.1.tar.gz [root@nginxtools]# ls nginx-1.8.1.tar.gz -sh 816K nginx-1.8.1.tar.gz # 可以看到nginx源码包非常小
[root@nginx tools]# tar xf nginx-1.8.1.tar.gz [root@nginx tools]# cd nginx-1.8.1 [root@nginx nginx-1.8.1]# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
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生成缓存
1、备份(如有配置其他epel源) # mv/etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup # mv/etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup 2、下载新repo 到/etc/yum.repos.d/ epel(RHEL 7): # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo epel(RHEL 6): # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
编译安装nginx需要事先需要安装开发包组"DevelopmentTools"和 "Development Libraries"。同时,还需要专门安装pcre-devel,openssl-devel包:
[root@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
创建一个名为nginx且没有登录权限的用户和一个名为nginx的用户组,用来运行nginx服务进程:
[root@nginx nginx-1.8.1]# groupadd -r nginx [root@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: 不自动创建用户的家目录
[root@nginx nginx-1.8.1]# tail -1/etc/passwd nginx:x:500:500::/home/nginx:/sbin/nologin [root@nginx nginx-1.8.1]# id nginx uid=497(nginx)gid=497(nginx) groups=497(nginx)
[root@nginx ~]# cd /var/tmp/
[root@nginx tmp]# mkdir -p/var/tmp/nginx/{client,proxy,fastcgi,uwsgi,scgi}
[root@nginx tmp]# mkdir -p /var/run/nginx
[root@nginx tmp]# cd /tools/nginx-1.8.1
[root@nginxnginx-1.8.1]## ./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
# make && make install
新建文件/etc/rc.d/init.d/nginx,内容如下:
[root@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[root@nginx ~]# chmod +x /etc/rc.d/init.d/nginx
[root@nginx ~]# chkconfig --add nginx [root@nginx~]# chkconfig nginx on
[root@nginx nginx-1.8.1]# service nginx start
(1) 插入新的防火墙规则,开通80端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
(2) 保存规则:
/etc/rc.d/init.d/iptables save
(3) 重启防火墙服务
/etc/init.d/iptables restart
注意:内网环境中iptables建议关闭: # server iptables stop # chkonfig iptables off
永久关闭: [root@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
临时关闭:
[root@nginx nginx-1.8.1]# setenforce 0
浏览器访问http://192.168.0.111
nginx编译安装成功!
本文出自 “汛熙时空” 博客,请务必保留此出处http://858004880.blog.51cto.com/7265424/1768744
标签:nginx安装
原文地址:http://858004880.blog.51cto.com/7265424/1768744