Nginx的安装、配置、和使用

一.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 主进程号 :从容停止Nginx
kill -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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值