Nginx开机自启
-
进入到 /lib/systemd/system目录
cd /lib/systemd/system -
创建nginx.service文件
vim nginx.service -
输入内容
[Unit] Description=nginx service After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target注意:
文件中的 /usr/local/nginx 是你自己Nginx安装的目录
-
重新加载配置文件
systemctl daemon-reload -
加入开机自启
systemctl enable nginx
-
查看是否是开机自启
systemctl is-enabled nginx显示enabled就代表开启自启
其他命令
```
# 关闭开机自启
systemctl disable nginx
# 关闭Nginx
systemctl stop nginx
# 启动Nginx
systemctl statrt nginx
# 重启Nginx
systemctl reload nginx
# 查看服务状态
systemctl status nginx
```
service文件描述
| 关键字 | 描述 |
| ----------- | ------------------------------------------------------------------------- |
| [Unit]区块 | 启动顺序与依赖关系 |
| Description | 当前服务的简单描述 |
| After | 表示如果`network.target`或`sshd-keygen.service`需要启动 那么`sshd.service`应该在它们之后启动。 |
| [Service]区块 | 启动行为 |
| Type | 启动类型 `ExecStart`字段将以`fork()`方式启动 此时父进程将会退出,子进程将成为主进程 |
| ExecStart | 定义启动进程时执行的命令 |
| ExecReload | 定义重启进程时执行的命令 |
| ExecStop | 定义停止进程时执行的命令 |
| [Install]区块 | 定义如何安装这个配置文件,即怎样做到开机启动 |
| WantedBy | 表示该服务所在的 Target
遇到的问题
在运行启动命令时提示:
[root@localhost ~]# systemctl start nginx
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
说有错误,需要查看错误详情
根据提示输入
# journalctl -xe
翻译如下:
如果你认为nginx应该允许在端口8000 tcp_socket上进行name_bind访问。 然后您应该将此报告为bug。
这是被SELinux给拦截了
同时,也给出了解决方法
您可以生成一个本地策略模块来允许这种访问。 现在可以执行:
ausearch -c 'nginx' --raw | audit2allow -M my-nginx
semodule -X 300 -i my-nginx.pp
执行上部命令相当于是在SELinux中添加安全名单
随后运行启动命令systemctl start nginx就成功了