【Linux】nginx installation and auto-start with normal user

Ngnix安装简介

-- 1.本文略过具体的安装过程,可以参考如下两个网站进行源码编译或者yum安装。
-- 2.本文介绍通过普通用户(nginx)来使用 systemctl linger-enable 方式配置自动启动nginx
-- 3.普通用户own nginx

## 安装文档 ##

知名网站:

https://www.w3schools.cn/nginx/

Nginx官方文档:

https://nginx.org/en/linux_packages.html#sourcepackages

-- 源码 vs yum安装
目前两者的安装的结果只有 在默认安装的模块上 有细微的区别,通过 nginx -V 可以查看已经安装或者支持的模块,如果yum安装方式无法满足,通过源码编译的方式安装即可。


systemd system与systemd user扫盲

systemd 支持普通用户定义的 unit[s] 开机启动

systemctl --user enable/disable/start/stop/daemon-reload... xxx.timer/xxx.service...
注:

--user 不可省略,因为默认是执行 systemctl [--system],对于系统级 unit[s] 来说,不必显式添加 --system 选项
用户自定义的 unit[s] 可以放置在如下四个位置

/usr/lib/systemd/user:优先级最低,会被高优先级的同名 unit 覆盖
~/.local/share/systemd/user
/etc/systemd/user:全局共享的用户级 unit[s]
~/.config/systemd/user:优先级最高
 

注:

用户级 unit 与系统级 unit 相互独立,不能互相关联或依赖
用户级 unit 运行环境用 default.target,系统级通常用 multi-user.target
即使用户不登陆,其定制的服务依然会启动

自动启动配置

注意:
1.yum安装方式的nginx,默认所有用户都拥有nginx程序的执行权限,因此用户只需要配置 具体的代码路径即可
而源码安装方式,一般而言会对应给其创建独立的账户,如nginx账户。

2. systemctl user 与systemctl system的关系,请查阅此文档
https://wiki.archlinux.org/title/Systemd/User

--- create the user's service folder [ run with normal user -nginx]
mkdir .config/systemd/user/ -p

--- create the nginx like below [ run with normal user -nginx]
[nginx@node1 ~]# cat .config/systemd/user/nginx.service
[Unit]
Description=ngnix.service
After=network.target

[Service]
Type=forking
ExecStart=/nginx/sbin/nginx
ExecReload=/nginx/sbin/nginx reload
ExecStop=/nginx/sbin/nginx quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

--- run with root 【IMPORTANT】
loginctl enable-linger nginx
 
然后记得以 root 身份执行 loginctl enable-linger xxx 以使得 xxx 用户注销后,systemd --user 进程以及它管理的服务并不会退出。


--- enable the auto-start with normal user [ run with normal user -nginx]

$ systemctl --user enable nginx
$ systemctl --user status nginx
$ systemctl --user restart nginx
$ journalctl --user -u nginx

posted @ 2023-06-03 11:32  DBAGPT  阅读(13)  评论(0编辑  收藏  举报