linux之Nginx安装部署

Nginx web 使用

一、Nginx介绍

1.什么是nginx

Nginx是一个开源且高性能、可靠的http web服务、代理服务

开源:直接获取源代码
高性能:支持海量开发
可靠:服务稳定

2.nginx的特点

  • nginx支持很高的并发,nginx在处理大量并发的情况下比其他web服务要快
  • 功能模块少,只保留核心模块,其他代码模块化 (易读,便于二次开发,对于开发人员非常友好)
  • 需要什么模块再安装模块,不需要全部安装,并且还支持第三方模块
  • 其他的web服务需要每隔一段时间进行重启,nginx不需要
  • nginx可以再运行期间,更新迭代,代码部署
  • 大多数公司都在用nginx
  • Nginx使用的是Epool网络模型(当用户发起一次请求,epoll模型会直接进行处理,效率高效,并无连接限制.)
    image
    image
    image
    image

二、Nginx部署

1.官方源安装部署

[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo  # 把下面的代码写入该文件保存
[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
[root@web01 ~]# yum install nginx -y
[root@web01 ~]# systemctl start nginx  # 如果有httpd服务开启的话在这之前要执行systemctl stop httpd

2.编译安装部署

[root@web01 ~]#  wget https://nginx.org/download/nginx-1.20.2.tar.gz  # 下载安装包
[root@web01 ~]# tar -xf nginx-1.20.2.tar.gz  # 解压源码包
[root@web01 nginx-1.20.2]# ./configure
[root@web01 nginx-1.20.2]# make
[root@web01 nginx-1.20.2]# make install
[root@web01 nginx-1.20.2]# /usr/local/nginx/sbin/nginx  # 启动nginx服务

image

三、优化编译安装(模仿yum安装)

# 优化
[root@lb01 nginx]# mkdir /etc/nginx
[root@lb01 nginx]# mv /usr/local/nginx/conf/* /etc/nginx/
[root@lb01 nginx]# mkdir /etc/nginx/conf.d
[root@lb01 nginx]# vi /etc/nginx/nginx.conf  # 把之前里面的全部删除,添加下面内容.
user  www;  # 这个原本是nginx,根据实际情况修改user
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}



[root@lb01 nginx]# groupadd www -g 666
[root@lb01 nginx]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin

[root@lb01 nginx]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"

[Install]
WantedBy=multi-user.target

[root@lb01 sbin]# ln -s /etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
[root@lb01 sbin]# mv /usr/local/nginx/sbin/nginx /usr/sbin/
[root@lb01 sbin]# mkdir /var/log/nginx

# 测试是否成功
[root@lb01 sbin]# systemctl start nginx

四、平滑增加Nginx模块

[root@web01 nginx-1.20.2]# yum -y install openssl openssl-devel  # 安装依赖
在上面./configure的时候,可以加--help查看有哪些模块  然后根据需要在后面添加模块名
[root@web01 nginx-1.20.2]#./configure  --with-http_ssl_module
[root@web01 nginx-1.20.2]#make 
[root@web01 nginx-1.20.2]#make install 

五、编译安装nginx添加新模块

先确定需要添加的新模块,比如要新添加--with-http_sub_module模块

[root@lb01 ~]# rm -rf nginx-1.20.2
[root@lb01 ~]# tar -xf nginx-1.20.2.tar.gz
[root@lb01 ~]# cd nginx-1.20.2
# 查看之前安装的模块
[root@lb01 nginx-1.20.2]# nginx -V
nginx version: nginx/1.20.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_gzip_static_module --with-stream --with-http_ssl_module #这是之前的模块
# 安装旧模块和新模块
[root@lb01 nginx-1.20.2]# ./configure --with-http_gzip_static_module --with-stream --with-http_ssl_module --with-http_sub_module
[root@lb01 nginx-1.20.2]# make && make install
[root@lb01 nginx-1.20.2]# rm -rf /usr/sbin/nginx
[root@lb01 nginx-1.20.2]# cd /usr/local/nginx/sbin/
[root@lb01 sbin]# mv nginx /usr/sbin/
# 配置成功

六、Nginx的命令

nginx #启动nginx。 等价于systemctl start nginx
 
nginx -s reopen #重启Nginx。   等价于systemctl restart nginx
 
nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx。 等价于systemctl reload nginx
 
nginx -s stop #强制停止Nginx服务。 等价于systemctl stop nginx
 
nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)
 
nginx -t #检测配置文件是否有语法错误,然后退出
 
nginx -?,-h #打开帮助信息
 
nginx -v #显示版本信息并退出
 
nginx -V #显示版本和配置选项信息,然后退出
 
nginx -V 2>&1 | sed "s/\s\+--/\n --/g" #模块分行输出,格式化输出
 
killall nginx #杀死所有nginx进程
 
systemctl enable nginx  #加入开机自启
    Centos6:
        启动:nginx
            service nginx start
            /etc/init.d/nginx start
        加入开机自启:
            chkconfig nginx on
 
nginx -T #检测配置文件是否有语法错误,转储并退出
 
nginx -q #在检测配置文件期间屏蔽非错误信息
 
nginx -p prefix #设置前缀路径(默认是:/usr/share/nginx/)
 
nginx -c filename #设置配置文件(默认是:/etc/nginx/nginx.conf)
 
nginx -g directives #设置配置文件外的全局指令

image

七、Nginx配置文件

[root@web01 ~]# cat /etc/nginx/nginx.conf 
#########################核心模块####################
#指定启动的用户
user  www;
#nginx的worker进程的数量
worker_processes  1;
#指定错误日志存放的路径以及记录的级别 debug/info/notice/warn/error/emerg
error_log  /var/log/nginx/error.log warn;
#指定pid文件
pid        /var/run/nginx.pid;
 
########################事件驱动模块#################
events {
    #每个worker工作进程的最大连接数
    worker_connections  1024;
}
 
######################http内核模块###################
# web服务的模块
http {
    # 加载外部的配置文件   好处是可以把该文件简单化,分散开来写
    include       /etc/nginx/mime.types;
    #当nginx不识别文件类型的时候,默认下载
    default_type  application/octet-stream;
    #指定日志格式,日志格式起个名字
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
                      # 可以替换成json格式的日志,把下面代码替换上去就行了
                      log_format json '{"@timestamp":"$time_iso8601",'
                      '"host":"$server_addr",'
                      '"service":"nginxTest",'
                      '"trace":"$upstream_http_ctx_transaction_id",'
                      '"log":"log",'
                      '"clientip":"$remote_addr",'
                      '"remote_user":"$remote_user",'
                      '"request":"$request",'
                      '"http_user_agent":"$http_user_agent",'
                      '"size":$body_bytes_sent,'
                      '"responsetime":$request_time,'
                      '"upstreamtime":"$upstream_response_time",'
                      '"upstreamhost":"$upstream_addr",'
                      '"http_host":"$host",'
                      '"url":"$uri",'
                      '"domain":"$host",'
                      '"xff":"$http_x_forwarded_for",'
                      '"referer":"$http_referer",'
                      '"status":"$status"}';
                      access_log /var/log/nginx/access.log json ;
    #指定访问日志存储路径与格式
    access_log  /var/log/nginx/access.log  main;
    #高效读取文件
    sendfile        on;
    #高效传输
    #tcp_nopush     on;
    #开启长连接
    keepalive_timeout  65;
    #开启压缩
    #gzip  on;
    #包含网站的配置文件
    include /etc/nginx/conf.d/*.conf;
    ###############打开上面的文件就是下面的内容###############
 
    #一个server表示一个网站,可以有多个
    server {
        #监听的端口
        listen       80;
        #网站提供的域名
        server_name  localhost;
        #字符集
        charset utf8;
        #控制访问的网站路径
        location / {
            #指定指定网站路径
            root   /usr/share/nginx/html;
            #指定网址的索引文件
            index  index.html index.htm;
        }
    }
}

image

八、搭建超级玛丽和象棋小游戏

1.准备工作

1、上传代码
	mkdir /opt/Super_Mary创建游戏目录
	把游戏压缩包解压

2.编辑配置文件

[root@web01 conf.d]# vim /etc/nginx/conf.d/supermary.conf
server {
    listen 80;
    server_name game001.com;
    location / {
        root /opt/Super_Mary;
        index index.html;
    }
}

3.测试配置文件是否正常

[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4.重启Nginx

[root@web01 conf.d]# systemctl restart nginx 

5.域名解析

C:\Windows\System32\drivers\etc\hosts
172.16.1.7  game001.com   # ip是服务器的ip

6.开玩!

在网站上输入game001.com开始你的表演!!!
image

posted @ 2021-12-31 20:44  zong涵  阅读(1089)  评论(0编辑  收藏  举报