linux配置nginx开机自启&nginx部署与systemctl控制启动&/etc/systemd/system 和 /lib/systemd/system 的区别
一、方法一
1.找到/etc/rc.local文件,在文件最后一行新增启动命令(nginx默认安装目录为:/usr/local/nginx):
/usr/local/nginx/sbin/nginx
二、方法二
1.进入/etc/systemd/system文件夹,新增文件 nginx.service
2.文件内容:
[Unit]
Description=nginx service
After=network.target
[Service]
User=root
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecStartPre=/bin/sleep 10
[Install]
WantedBy=multi-user.target
3.开启开机启动
systemctl enable nginx
/etc/systemd/system 和 /lib/systemd/system 的区别
在Linux操作系统中,特别是那些使用Systemd作为init系统的发行版,有两个重要的目录涉及到systemd服务单元文件的存储:
/usr/lib/systemd/system
- 这个目录用于存放由系统软件包安装的服务单元文件。这些文件是由软件包维护人员提供的,随着软件包的升级,可能会被自动更新或替换。
- 不推荐用户直接编辑这个目录下的服务文件,因为更改可能在软件包升级期间丢失。
/etc/systemd/system/
- 这个目录用于存放用户自定义的服务单元文件。这些文件是由系统管理员根据自身需求定制的服务配置,不会受到软件包升级的影响。
- 建议在此目录下存放自定义的服务单元文件,以便保留定制化配置。
这两个目录的关系是互补的,共同构成了systemd服务单元文件的基础。系统内建的服务通常位于/usr/lib/systemd/system
,而自定义的服务则位于/etc/systemd/system
。
当systemd加载服务配置时,会优先查找/etc/systemd/system
目录。如果在那里找不到对应的服务单元文件,才会回退到/usr/lib/systemd/system
查找。这意味着,如果你在/etc/systemd/system
放置了一个同名的服务单元文件,那么它会覆盖系统自带的服务配置。这种设计允许用户灵活地自定义和扩展系统功能。
另外要注意的是,当你编辑完/etc/systemd/system
下的服务文件并准备启用新配置时,通常还需要运行systemctl daemon-reload
来通知Systemd重新加载配置文件,然后才能使用systemctl start|stop|restart|enable|disable
等命令来操作服务。
linux 系统中有很多的 system 目录,在平常使用中或者大量的博客中,常看到的有/etc/systemd/system、/lib/systemd/system 以及/usr/lib/systemd/system 等,这三者有什么样的关系呢,本文将三者的关系详细说明,后续使用不再混淆。
简介
目录/lib/systemd/system 以及/usr/lib/systemd/system 其实指向的是同一目录,在/目录下执行命令 ll
即可知:
[root@localhost /]# ll
total 28
lrwxrwxrwx. 1 root root 7 Jul 3 09:43 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jul 19 12:04 boot
drwxr-xr-x. 19 root root 3080 Jul 19 04:03 dev
drwxr-xr-x. 76 root root 8192 Jul 19 20:07 etc
drwxr-xr-x. 4 root root 39 Jul 19 04:37 home
lrwxrwxrwx. 1 root root 7 Jul 3 09:43 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Jul 3 09:43 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 3 root root 23 Jul 3 20:33 opt
dr-xr-xr-x. 118 root root 0 Jul 19 04:03 proc
dr-xr-x---. 10 root root 4096 Jul 20 06:31 root
drwxr-xr-x. 27 root root 760 Jul 19 16:00 run
lrwxrwxrwx. 1 root root 8 Jul 3 09:43 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x. 13 root root 0 Jul 19 04:03 sys
drwxrwxrwt. 10 root root 4096 Jul 20 03:37 tmp
drwxr-xr-x. 13 root root 155 Jul 3 09:43 usr
drwxr-xr-x. 21 root root 4096 Jul 19 13:34 var
[/usr]/lib/systemd/system/
该目录中包含的是软件包安装的单元,也就是说通过 yum、dnf、rpm 等软件包管理命令管理的 systemd 单元文件,都放置在该目录下。
[/usr]/lib/systemd/system/
The expectation is that `/lib/systemd/system` is a directory that should only contain
systemd unit files which were put there by the package manager (YUM/DNF/RPM/APT/etc).
- /etc/systemd/system/(系统管理员安装的单元, 优先级更高)
Files in /etc/systemd/system are manually placed here by the operator of the system for
ad-hoc software installations that are not in the form of a package. This would
include tarball type software installations or home grown scripts.
在一般的使用场景下,每一个 Unit(服务等) 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。
Systemd 默认从目录/etc/systemd/system/
读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/
,真正的配置文件存放在这个目录。 systemctl enable
命令用于在上面两个目录之间,建立符号链接关系。
$ sudo systemctl enable clamd@scan.service
# 等同于
$ sudo ln -s '/usr/lib/systemd/system/clamd@scan.service' '/etc/systemd/system/multi-
user.target.wants/clamd@scan.service'
如果配置文件里面设置了开机启动,systemctl enable 命令相当于激活开机启动。与之对应的,systemctl disable 命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。
$ sudo systemctl disable clamd@scan.service
虽然在/etc/systemd/system/目录下放置的是系统管理员安装的单元,但是实际使用过程中,用户可以自定义服务配置文件,并且放置在该目录,将该服务的配置文件的优先级提高。
优先级
systemd 的使用大幅提高了系统服务的运行效率, 而 unit 的文件位置一般主要有三个目录:
Table 1. Load path when running in system mode (--system).
┌────────────────────────┬─────────────────────────────┐
│Path │ Description │
├────────────────────────┼─────────────────────────────┤
│/etc/systemd/system │ Local configuration │
├────────────────────────┼─────────────────────────────┤
│/run/systemd/system │ Runtime units │
├────────────────────────┼─────────────────────────────┤
│/lib/systemd/system │ Units of installed packages │
└────────────────────────┴─────────────────────────────┘
这三个目录的配置文件优先级依次从高到低,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。
系统安装时,默认会将 unit 文件放在/lib/systemd/system
目录。如果我们想要修改系统默认的配置,比如nginx.service
,一般有两种方法:
- 在
/etc/systemd/system
目录下创建nginx.service
文件,里面写上我们自己的配置。 - 在
/etc/systemd/system
下面创建nginx.service.d
目录,在这个目录里面新建任何以.conf 结尾的文件,然后写入我们自己的配置。推荐这种做法。
/run/systemd/system
这个目录一般是进程在运行时动态创建 unit 文件的目录,一般很少修改,除非是修改程序运行时的一些参数时,即 Session 级别的,才在这里做修改。
附 systemd 介绍
服务设定位置:
- /usr/lib/systemd/system/
- /run/systemd/system/
- /etc/systemd/system/(一般为连接文件)
服务统一管理:systemd
service 设定文件:
- /usr/lib/systemd/system/*.service: 预设设定文件
- /etc/systemd/system/system/*.service.d/: 用户个性化设定文件,会被加入设定
- /etc/systemd/system/system/*.service.wants/: 连结文件,启动该服务后推荐启动的其他服务
- /etc/systemd/system/system/*.service.requires/: 连结文件,启动该服务之前,需要预先启动的服务
- /run/systemd/generator.late 使用 systemd-sysv-generator 工具处理 SysV init 脚本(即:/etc/init.d/*),自动生成.service 文件
nginx部署与systemctl控制启动
部署nginx
下载nginx
- nginx下载地址
- Stable version:最新稳定版,生产环境上建议使用的版本
安装nginx前置环境
- yum install gcc-c++
- yum install -y pcre pcre-devel
- yum install -y zlib zlib-devel
- yum install -y openssl openssl-devel
解压nginx安装包并编译
tar -xvf nginx-1.14.0.tar.gz # 不要解压在/usr/local下
./configure && make && make install #运行安装配置
/usr/local/nginx/sbin/nginx -t # 测试nginx安装是否成功
# 安装成功后nginx的目录为/usr/local/nginx下
conf/nginx.conf #nginx 配置文件
sbin/nginx #nginx 启动文件
sbin/nginx -s reload #nginx 重启命令
配置systemctl 启动
vim /usr/lib/systemd/system/nginx.service
[Unit] #对服务的说明
Description=nginx - high performance web server #描述服务
After=network.target remote-fs.target nss-lookup.target #描述服务类别
[Service] #服务的一些具体运行参数的设置
Type=forking #后台运行的形式
PIDFile=/usr/local/nginx/logs/nginx.pid #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 stop #停止命令
ExecQuit=/usr/local/nginx/sbin/nginx -s quit #快速停止
PrivateTmp=true #给服务分配临时空间
[Install]
WantedBy=multi-user.target #服务用户的模式
#在启动服务之前,需要先重载systemctl命令
systemctl daemon-reload
systemctl start nginx.service
查看nginx的启动状态
[root@localhost conf]# systemctl status nginx
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since 二 2023-05-09 11:26:32 CST; 5s ago
Process: 57306 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)
Process: 57303 ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 57309 (nginx)
Tasks: 2
Memory: 968.0K
CGroup: /system.slice/nginx.service
├─57309 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
└─57310 nginx: worker process
5月 09 11:26:32 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
5月 09 11:26:32 localhost.localdomain nginx[57303]: nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
5月 09 11:26:32 localhost.localdomain nginx[57303]: nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
5月 09 11:26:32 localhost.localdomain systemd[1]: Started nginx - high performance web server.
相关文章:

【Linux之升华篇】Linux内核锁、用户模式与内核模式、用户进程通讯方式
alloc_pages(gfp_mask, order),_ _get_free_pages(gfp_mask, order)等。字符设备描述符 struct cdev,cdev_alloc()用于动态的分配 cdev 描述符,cdev_add()用于注。外,还支持语义符合 Posix.1 标准的信号函数 sigaction(实际上,该函数是基于 BSD 的,BSD。从最初的原子操作,到后来的信号量,从。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的。

Ubuntu下安装和配置Redis
找到 /ect/redis/redis.conf 文件修改如下:注释掉 127.0.0.1 ,如果不需要远程连接redis则不需要这个操作。使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG。默认情况下,Redis服务器不允许远程访问,只允许本机访问,所以我们需要设置打开远程访问的功能。执行sudo apt-get install redis-server 安装命令。查看 redis 是否启动,重新打开一个窗口。停止/启动/重启redis。

linux常用操作指令—— 查看磁盘、内存使用情况(df、du、free、top)
显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。当文件系统也确定删除了该文件后,这时候du与df就一致了。实例4:显示目前磁盘空间和使用情况 (最常用)top:“实时查看” ,按。退出 (实时动态显示)

Linux下netstat命令详解&&netstat -anp | grep 讲解
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

Linux命令——根据端口号查进程
查出的数据第二列(16615)是elasticsearch的进程号。通常我们会根据端口号查进程号,或者通过进程号查端口号。linux环境下,我们常常会查询进程号pid。最常用ps -ef |grep xx。根据端口port查进程。根据端口port查进程。根据进程pid查端口。根据进程pid查端口。

Linux搜索文件&搜索文件名&替换文件内容
locate是Linux系统提供的一种快速检索全局文件的系统命令,它并不是真的去检索所以系统目录,而是检索一个数据库文件locatedb(Ubuntu系置/var/cache/locate/locatedb),该数据库文件包含了系统所有文件的路径索引信息,所以查找速度很快。time结尾的选项,其单位为天,min结尾的选项其单位为分钟,这些选项的值都为一个正负整数, 如+7,表示,7天以前被访问过的文件,-7表示7天以内被访问过的文件,7表示恰好7天前被访问的文件。:快速返回某个指定命令的位置信息。

[Ubuntu 22.04] Docker安装及使用
容器的生命周期由用户控制,用户可以选择手动删除容器或让其保留在系统中以供之后使用。选项允许你在容器内部创建一个交互式的终端会话,使你可以像在本地终端一样与容器进行交互。你可以在容器内执行命令,查看输出并输入命令。镜像拉取完成后,可以使用以下命令创建并启动一个基于 Ubuntu 20.04 镜像的容器。列出所有正在运行的容器,并显示它们的容器ID、镜像、命令、创建时间、状态等信息。以下命令可以中止容器,改命令将向容器发送一个停止信号,使其正常停止并退出。这将显示所有容器的列表,包括正在运行的和已停止的容器。

配置nginx+keepalived高可用代理数据库ip端口
需求:配置nginx+keepalived高可用反向代理数据库ip端口(数据库服务器无法增加新SCAN IP或者需要隐藏数据库IP的情况下适用)本机ip为:192.168.20.10和192.168.20.11。2.任意节点关机或重启系统,浮动ip也会自动漂移到另外节点。1.任意节点停nginx:浮动ip会自动漂移到另外节点。安装依赖包和nginx和keepalived。浮动IP为:192.168.20.20。配置keepalived.conf。两台centos7.9。

C程序的内存空间布局(栈、堆、数据区、常量区、代码区)
较详细的介绍了栈、堆、数据区、常量区、代码区

给服务器开通telnet的流程
但一些特殊场景下,比如要升级ssh,ssh不能用时,需要使用telnet,用过要关闭此服务。需要首先安装,如果telnet-server服务在xinetd之前安装了,要先删除telnet-server,再安装xinetd。安装顺序:xinetd--》telnet--》telnet-server。安装顺序:xinetd--》telnet--》telnet-server。2、卸载rpm包(如果已经安装了,又不清楚顺序,可以都卸载后统一安装)注意:telnet-server服务启动依赖xinetd服务,

如何在Nginx中配置防盗链?
防盗链是一种防止网站资源被非法下载的技术。当用户尝试直接访问一个受保护的资源时,服务器会返回一个403 Forbidden错误,提示用户该资源受到保护,不能直接访问。这样可以避免用户通过搜索引擎或其他方式获取到未经授权的资源。通过以上步骤,我们可以在Linux系统中的Nginx Web服务器中使用Shell脚本实现防盗链的配置。这种方法可以有效地保护网站资源不被非法下载,提高用户体验,同时防止恶意攻击。在实际项目中,我们可以根据实际需求灵活配置受保护资源的URL和处理方式。

使用DockerFile构建镜像与镜像上传
首先Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像。

Centos系统上安装PostgreSQL和常用PostgreSQL功能
PostgreSQL安装成功之后,会默认创建一个名为postgres的Linux用户,初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,相当于MySQL中默认的名为mysql数据库。权限代码:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE、USAGE。为了方便我们使用postgres账号进行管理,我们可以修改该账号的密码。

linux切换root用户su - root和su root的区别
通过tty客户端登陆的shell就是login shell,通过在图形界面使用ctrl+shift+t的方式新建的shell是no login shell。登录的流程,会执行 /etc/profile,/etc/profile.d/下定义的*.sh都会执行。su - root,产生一个登录shell去执行后面的指令。no login shell 读取的文件和顺序为:/etc/bashrc和~/.bashrc。su root,产生一个非登录交互shell,非登录交互shell,只执行用户目录下。

轻松管理Linux磁盘空间命令:df
通过使用--output选项,可以自定义df命令的输出格式,选择显示的列以及它们的顺序。这对于筛选特定信息以便进一步处理非常有用。本文我们介绍了Linux系统上的df命令,包括基本用法、进阶用法、实际案例和场景应用,以及一些实用技巧和注意事项。df命令是系统管理中的一个重要工具,能够帮助用户有效管理磁盘空间,预防和解决潜在问题。在实际使用中,请根据具体情况选择合适的df命令选项和参数,并结合其他命令,以获取更全面的系统信息。

Linux grep命令教程:强大的文本搜索工具(附案例详解和注意事项)
grep(Global Regular Expression Print)命令用来在文件中查找包含或者不包含某个字符串的行,它是强大的文本搜索工具,并可以使用正则表达式进行搜索。当你需要在文件或者多个文件中搜寻特定信息时,grep就显得无比重要啦。

保持Python程序在Linux上持续运行的几种方法
主要是用来定时执行任务的,但你也可以利用它来监控你的Python脚本是否正在运行,并在需要时重新启动它。是一个非常实用的命令,它可以让你的Python脚本在你退出shell后继续运行。总结起来,根据你的具体需求和环境,你可以选择以上任何一种方法来保持Python程序在Linux上的持续运行。使用这些工具,你可以随时断开SSH连接,而不用担心脚本会停止运行。通过这种方式,你可以安全地关闭终端,而脚本会继续在后台执行。这样,你的Python脚本就会作为系统服务运行,并且会在系统启动时自动启动。

linux环境中一次启动多个jar包,并且设置脚本开机自启
我们在通过jar启动项目时,有时候会比较多,启动会比较麻烦,需要编写shell脚本启动,将启动脚本存放在需要启动的jar包路径下。(文档存放在 /home/process_parent )PORTS 端口号,多个用空格隔开MODULES 模块,多个用空格隔开MODULE_NAMES 模块名称,多个用空格隔开。

windows11通过虚拟机安装Ubuntu20.04
window11通过虚拟机VMware Workstation 17 Player安装ubuntu20.04

开发版ubuntu系统上如何进行开机自启(四种方法一览)
如果省略该字段,则 systemd 将默认将当前服务的启动顺序设置为与其他服务无关,即在启动过程中没有任何依赖性关系,服务的启动顺序由系统自行决定。【ExecStart】 关键字段,服务启动命令,指定服务启动时需要执行的命令或脚本【WantedBy】用于指定服务的自动启动级别,在 Linux 系统中,多用户模式是指允许多个用户同时登录并使用系统资源的模式,与之相对的是单用户模式,只有一个用户可以登录并使用系统资源。保存文件的方法根据所使用的编辑器而有所不同,通常是按下特定的键组合,然后选择保存并退出。

你了解计算机网络的发展历史吗?
计算机网络是指将一群具有独立功能的计算机通过被互联起来的,在通信软件的支持下,实现的系统。计算机网络是计算机技术与通信技术紧密结合的产物,两者的迅速发展渗透形成了计算机网络技术。简而言之呢,计算机网络就是实现两台计算机相互沟通的介质。

Linux安装MongoDB教程
将解压后的 mongodb-linux-x86_64-rhel70-4.2.23 中的所有文件全部移动到 /usr/local/mongodb 中 :注意/*是所有子文件。也可以不用设置环境变量进行启动,但是不设置环境变量启动的话要每次启动写很多启动参数,比较麻烦,所以做好配置环境变量。在 mongodb 下创建 data 和 logs 目录,以及日志文件mongodb.log。在 /usr/local 目录中创建 mongodb 文件夹。启动 MongoDB(-conf 使用配置文件方式启动)

Linux之后台执行命令:nohup和&的使用
如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。command>out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到out.file文件中。作业在后台运行的时候,可以把输出重定向到某个文件中,相当于一个日志文件,记录运行过程中的输出。将sh test.sh任务放到后台,但是依然可以使用标准输入,

CentOS 7 设置 Jar包、MinIO、Nginx 开机自启动
根据需要,自己修改 Description 和 ExecStart 的内容即可(ExecStart后面的java命令需要全路径)ExecStart 服务运行执行的命令,放上面创建的脚本位置。[Install] 服务安装的相关设置,可设置为多用户。如果用 yum install 命令安装的,如果使用源码手动编译的则需要手动创建。文件,xxx 就是自定义的服务名称。After:设置在某个服务启动后启动。Description:服务的描述。可以使用这个命令来查看服务启动日志。里面的环境变量是必须的,将。

Linux系统中Java new Date()的时间和系统时间不一致
出现问题:new Date(),的时间和当前时间不一样,发现差了8小时,看到8小时就应该明白了,时区的问题。

linux中&和&&,|和||及分号(;)的用法
在linux中,我们经常会用到&和&&,|和||及分号,但是好多人对其会混淆,不明白其中的意思,今天为大家讲解一下&和&&,|和||及分号(;)各自的说明和用法。

Nginx实战 | 高性能HTTP和反向代理神器Nginx前世今生,以及它的“繁花之境”
Nginx 的历史可以追溯到 1990 年代末期,当时互联网开始迅速发展,传统的 HTTP 服务器如 Apache 开始显得力不从心,无法满足日益增长的访问量和并发请求。Nginx 的设计理念是追求极高的性能和稳定性,同时还具有较低的内存消耗和资源占用,这使得它能够处理大量并发请求,非常适合于需要处理高负载的服务器环境。通过这些测试和优化方法,你可以了解 Nginx 的性能瓶颈,并采取相应的措施来提高其性能。Nginx 的测试和优化可以通过多种方式进行,包括负载测试、性能测试、配置优化和代码级优化。

Vim 粘贴内容时全变成注释的问题
在使用vim粘贴代码时,会出现注释代码后面的代码全被注释的情况。在paste模式下进行复制粘贴就变得很正常了。

Linux系统之ifconfig命令的基本使用
ifconfig是Linux中常用的网络配置工具之一,用于配置和显示网络接口的具体状况。

如何通过Python将各种数据写入到Excel工作表
本文中将介绍如何使用Python写入数据到Excel表格,包括文本、数组(List)、XML和CSV数据,提供更高效和准确的Excel表格数据写入方案,从而简化数据处理流程并节省宝贵的时间和精力。