首页
Linux常用命令
docker常用命令
关于
Search
1
UNRAID增加和缩小虚拟机虚拟磁盘大小
22 阅读
2
docker安装MDCX
18 阅读
3
unraid添加iSCSI 发起程序
8 阅读
4
虚拟机OVA格式转换QCWO2&RAW
3 阅读
5
Ubuntu初始设置
3 阅读
默认分类
docker
容器安装
Linux
群辉
软路由
Unraid
PVE
Nginx
wow
杂项
图床
飞牛
登录
Search
标签搜索
nginx
unraid
PVE
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
软链接
Linux
sftp
防火墙
奥黛丽·逐爱者
累计撰写
69
篇文章
累计收到
8
条评论
首页
栏目
默认分类
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日
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 点赞
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日
0 阅读
0 评论
0 点赞