首页
Linux常用命令
docker常用命令
关于
Search
1
docker安装MDCX
110 阅读
2
UNRAID增加和缩小虚拟机虚拟磁盘大小
37 阅读
3
unraid添加iSCSI 发起程序
24 阅读
4
UNRAID无法安装访问APPS应用中心的问题
5 阅读
5
记Linux新增和挂载磁盘
4 阅读
默认分类
docker
容器安装
Linux
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
登录
Search
标签搜索
nginx
unraid
PVE
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
软链接
Linux
sftp
防火墙
奥黛丽·逐爱者
累计撰写
71
篇文章
累计收到
10
条评论
首页
栏目
默认分类
docker
容器安装
Linux
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
页面
Linux常用命令
docker常用命令
关于
搜索到
6
篇与
Nginx
的结果
2024-05-15
Nginx日志切割
方式一logrotate配置分割logrotate简单介绍logrotate 是一个 Linux系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间 / 大小进行切割,压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。下面命令可以查看是否安装了logrotate --version/etc/logrotate.conf 是主配置文件, /etc/logrotate.d 文件夹下面是自定义的配置文件新增切割nginx日志的配置文件在 /etc/logrotate.d 目录下新增nginx文件 nano nginx_log 写入下面内容(我的日志文件目录是/usr/local/nginx/logs/)/usr/local/nginx/logs/ /usr/local/nginx/logs/*.log { daily # 按天分割 rotate 30 create sharedscripts # 所有的文件切割之后只执行一次下面脚本,通知nginx重新打开新的日志文件进行后续写入 postrotate if [ -f /usr/local/nginx/logs/nginx.pid ]; then kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` # 通过USER1信号通知nginx重新打开日志文件 fi endscript }如果报错则删掉注释这样就会每天定时分割日志了也可以手动执行命令测试一下能否正常分割日志logrotate -f /etc/logrotate.d/nginx修正配置文件后,您需要通知 logrotate 重新读取配置文件,或者重新启动 logrotate 服务。在大多数Linux系统中,您可以使用以下命令来重新启动 logrotate:sudo service logrotate restart或者,如果您使用的是基于systemd的系统,可以使用:sudo systemctl restart logrotate又或者logrotate是属于rsyslog里的其中一个服务重启的方法: CentOS6命令:service rsyslog restart CentOS7命令:systemctl restart rsyslog 另外,可以手动执行分隔命令进行测试【以nginx的为例】 logrotate -f /etc/logrotate.d/nginx确保您的 logrotate 配置文件格式正确,并且没有语法错误。您可以通过运行 logrotate -d /etc/logrotate.d/nginx_log 来测试配置文件,而不实际执行轮换,-d 参数可以输出 logrotate 执行时的调试信息。在修改配置文件并重新启动 logrotate 服务之后,错误应该不会再出现,日志文件将按照新的配置进行管理。{card-describe title="描述"}从您提供的输出信息来看,您使用了 logrotate -d /etc/logrotate.d/nginx_log 命令来以调试模式运行 logrotate,这个命令不会实际执行日志的轮换,而只是打印出它将会执行的操作。调试模式下的输出显示了以下信息:logrotate 正在读取配置文件 /etc/logrotate.d/nginx_log。logrotate 正在考虑轮换位于 /usr/local/nginx/logs/ 目录下的日志文件,具体是匹配 /usr/local/nginx/logs/*.log 的所有文件。对于每个日志文件,logrotate 检查是否满足轮换条件。在这个例子中,配置似乎是每天轮换一次日志(after 1 days (30 rotations)),意味着每天都会执行轮换。logrotate 检查了 access.log 和 error.log 文件,并且发现它们在 2024-05-15 08:30 已经被轮换过,因此它们不需要再次轮换,因为还没有到下一次轮换的时间(即还没有过去一整天)。由于没有日志文件满足轮换条件,logrotate 没有执行 postrotate 脚本。如果您希望 logrotate 实际执行轮换操作,而不是仅仅以调试模式运行,您应该使用 -v 参数(verbose,详细模式)来获取详细的输出,但不会更改实际的行为。例如:logrotate -v /etc/logrotate.d/nginx_log{/card-describe}方式二定时任务执行分割脚本创建一个sh文件,写入以下内容(个别内容根据自己nginx的情况修改)我这里的文件为 /usr/local/nginx/log_bak.sh#/bin/bash yesterday=$(date +%Y-%m-%d) #取得服务器当前时间 savepath_log=' /var/log/nginx_bak'#分割后的日志文件保存目录(注意结尾目录斜杠去掉) nglogs='/usr/local/nginx/logs' #nginx日志文件目录,具体根据实际地址替换(结尾目录斜杠去掉 以免与下面路径中的"/"重复) #判断分割日志保存目录是否存在不存在则创建 if [ ! -d ${savepath_log} ] # 注意 语句之间 空格不可省略,这是bash脚本 不是php脚本那样随和 then mkdir -p ${savepath_log} fi #通过mv命令将日志移动到分割后的日志目录里,然后发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件。 mv ${nglogs}/access.log ${savepath_log}/access_${yesterday}.log #具体根据你的实际日志文件名路径 进行修改access.log名字 mv ${nglogs}/error.log ${savepath_log}/error_${yesterday}.log #具体根据实际日志文件名地址 修改error.log名字 mv ${nglogs}/host.access.log ${savepath_log}/host.access_${yesterday}.log kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #通知nginx重新生成新的日志添加定时任务crontab -e #后添加下面内容 59 23 * * * /usr/local/nginx/log_bak.sh(自己写的脚本的路径)这样每天的23点59就会将当天的日志进行备份,并生成新的日志文件继续记录访问日志方式三手动切割日志如果您更喜欢手动管理日志,或者没有使用 logrotate,您可以编写一个自定义的脚本来切割 NGINX 日志。这个脚本可以运行 gzip 来压缩旧的日志文件,然后创建一个新的日志文件。#!/bin/bash gzip /var/log/nginx/access.log gzip /var/log/nginx/error.log touch /var/log/nginx/access.log touch /var/log/nginx/error.log chown www-data:adm /var/log/nginx/access.log /var/log/nginx/error.log路径以实际为准。
2024年05月15日
0 阅读
0 评论
0 点赞
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日
0 阅读
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日
0 阅读
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日
0 阅读
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日
0 阅读
0 评论
0 点赞
1
2