首页
Linux常用命令
docker常用命令
关于
Search
1
docker安装MDCX
142 阅读
2
UNRAID增加和缩小虚拟机虚拟磁盘大小
45 阅读
3
unraid添加iSCSI 发起程序
36 阅读
4
UNRAID无法安装访问APPS应用中心的问题
10 阅读
5
iStoreOS上使用WireGuard
10 阅读
默认分类
docker
容器安装
Linux
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
登录
Search
标签搜索
nginx
unraid
PVE
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
软链接
Linux
sftp
防火墙
奥黛丽·逐爱者
累计撰写
73
篇文章
累计收到
10
条评论
首页
栏目
默认分类
docker
容器安装
Linux
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
页面
Linux常用命令
docker常用命令
关于
搜索到
5
篇与
nginx
的结果
2024-04-03
Ngixn 配置文件详解
123456本文基于 Nginx 1.18.0,介绍其配置文件 nginx.conf 的主要配置参数。核心参数详解user nginx nginx; # 指定 Nginx 服务运行的用户和用户组 worker_processes 1; # 定义 Nginx 的 worker 进程数,建议等于 CPU 总核心数 # 全局指定 Nginx 错误日志,定义类型,[ debug | info | notice | warn | error | crit ] # 如果要关闭 error log,需要写成 error_log /dev/null; # 而不是 error_log off; 否则错误日志会写到一个叫做 off 的文件中 error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; # 指定 Nginx PID 进程号文件 # 一个 Nginx 进程打开的最多文件描述符数目 # 理论值应该是最多打开文件数(系统的值 ulimit -n)与 Nginx 进程数相除 # 但是 Nginx 分配请求并不均匀,所以建议与 ulimit -n 的值保持一致 worker_rlimit_nofile 65535; # 工作模式与连接数上限 events { # 参考事件模型 # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] # epoll 模型是 Linux 2.6 以上版本内核中的高性能网络 I/O 模型 # 如果跑在 FreeBSD 上面,就用 kqueue 模型 use epoll; # 单个进程最大连接数(最大连接数=连接数*进程数),默认值为 1024 worker_connections 65535; } # 设定 http 服务器 http { # 文件扩展名与文件类型映射表 # Nginx 会根据 mime.type 定义的对应关系来告诉浏览器如何处理当前返回的文件(打开或下载) include mime.types; # 当 Nginx 无法识别当前访问页面内容时(未定义的扩展名),默认触发下载动作 # 浏览器访问到未定义的扩展名的时候,就默认为下载该文件 # 如果将这个设置改成 default_type text/html; 即把所有未设置的扩展名当 HTML 文件打开 default_type application/octet-stream; charset utf-8; # 默认编码 # 服务器名字的 hash 表大小(看不懂的参数默认即可) server_names_hash_bucket_size 128; # 客户端请求头部的缓冲区大小 client_header_buffer_size 32k; # 客户请求头缓冲大小 # Nginx 默认会用 client_header_buffer_size 这个 buffer 来读取 header 值 # 如果 header 过大,它会使用 large_client_header_buffers 来读取 large_client_header_buffers 4 64k; # 设定通过 Nginx 上传文件的大小 client_max_body_size 8m; # 开启高效文件传输模式 # sendfile 指令指定 Nginx 是否调用 sendfile 函数来输出文件 # 对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的负载 # 注意:如果图片显示不正常把这个改成 off sendfile on; # 开启目录列表访问,适合下载服务器,默认关闭 autoindex on; # 防止网络阻塞:数据包会先累积到最大后一次性传输,可以最大化利用网络资源,但会有一点点延迟(默认开启) tcp_nopush on; # 防止网络阻塞:小的数据包不等待直接传输(与 tcp_nopush 互斥,但两者可同为 on ,Nginx 会平衡这两个功能,默认开启) tcp_nodelay on; keepalive_timeout 65; # 长连接超时时间,单位是秒 # FastCGI 相关参数是为了改善网站的性能:减少资源占用,提高访问速度。 # 参考1:https://blog.csdn.net/luozhonghua2014/article/details/37737823 # 参考2:https://blog.51cto.com/blief/1739655 fastcgi_connect_timeout 300; # 连接到后端 fastcgi 超时时间(秒) fastcgi_send_timeout 300; # 指 Nginx 进程向 fastcgi 进程发送 request 的整个过程的超时时间(秒) fastcgi_read_timeout 300; # 指 fastcgi 进程向 Nginx 进程发送 response 的整个过程的超时时间(秒) fastcgi_buffer_size 64k; # 读取 fastcgi 应答第一部分需要多大缓冲区 fastcgi_buffers 4 64k; # 指定本地需要多少和多大的缓冲区来缓冲 fastcgi 应答请求 fastcgi_busy_buffers_size 128k; # 默认值是 fastcgi_buffer 的 2 倍 fastcgi_temp_file_write_size 128k; # 写入缓存文件使用多大的数据块,默认值是 fastcgi_buffer 的 2 倍 # gzip 模块设置 gzip on; # 开启 gzip 压缩输出 gzip_min_length 1k; # 最小压缩文件大小 gzip_buffers 4 16k; # 压缩缓冲区 gzip_http_version 1.0; # 压缩版本(默认 1.1,前端如果是 squid2.5 请使用 1.0) gzip_comp_level 2; # 压缩等级 # 压缩类型,默认就已经包含 text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个 warn # 图片压缩:建议不对 gif、jpge 等图片进行压缩,因为其压缩比例极低,反而耗费 CPU,但 bmp 可以压缩,因为 bmp 压缩比例较大 # 字体压缩:只需要为 ttf、otf 和 svg 字体启用 gzip,对其他字体格式进行 gzip 压缩时效果不明显 # 参考:https://blog.csdn.net/liupeifeng3514/article/details/79018334 gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; # 是否在 http header 中添加 Vary: Accept-Encoding,建议开启 # limit_zone crawler $binary_remote_addr 10m; # 开启限制 IP 连接数的时候需要使用 # upstream 的负载均衡,weight 是权重,可以根据机器配置定义权重 # weigth 参数表示权值,权值越高被分配到的几率越大 # Nginx 的 upstream 目前支持 4 种方式的分配,这里演示一种,后面章节会分别演示 upstream www.baidu.com { server 192.168.80.121:80 weight=3; server 192.168.80.122:80 weight=2; server 192.168.80.123:80 weight=3; } # 全局指定 Nginx 访问日志的格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 全局定义 Nginx 访问日志的位置 access_log logs/access.log main; # 一般上面两个不配置,只设置 access_log off; 然后在需要的 server 下配置日志 # 这么做可以避免日志产生过大(如果 http 和 server 都不配置,默认会写入 logs/access.log) access_log off; # 虚拟主机的配置,一个 server 配置段一般对应一个域名 # 在实际生产中一般会将这部分拆出来形成子配置文件,后面的章节会讲 server { listen 80; # 指定监听端口 server_name www.baidu.com; # 指定当前网站的访问域名 location / { root html; # 指定代码位置 index index.html index.htm; # 指定首页文件 } # 定义 404 错误页面,如果是 404 错误,则把站点根目录下的 404.html 返回给用户 error_page 404 /404.html; # 定义 50x 错误页面,可以配合 location 使用,用 location 调用实际的错误页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } }全局日志的关闭为了避免日志产生过大,也是处于模块化的思想,我们一般不在全局中(http 中)指定日志格式和输出位置,而是在子配置文件中(每个 server 中)单独配置。但是如果 http 和 server 都不配置,默认会写入 logs/access.log ,即全局的形式。所以需要关闭全局日志。网上很多博客中展示的都是错误示例,这里演示正确的关闭方式,包括 error_log 和 access_log :# 错误示例,会产生名字为 off/on 的日志文件 error_log off; access_log on; 正确关闭方式 error_log /dev/null; access_log off;日志 log_format 可选项默认格式:log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';参数释义表:字段说明$remote_addr客户端地址$remote_user客户端用户名称$time_local访问时间和时区$request请求的 URI 和 HTTP 协议$http_host请求地址,即浏览器中你输入的地址(IP 或域名)$statusHTTP 请求状态$upstream_statusupstream 状态$body_bytes_sent发送给客户端文件内容大小$http_refererurl 跳转来源$http_user_agent用户终端浏览器等信息$ssl_protocolSSL协议版本$ssl_cipher交换数据中的算法$upstream_addr后台 upstream 的地址,即真正提供服务的主机地址$request_time整个请求的总时间$upstream_response_time请求过程中,upstream 响应时间http、server、location 之间的关系http:主要用于解决用户请求中的报文信息server:用于配置一个具体的网站响应操作location:用于匹配 uri由上至下是包含关系。更多其它参数server 中的参数配置项其实有很多,它们可以实现一些丰富的功能。上面只列举了最基础的几个参数,后面的章节会单独讲解如何配置来实现各种功能。
2024年04月03日
1 阅读
0 评论
0 点赞
2024-04-03
Nginx 设置开机自启
在生产环境中,如果我们的服务器意外重启,此时要是 Nginx 没有随服务器启动起来,我们的 Web 站点就会是无应答的状态,这会给我们带来不同程度损失。因此我们需要设置 Nginx 开机自启。Ubuntu 设置开机自启以下所有命令,如果你是 root 账户,直接执行即可,不是的话前面加 sudo 获取权限。在 Ubuntu 和 Debian 下,我们通过 update-rc.d 设置 Nginx 的开机启动。经实验,以下步骤适用于 Ubuntu 16.04、18.04、20.04 版本的系统。创建启动脚本在 Linux 系统的 /etc/init.d/ 目录下创建 nginx 文件:vim /etc/init.d/nginx往该文件内写入以下脚本内容(该脚本内容来自网络):#! /bin/sh # chkconfig: 2345 55 25 # Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and # run 'update-rc.d -f nginx defaults', or use the appropriate command on your # distro. For CentOS/Redhat run: 'chkconfig --add nginx' ### BEGIN INIT INFO # Provides: nginx # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INIT INFO # Author: licess # website: http://lnmp.org PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=nginx NGINX_BIN=/usr/local/nginx/sbin/$NAME CONFIGFILE=/usr/local/nginx/conf/$NAME.conf PIDFILE=/usr/local/nginx/logs/$NAME.pid case "$1" in start) echo -n "Starting $NAME... " if netstat -tnpl | grep -q nginx;then echo "$NAME (pid `pidof $NAME`) already running." exit 1 fi $NGINX_BIN -c $CONFIGFILE if [ "$?" != 0 ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Stoping $NAME... " if ! netstat -tnpl | grep -q nginx; then echo "$NAME is not running." exit 1 fi $NGINX_BIN -s stop if [ "$?" != 0 ] ; then echo " failed. Use force-quit" exit 1 else echo " done" fi ;; status) if netstat -tnpl | grep -q nginx; then PID=`pidof nginx` echo "$NAME (pid $PID) is running..." else echo "$NAME is stopped" exit 0 fi ;; force-quit) echo -n "Terminating $NAME... " if ! netstat -tnpl | grep -q nginx; then echo "$NAME is not running." exit 1 fi kill `pidof $NAME` if [ "$?" != 0 ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop sleep 1 $0 start ;; reload) echo -n "Reload service $NAME... " if netstat -tnpl | grep -q nginx; then $NGINX_BIN -s reload echo " done" else echo "$NAME is not running, can't reload." exit 1 fi ;; configtest) echo -n "Test $NAME configure files... " $NGINX_BIN -t ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}" exit 1 ;; esac修改部分参数如果你的 Nginx 是通过编译安装的,则需要根据实际安装时的设置,修改启动脚本中的几个参数(大约在第):# 如果是按照我方式编译安装的,则不用修改,默认参数值就是我的实际安装位置 NGINX_BIN=/usr/local/nginx/sbin/$NAME CONFIGFILE=/usr/local/nginx/conf/$NAME.conf PIDFILE=/usr/local/nginx/logs/$NAME.pid添加执行权限上述脚本保存为 /etc/init.d/nginx ,然后设置文件的执行权限:# 给所有用户给予可执行权限 chmod a+x /etc/init.d/nginx至此就可以通过下面指令控制 Nginx 的启动、停止和重新加载了:# 启动 /etc/init.d/nginx start # 停止 /etc/init.d/nginx stop # 重新加载配置 /etc/init.d/nginx reload添加至开机自启动现在将 Nginx 服务加入开机自启动:# 设置开机启动 sudo update-rc.d nginx defaults # 启动 Nginx sudo /etc/init.d/nginx start当然了,如果需要关闭开机启动的功能:# 取消开机启动 sudo update-rc.d -f nginx remove{lamp/}CentOS 6.x 设置开机自启以下所有命令,如果你是 root 账户,直接执行即可,不是的话前面加 sudo 获取权限。创建启动脚本在 Linux 系统的 /etc/init.d/ 目录下创建 nginx 文件:vim /etc/init.d/nginx往该文件内写入以下脚本内容(该脚本内容来自 自官方网站 - Red Hat NGINX Init Script ):#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: NGINX is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -n "$user" ]; then if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done fi } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $prog -HUP retval=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac修改部分参数如果你的 Nginx 是通过编译安装的,则需要根据实际安装时的设置,修改启动脚本中的两个参数(大约在第 22 行和第 25 行):# 修改成 Nginx 执行程序的路径,例如我的一般是:/usr/local/nginx/sbin/nginx nginx="/usr/sbin/nginx" # 修改成配置文件的路径,例如我的一般是:/usr/local/nginx/conf/nginx.conf NGINX_CONF_FILE="/etc/nginx/nginx.conf"还需要修改 PID 文件路径,大约在启动脚本中的第 11 行可以看到被注释的默认路径,在下面加一行,手动指定成和 nginx.conf 文件中的 PID 路径一致即可:设置成和 nginx.conf 中一致。例如我的一般是:/usr/local/nginx/logs/nginx.pid # pidfile: /var/run/nginx.pid pidfile: /usr/local/nginx/logs/nginx.pid添加执行权限上述脚本保存为 /etc/init.d/nginx ,然后设置文件的执行权限:给所有用户给予可执行权限chmod a+x /etc/init.d/nginx至此就可以通过下面指令控制 Nginx 的启动、停止和重新加载了:# 启动 /etc/init.d/nginx start # 停止 /etc/init.d/nginx stop # 重新加载配置 /etc/init.d/nginx reload添加至开机自启动现在将 Nginx 服务加入 chkconfig 管理列表:# 添加 Nginx 启动脚本为 chkconfig 管理的一个服务 chkconfig --add /etc/init.d/nginx # 将 Nginx 加入开机自启 chkconfig /etc/init.d/nginx on当然了,如果需要关闭开机启动的功能:# 查看该服务进程状态 chkconfig --list nginx # 关闭 Nginx 开机自启 chkconfig /etc/init.d/nginx off # 删除 chkconfig 管理的的 Nginx 启动服务(如果确实不需要了) chkconfig --del /etc/init.d/nginx开机自启脚本提供的快捷命令通过 Nginx 开机自启脚本本身提供了一些 Nginx 常用操作的快捷命令,一旦我们通过这个脚本实现开机自启后,就可以通过这些快捷命令来操作 Nginx 了:# 启动 Nginx /etc/init.d/nginx start # 重新加载 Nginx 配置 /etc/init.d/nginx reload # 停止 Nginx /etc/init.d/nginx stop这些命令通过看脚本代码就能找到。{lamp/}CentOS 7.x 设置开机自启以下所有命令,如果你是 root 账户,直接执行即可,不是的话前面加 sudo 获取权限。在 CentOS 7.x 版本的系统开始,就不太好通过 chkconfig + Red Hat NGINX Init Script 的方式来设置 Nginx 的开机启动了。因为会留下了一个 bug:通过 /etc/init.d/nginx 脚本方式来控制 Nginx 的启动、停止时,start 一直卡着(实际端口是开启了,必须通过 Ctrl + C 强制关闭),stop 不生效(提示成功,但是端口没关闭)。那么对于 CentOS 7.x 系统,可以通过 systemd 来管理 Nginx。建立服务文件新建文件vim /usr/lib/systemd/system/nginx.service往该文件内写入以下内容(内容模版参考官网 NGINX systemd service file ):[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target文件内容解释:[Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:启动、重启、停止命令全部要求使用绝对路径 [Install]服务安装的相关设置,可设置为多用户修改部分参数如果你的 Nginx 是通过编译安装的,则需要根据实际安装时的设置,修改文件中的部分参数,修改后的示例如下:[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf 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 quit PrivateTmp=true [Install] WantedBy=multi-user.target添加执行权限给上述文件添加执行权限:chmod +x /usr/lib/systemd/system/nginx.service添加至开机自启动设置开机自启动:systemctl enable nginx.serviceNginx 服务管理此时可以使用一些快捷命令进行 Nginx 服务管理:# Nginx 启动 systemctl start nginx.service # 查看 Nginx 服务当前状态 systemctl status nginx.service # Nginx 重载 systemctl reload nginx.service # Nginx 停止 systemctl stop nginx.service # 重新启动 Nginx 服务 systemctl restart nginx.service # 停止 Nginx 的开机自启动 systemctl disable nginx.serviceNginx 启动日志查看:journalctl -f -u nginx.servicesystemd 提供的一些命令查看所有已启动的服务:systemctl list-units --type=service命令集合:# 查看所有开机启动项 systemctl list-unit-files --type=service | grep enabled # 查询服务是否开机启动 systemctl is-enabled servicename.service # 开机运行服务 systemctl enable *.service # 取消开机运行 systemctl disable *.service # 启动服务 systemctl start *.service # 停止服务 systemctl stop *.service # 重启服务 systemctl restart *.service # 重新加载服务配置文件 systemctl reload *.service # 查询服务运行状态 systemctl status *.service # 显示启动失败的服务 systemctl --failed注:* 代表某个服务的名字,如 http 的服务名为 httpd。
2024年04月03日
1 阅读
0 评论
0 点赞
2024-04-03
Nginx 常用命令
Nginx 操作的命令# 查看 Nginx 版本 /usr/local/nginx/sbin/nginx -v # 检查配置文件 ngnix.conf 的正确性 /usr/local/nginx/sbin/nginx -t # 启动 Nginx 服务 /usr/local/nginx/sbin/nginx # 启动 Nginx 服务,-c 指定配置文件的路径 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 重新加载配置 /usr/local/nginx/sbin/nginx -s reload # 停止 Nginx 服务(快速关闭,不管有没有正在处理的请求) /usr/local/nginx/sbin/nginx -s stop # 安全退出 Nginx 服务(在退出前会完成已经接受的连接请求,比较优雅) /usr/local/nginx/sbin/nginx -s quitLinux 检查的命令# 查看 Nginx 进程 ps -ef | grep nginx # 检查 Nginx 启动的端口 netstat -lntup | grep nginx服务器防火墙相关命令如果 Nginx 启动成功后,从浏览器访问还是连接不上,按如下步骤排查:检查阿里云安全组是否开放端口(通过阿里云后台)检查腾讯云实例管理防火墙是否开放端口(通过腾讯云后台)服务器防火墙是否开放端口
2024年04月03日
4 阅读
0 评论
0 点赞
2024-04-03
Nginx 的卸载
我一般都是通过源码编译安装的方式,所以这里主要介绍如何卸载编译安装的 Nginx。编译安装的 Nginx 卸载非常方便,直接将 Nginx 的安装目录删除即可,同时可以把 Nginx 使用的日志目录和临时目录一并删除。停止 Nginx 服务首先输入命令 ps -ef | grep nginx 检查一下 Nginx 服务是否在运行,在卸载之前需要先停止服务。删除 Nginx 安装目录# 查找安装路径 whereis nginx # 如果是按照我上一篇介绍的步骤安装,删除安装目录的命令如下: rm -rf /usr/local/nginxUbuntu 删除 Nginx 自启动如果安装了 Nginx 自启动(后面章节会讲),按照如下命令将自启动脚本删除。# 进入 /etc/init.d 查看哪些服务进程是开机自启动的 cd /etc/init.d ls # 取消 Nginx 开机启动 update-rc.d -f nginx remove # 删除 Nginx 自启动脚本 rm /etc/init.d/nginxCentOS 7.x 删除 Nginx 自启动在 CentOS 7.x 中,如果你跟我一样是通过 systemd 实现 Nginx 自启动的(后面章节会讲),按照如下命令将自启动脚本删除。# 查看开机启动项里有没有 nginx.service systemctl list-unit-files --type=service | grep enabled # 停止 Nginx 服务进程 systemctl stop nginx.service # 使 Nginx 开机不启动 systemctl disable nginx.service # 删除 Nginx 服务文件 rm /usr/lib/systemd/system/nginx.servicefind 查找相关文件并删除查找并删除 Nginx 相关文件,如日志目录和临时目录等。# 查找相关文件 find / -name nginx # 判断是否能删除后,执行删除命令 ...
2024年04月03日
2 阅读
0 评论
0 点赞
2024-04-03
Nginx 的安装
Windows 下安装Windows 下的 Nginx 不能用于生产,一般用于开发目的或者尝鲜体验。下载 Nginx从 官方网站 下载稳定版本。以 nginx/Windows-1.18.0 为例,直接下载 nginx-1.18.0.zip。下载后解压,解压后如下:启动 Nginx有两种方法启动 Nginx:直接双击 nginx.exe ,双击后一个黑色的弹窗一闪而过。(不建议用这种方式)打开 cmd 命令窗口,切换到 Nginx 解压目录下,输入命令 nginx.exe ,回车即可。检查 Nginx 是否启动成功直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功:配置监听Nginx 的配置文件是 /conf 目录下的 nginx.conf ,默认配置的 Nginx 监听的端口为 80,如果 80 端口被占用可以修改为未被占用的端口即可。server { listen 80; server_name localhost;当我们修改了 Nginx 的配置文件 nginx.conf 时,不需要关闭 Nginx 后重新启动 Nginx,只需要执行命令 nginx -s reload 即可让改动生效。关闭 Nginx如果使用 cmd 命令窗口启动 Nginx,关闭 cmd 窗口是不能结束 Nginx 进程的,可使用两种方法关闭 Nginx:输入 Nginx 命令 nginx -s stop (快速停止 Nginx)或 nginx -s quit (完整有序的停止 Nginx)使用 taskkill:taskkill /f /t /im nginx.exetaskkill 是用来终止进程的/f 是强制终止/t 终止指定的进程和任何由此启动的子进程/im 根据名字指定要终止的进程Linux 下安装有三种安装方式:编译安装:根据源码,根据实际业务需求,需要什么功能,编译时添加相应的模块。这种方式可以让 Nginx 最轻量化安装。自动化安装:配置好安装源,直接通过自动化安装工具安装。这种方式有可能会因为缺少相关依赖而安装失败。CentOS: yum install nginx Ubuntu: apt-get install nginx二进制安装:类似于绿色免安装版,把编译安装好的程序封装起来的一个包。一般采用第一种编译安装的方式。准备依赖环境以下命令,如果你是 root 账户,直接执行即可,不是的话前面加 sudo 获取权限。Ubuntu(16.04、18.04、20.04):# 建议先执行下 apt-get 的更新 apt-get update # 安装 gcc 和 g++ 依赖库 apt-get install build-essential apt-get install libtool # 安装 PCRE pcre-devel 依赖库 apt-get install libpcre3 libpcre3-dev # 安装 zlib 依赖库(注意 lib 后面是阿拉伯数字 1,不是字母 l) apt-get install zlib1g-dev # 安装 OpenSSL 依赖库 apt-get install openssl apt-get install libssl-dev # 未安装该库会报 SSL modules require the OpenSSL library.CentOS(7.6):# 安装 gcc 依赖库 yum install gcc-c++ # 安装 PCRE pcre-devel 依赖库 yum install -y pcre pcre-devel # 安装 zlib 依赖库 yum install -y zlib zlib-devel # 安装 OpenSSL 依赖库 yum install -y openssl openssl-develgcc 依赖库:安装 Nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装。PCRE pcre-devel 依赖库:PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。Nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 Linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库,Nginx 也需要此库。zlib 依赖库:lib 库提供了很多种压缩和解压缩的方式,Nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要安装 zlib 库。OpenSSL 依赖库:OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。Nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要安装 OpenSSL 库。准备源码包以下命令,如果你是 root 账户,直接执行即可,不是的话前面加 sudo 获取权限。从 官方网站 下载稳定版本到任意目录(例如我一般会把软件放到 /opt ),并解压。# 下载 wget http://nginx.org/download/nginx-1.18.0.tar.gz # 解压 tar -zxvf nginx-1.18.0.tar.gz编译安装以下命令,如果你是 root 账户,直接执行即可,不是的话前面加 sudo 获取权限。首先进入 Nginx 安装包的解压目录:cd nginx-1.18.0/下面开始安装 Nginx:# 预编译 ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module # 检查是否编译正确 echo $? # 如果返回值是 0,就是执行成功;如果是返回值是 0 以外的值,就是失败。 # 编译 make # 安装 make install在 ./configure 命令后跟了一堆参数,它们分别表示:--prefix:指定当前要安装的 Nginx 主程序目录--sbin-path:安装完成后,使用 Nginx 的命令放在该目录下--user:运行 Nginx 的用户--group:运行 Nginx 的用户组--with-(模块名):为 Nginx 添加的模块比较完整的配置项的含义请参见 官方网站添加 Nginx 用户一般我们会创建一个不能 ssh 登录的帐号,这类账号专门用于启动服务,只是让服务启动起来,但是不能登录系统(提升安全性)。# 为 Nginx 创建一个不能 ssh 登陆的用户(预编译命令中指定的用户和用户组) useradd nginx -s /sbin/nologin -M在 useradd 命令后跟了两个参数,它们分别表示:-s:表示指定用户所用的 shell,此处为 /sbin/nologin ,表示不登录-M:表示不创建用户主目录验证安装成功主要通过 Nginx 能否启动来验证是否安装成功,一般我会运行以下这些命令来测试。# 查找安装路径 whereis nginx # 查看 Nginx 的安装目录 cd /usr/local/nginx # 预编译命令中指定的路径 ls # 查看 Nginx 程序管理命令 cd /usr/local/nginx/sbin # 预编译命令中指定的路径 ls # 查看 Nginx 版本 /usr/local/nginx/sbin/nginx -v # 启动 Nginx /usr/local/nginx/sbin/nginx # 查看 Nginx 进程 ps -ef | grep nginx # 检查 Nginx 启动的端口(默认 0.0.0.0:80) netstat -lntup | grep nginx接下来通过浏览器访问 Nginx(服务器 IP:80),出现以下页面说明启动成功:如果不能访问,就要先看下服务器是不是开启了防火墙但又没开放端口(你可以选择不开防火墙,或者开完防火墙后记得开需要的端口)。# 查看状态, 发现当前是 dead 状态, 即防火墙未开启 systemctl status firewalld # 开启防火墙, 没有任何提示即开启成功 # 再次查看状态, 显示 running 即已开启了 systemctl start firewalld # 开放默认端口号 80, 提示 success, 表示设置成功 firewall-cmd --permanent --zone=public --add-port=80/tcp # 修改后需要重新加载配置才生效 firewall-cmd --reload; # 查看已经开放的端口 firewall-cmd --permanent --list-port # 关闭默认的端口号 80(如果需要的话, 执行这个命令就行了) firewall-cmd --permanent --zone=public --remove-port=80/tcp # 关闭防火墙(如果需要的话, 执行这个命令就行了) systemctl stop firewalld如果使用的是阿里云等云厂家的服务器,80 端口是默认开启的,如果用了其它端口,则需要去云管理平台进行一些设置。大致的入口是:进入云服务管理控制平台 ——> 进入云服务器 ——> 选择实例 ——> 管理。阿里云就找到:本实例安全组 --> 配置规则 --> 添加安全组规则。腾讯云就找到:防火墙 --> 管理规则 --> 添加规则。新增的规则就参考自带的 80 端口写就好了。这里就是测一下能不能启停,生产环境要把 Nginx 加到系统自启。现在先关闭 Nginx。# 关闭 Nginx /usr/local/nginx/sbin/nginx -s stop
2024年04月03日
7 阅读
0 评论
0 点赞