CentOS设置Nginx开机自启

229 阅读2分钟

Nginx开机自启

  1. 进入到 /lib/systemd/system目录

     cd /lib/systemd/system
    
  2. 创建nginx.service文件

     vim nginx.service
    
  3. 输入内容

     [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安装的目录

  4. 重新加载配置文件

    systemctl daemon-reload
    
  5. 加入开机自启

     systemctl enable nginx
    
  1. 查看是否是开机自启

     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

1710242619645.png

翻译如下:

如果你认为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就成功了