前期准备
关闭seLinux
vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
#重启
reboot
服务器 | 名称 | IP |
---|---|---|
centos 7 | Web01 | 192.168.15.33 |
修改源,复制不能有空格
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
nginx源码安装
yum -y install wget
wget https://nginx.org/download/nginx-1.20.1.tar.gz
#解压
tar -xf nginx-1.20.1.tar.gz
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YgwZPy81-1635241804943)(/Users/raoxurou/Library/Application Support/typora-user-images/image-20211026112120990.png)]
需要编译的配置
./configure --help
--with-http_ssl_module # 配置HTTPS时使用
--with-http_v2_module # 配置GOLANG语言时使用
--with-stream # 启用TCP/UDP代理服务
设置系统配置参数
cd nginx-1.20.1
./configure --with-http_ssl_module --with-http_v2_module --with-stream
安装过程中的报错
./configure: error: SSL modules require the OpenSSL library.
缺少OpenSSL文件
下载此文件
yum -y install openssl openssl-devel
再运行编译命令
编译
make
编译安装
make install
配置环境变量
vi /etc/profile
#文件最后添加
export PATH=$PATH:/usr/local/nginx/sbin
#重载
source /etc/profile
system系统管理配置
vi /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=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
#重载
systemctl daemon-reload
systemctl start nginx
nginx常用命令
nginx -v : 展示nginx的版本号
nginx -V :展示nginx版本号和配置参数
nginx -t : 测试配置文件
nginx -T : 测试配置文件并打印
nginx -q : 静默输出错误信息
nginx -s : 向nginx发送信号
nginx -p : 指定运行的家目录
nginx -e : 设置错误日志的路径
nginx -g : 临时设置配置项
Nginx的配置文件
Nginx的进程模型
角色:
master : 负责监控worker进程
worker :负责处理HTTP请求
vi /etc/nginx/nginx.conf
配置详解
# 工作进程启动用户
user nginx;
# 启动的worker进程数
worker_processes auto;
# 指定错误日志的路径
error_log /var/log/nginx/error.log notice;
# 指定nginx进程的PID
pid /var/run/nginx.pid;
# 配置事件
events {
# worker进程中最大的连接数
worker_connections 1024;
}
# http配置模块
http {
# include 是讲其他文件导入进来
include /etc/nginx/mime.types;
# default_type 指定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"';
# 定义日志路径
access_log /var/log/nginx/access.log main;
# 高效读取文件
sendfile on;
#tcp_nopush on;
# 长连接的超时时间
keepalive_timeout 65;
# 设置GZIP压缩
#gzip on;
# 加载其他的配置文件
include /etc/nginx/conf.d/*.conf;
}
game.conf
# 每一个server都代表一个网站(nginx是支持多个网站)
server {
# 指定当前网站的域名
server_name www.baidu.com;
# 指定当前网站的端口
listen 80;
# 指定一个访问路径
location / {
# 指定站点目录
root /opt/html;
# 指定默认访问的文件
index index.html;
}
}
案例:nginx搭建小游戏
上传游戏代码
scp -r /Users/raoxurou/Desktop/mario.zip root@192.168.15.33:~
解压
unzip mario.zip
将文件移动到/usr/share/nginx/
mv jiaoben1765,html5-mario /usr/share/nginx/
编写游戏配置文件
cd /etc/nginx/conf.d/game.conf
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
#相对应的发布文件目录
root /usr/share/nginx/html;
#文件里要有默认的index.html文件
index index.html index.htm;
}
测试
nginx -t
启动
systemctl start nginx
版权声明:本文为raoxurou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。