【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