一.Nginx介绍
Nginx是一种服务器软件。服务器软件有非常多,比如Apache、 tomcat等等都是服务器软件。让程序员可以将程序放在Nginx服务器上,将程序发布出去,让成千上万的网民可以浏览。除此之外, Nginx是一种高性能的HTTP和反向代理服务器,同时也是一个代理邮件服务器。也就是说,我们Nginx上可以发布网站,也可以实现负载均衡的功能,还可以作为邮件服务器实现收发邮件等功能。所谓的负载均衡是指,当同时有N 多用户访问我们服务器的时候,为了减少服务器压力,我们需要将用户分别引入各服务器,分担服务器的压力。如下图

Nginx的应用场景
1).http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2).虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3).反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
Nginx与其他服务器的性能比较
首先说IIS, IIS服务器只能在Windows上运行, Windows服务器性能不如Linux一类服务器。其次说Tomcat, Tomcat服务器面向的是Java语言,是一种重量级的服务器,而Nginx是轻量级服务器, Tomcat与Nginx不具备可比性。最后,我们讲一
下Apache, Apache优点非常多,比如稳定、开源、跨平台等等,但是Apache不支持高并发。 Nginx能支持处理百万级的TCP连接, 10万以上的并发连接,并且是一个很好的跨平台服务器。
Nginx的优缺点总结
Nginx的主要优点有可以实现高并发、部署简单、内存消耗少、成本低等等。
Nginx的主要缺点有rewrite功能不够强大,模块没有Apache的多。
二.安装(yum、离线)
1.安装依赖环境
因为我的环境是全新的,没有Nginx需要的环境,所以第一步我们先把环境配好
具体包括:c++,pcre、pcre-devel,openssl和zlib
(1)gcc:nginx编译依赖gcc环境安装c++(nginx编译依赖gcc环境)
输入命令:yum install gcc-c++,出现选择y/n 的时候直接y。

安装好之后,可以查看gcc环境,输入: yum list installed gcc,可以看到我的版本是 4.8.5的。

(2)pcre:(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式.
安装pcre、pcre-devel
# yum install -y pcre pcre-devel

# yum list installed pcre pcre-devel

(3)安装openssl:一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http).
# yum install -y openssl openssl-devel

(4)安装zlib:该库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip。
# yum install -y zlib zlib-devel
需要的环境已经安装好,接下来开始安装Nginx。
离线安装:如果是离线环境,那就要先下载离线安装包, 链接:https://download.youkuaiyun.com/download/qq_36926022/10911805
解压完,编译安装:
# rpm -ivh pcre-devel-8.42-17.el7.i686.rpm
# rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm
# tar -zxvf pcre-8.38.tar.gz
# cd pcre-8.38
# ./configure && make && make install
# tar -zxvf zlib-1.2.11.tar.gz
# cd zlib-1.2.11
# ./configure && make && make install
#tar -zxvf openssl-1.0.1t.tar.gz
#cd openssl-1.0.1t.tar.gz
# ./configure && make && make install
二.安装Nginx
(1) 下载nginx,官网下载地址:http://nginx.org/en/download.html
下载命令:wget http://nginx.org/download/nginx-1.12.0.tar.gz
(2)安装Nginx
先cd到 usr/local/src目录下面

通过wget命令在线获取到nginx的安装包,选择自己想安装的版本
# wget http://nginx.org/download/nginx-1.15.9.tar.gz

下载好了,输入命令 ll 可以查看。

可以看到我的目录下面已经存在这个包了。
然后解压:tar zxvf nginx-1.15.9.tar.gz
cd 到 nginx-1.15.9进行安装,安装命令是:./configure && make && make install
执行完成后,我们先看看Nginx安在什么地方了,然后再启动看看能不能启动。
输入命令 whereis nginx

可以看到,我的nginx是安装在了/usr/local/nginx。进入安装目录,执行./nginx 启动nginx,然后用ps 命令看看nginx进程启动情况。
# cd /usr/local/nginx
# cd ./sbin
# ./nginx
# ps -ef | grep nginx

安装完成后,让Nginx服务开机启用、 并启动Nginx服务:
# sudo systemctl enable nginx
# sudo systemctl start nginx
如果您正在运行防火墙,则还需要打开端口80和443:
# sudo firewall-cmd --permanent --zone=public --add-service=http
# sudo firewall-cmd --permanent --zone=public --add-service=https
# sudo firewall-cmd --reload
(3)通过服务器ip验证
cd /usr/local/nginx/conf 目录下,可以看到有nginx.conf这个文件,使用命令 vim 对其进行修改,ip设置成自己的ip。

我的改成了如下样子,把localhost设置成自己的ip,改好之后ctrl + c,然后 :wq保存退出。

回到 /usr/local/nginx/sbin 目录,输入命令./nginx -s reload 用于对配置文件进行重新加载并且重启。
最后在浏览器输入ip,就能看到Nginx的欢迎界面了。

可能出现的问题:
1.端口使用冲突
报错信息
# nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
# nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
查错:
1.先使用ps -e | grep nginx查看是否已经启动了nginx
2.如果没有的话则按照提示,查看0.0.0.0:80端口谁占用了,使用netstat -ltunp命令,可以看到
可以看到0.0.0.0:80端口被httpd这个进程占用了(也就是apcache占用)

关闭httpd服务即可: service httpd stop
2.Nginx启动失败:Redirecting to /bin/systemctl start nginx.service Failed to start nginx.service: Unit not found.

解决方法:
是因为nginx没有有添加到系统服务,手动手动添加一个即可。
(1)在 /etc/init.d/下创建名为nginx的启动脚本即可,内容如下:
#!/bin/sh
# chkconfig: 2345 85 15
# description:Nginx Server
NGINX_HOME=/usr/local/nginx
NGINX_SBIN=$NGINX_HOME/sbin/nginx
NGINX_CONF=$NGINX_HOME/conf/nginx.conf
NGINX_PID=$NGINX_HOME/logs/nginx.pid
NGINX_NAME="Nginx"
. /etc/rc.d/init.d/functions
if [ ! -f $NGINX_SBIN ]
then
echo "$NGINX_NAME startup: $NGINX_SBIN not exists! "
exit
fi
start() {
$NGINX_SBIN -c $NGINX_CONF
ret=$?
if [ $ret -eq 0 ]; then
action $"Starting $NGINX_NAME: " /bin/true
else
action $"Starting $NGINX_NAME: " /bin/false
fi
}
stop() {
kill `cat $NGINX_PID`
ret=$?
if [ $ret -eq 0 ]; then
action $"Stopping $NGINX_NAME: " /bin/true
else
action $"Stopping $NGINX_NAME: " /bin/false
fi
}
restart() {
stop
start
}
check() {
$NGINX_SBIN -c $NGINX_CONF -t
}
reload() {
kill -HUP `cat $NGINX_PID` && echo "reload success!"
}
relog() {
kill -USR1 `cat $NGINX_PID` && echo "relog success!"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
check|chk)
check
;;
status)
status -p $NGINX_PID
;;
reload)
reload
;;
relog)
relog
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status|check|relog}"
exit 1
esac
(2)保存。
注意,保存一定要保存成UNIX格式(notepad++:编辑--文档格式转换--转为UNIX格式),否则会如下报错的

(3)设置执行权限:chmod +x /etc/init.d/nginx
(4)将nginx服务加入chkconfig管理列表:chkconfig --add /etc/init.d/nginx
(5)设置终端模式开机启动:chkconfig nginx on
设置好之后,就可以使用以下命令了
service nginx start
service nginx stop
service nginx restart
service nginx reload
三.nginx的使用
查看Nginx的版本号:nginx -V
启动Nginx:start nginx
快速停止或关闭Nginx:cd /usr/local/nginx/sbin && ./nginx -s stop //相当于先查出nginx进程id再使用kill命令强制杀掉进程
正常停止或关闭Nginxt(建议使用): cd /usr/local/nginx/sbin && ./nginx -s quit //待nginx进程处理任务完毕进行停止
3.重启及重新加载配置
1).先停止再启动(建议使用)
./nginx -s quit && ./nginx
2).重新加载配置文件
./nginx -s reload
查看windows任务管理器下Nginx的进程命令:tasklist /fi "imagename eq nginx.exe"
Xshell 里面查看进程:ps -ef | grep nginx
kill -QUIT 主进程号 :从容停止Nginxkill -TERM 主进程号 :快速停止Nginx
暴利/强制停止Nginx:pkill -9 nginx (不推荐使用):
使用systemctl管理Nginx服务:
我们可以像任何其他系统单元一样管理Nginx服务。
停止Nginx服务:sudo systemctl stop nginx
启动:
sudo systemctl start nginx
重新启动Nginx服务:sudo systemctl restart nginx
配置更改后重新加载Nginx服务:sudo systemctl reload nginx
禁用Nginx服务开机启动:sudo systemctl disable nginx
开机启用:sudo systemctl enable nginx
参考:
https://www.cnblogs.com/YJzhiqianni/p/10519104.html
https://www.cnblogs.com/hafiz/p/6891458.html?utm_source=itdadao&utm_medium=referral
https://blog.youkuaiyun.com/wen_binobject/article/details/80577501
1万+

被折叠的 条评论
为什么被折叠?



