linux之Nginx安装部署
目录
Nginx web 使用
一、Nginx介绍
1.什么是nginx
Nginx是一个开源且高性能、可靠的http web服务、代理服务
开源:直接获取源代码
高性能:支持海量开发
可靠:服务稳定
2.nginx的特点
- nginx支持很高的并发,nginx在处理大量并发的情况下比其他web服务要快
- 功能模块少,只保留核心模块,其他代码模块化 (易读,便于二次开发,对于开发人员非常友好)
- 需要什么模块再安装模块,不需要全部安装,并且还支持第三方模块
- 其他的web服务需要每隔一段时间进行重启,nginx不需要
- nginx可以再运行期间,更新迭代,代码部署
- 大多数公司都在用nginx
- Nginx使用的是Epool网络模型(当用户发起一次请求,epoll模型会直接进行处理,效率高效,并无连接限制.)
二、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服务
三、优化编译安装(模仿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 #设置配置文件外的全局指令
七、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;
}
}
}
八、搭建超级玛丽和象棋小游戏
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开始你的表演!!!