文章目录
Nginx 安装与运行(Centos7下)
nginx安装
- 安装依赖环境
- 安装gcc环境
yum install gcc-c++
- 安装PCRE库, 用于解析正则表达式
yum install -y pcre pcre-devel
- zlib压缩和解压缩依赖
yum install -y zlib zlib-devel
- SSL安全的加密套接字协议层, 用于HTTP安全传输, 也就是https
yum install -y openssl openssl-devel
-
解压, 需要注意, 解压后得到的是源码, 源码需要编译后才能安装
tar -zxvf nginx-1.16.1.tar.gz
-
编译之前, 先创建 nginx 临时目录, 如果不创建, 在启动 nginx的过程中会报错
mkdir /var/temp/nginx -p
-
在 nginx 目录, 输入如下命令进行配置, 目的是为了创建makefile 文件
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注: \
表示命令行中换行, 提高可读性
-
make 编译 : 命令
make
-
安装: 命令
make install
-
进入sbin 目录启动 nginx: 命令
./nginx
nginx信号命令:
停止 ./nginx -s stop
退出: ./nginx -s quit
重新加载: ./nginx -s reload
检测配置文件: ./nginx -t
扫描二维码关注公众号,回复:
12915535 查看本文章
- 打开浏览器, 访问虚拟机所处的内网ip即可打开 nginx 默认页面 (要关闭防火墙, 后面有步骤)
本地主机直接访问我们的内网ip地址, 即: 192.168.181.134
- 注意: 要关闭系统和centos的防火墙
关闭centos防火墙命令步骤如下:
- 在centos命令行中输入: 依次输入以下命令
1systemctl status firewalld.service
2systemctl stop firewalld.service
3systemctl status firewalld.service
4systemctl disable firewalld.service
Nginx 进程模型
master 进程: 主进程 (领导者)
worker 进程: 工作进程 (服务者, 为 master 服务)
- 查看 Nginx 进程
ps -ef|grep nginx
- 配置 worker 的进程数(默认如上, 只有一个)
vim nginx.conf
nginx -t
用于检测配置文件是否正确
nginx -s reload
重新启动nginx- 查看 Nginx 进程
ps -ef|grep nginx
Worker抢占机制
传统服务器事件处理(BIO, 同步阻塞机制)
Nginx 事件处理(异步非阻塞的多路复用器, 高效的通信方式, 可以应对高并发环境)
nginx.conf 配置结构 (大括号后没有封号哦)
main 全局配置
event 配置工作模式以及连接数
http http模块的相关配置
server 虚拟主机配置, 可以有多个
location 路由规则, 表达式
upstream 集群, 内网服务器
#user nobody; // 默认由 nobody 调用 worker 进程, 可以修改为 root
worker_processes 2; // 配置 worker进程数
// linux 的日志级别: debug info notice warn error crit 由低到高
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
// 标准事件模型: select或poll
// 高效事件模型: Kqueue, Epoll, Eventport
# 默认使用 epoll
use epoll;
# 每个worker允许连接的客户端最大连接数
worker_connections 10240; // 根据硬件配置处理设置
}
http {
include mime.types; // 导入types文件, include 指令可以引入文件
default_type application/octet-stream; // 默认的type类型
// 配置日志格式
#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 logs/access.log main;
sendfile on; // 用于文件高效传输
#tcp_nopush on; // 与上面的 sendfile 同时使用
#keepalive_timeout 0;
keepalive_timeout 65; // 客户端连接服务器的超时时间设置, 以秒为单位
#gzip on; // 数据压缩, 可以提高传输效率, 节约服务器带宽, 但是会格外消耗服务器cpu性能
server {
listen 80; // 设置端口号
server_name localhost; // 设置域名
location / {
// 设置路由 斜杠为根目录
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
nginx.pid 打开失败以及失效的解决方案
问题2解决:
./nginx -h
查看帮助命令文档
-c 命令重新定义文件名字, 即自动默认的路径在 conf/nginx.conf 下
所以, 我们要手动的去指定该位置:
./nginx -c /usr/local/nginx/conf/nginx.conf
然后重新即可.