› NGINX
› NGINX Trac
› 3rd Party Modules
› Security Advisories
› CHANGES
› OpenResty
› ngx_lua
› Tengine
在线学习资源
› NGINX 开发从入门到精通
NGINX Modules
› ngx_echo
RobertYang
V2EX  ›  NGINX

Systemctl 配置 Nginx 自启动显示超时

  •  
  •   RobertYang · Aug 4, 2018 · 7930 views
    This topic created in 3018 days ago, the information mentioned may be changed or developed.

    nginx.service 是这样编写的

        [Unit]
        Description=A high performance web server and a reverse proxy server
        After=network.target network-online.target nss-lookup.target
    
        [Service]
        Type=forking
        PIDFile=/usr/local/nginx/logs/nginx.pid
        PrivateDevices=yes
        SyslogLevel=err
    
        ExecStart=/usr/local/nginx/sbin/nginx -g 'pid /usr/local/nginx/logs/nginx.pid; error_log stderr;'
        ExecReload=/usr/local/nginx/sbin/nginx -s reload
        KillMode=mixed
    
        [Install]
        WantedBy=multi-user.target
    

    开机后 Nginx 没有正确启动

        $ sudo systemctl status nginx
        * nginx.service - A high performance web server and a reverse proxy server
           Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
           Active: failed (Result: timeout) since Sat 2018-08-04 16:26:14 CST; 10s ago
    
        Aug 04 16:24:44 isthnew systemd[1]: Starting A high performance web server and a reverse proxy server...
        Aug 04 16:26:14 isthnew systemd[1]: nginx.service: Start operation timed out. Terminating.
        Aug 04 16:26:14 isthnew systemd[1]: nginx.service: Failed with result 'timeout'.
        Aug 04 16:26:14 isthnew systemd[1]: Failed to start A high performance web server and a reverse proxy server.
    

    系统是 Arch,nginx 版本 1.15.2,貌似很早之前就出现过了,但是没注意,开机后使用 sudo systemctl start nginx 来启动 nginx 一问题都没有。

    Supplement 1  ·  Aug 5, 2018
    玄学问题,把相同的配置文件以及相同编译参数的 nginx 放在另外一台 ubuntu 服务器上面一点问题没有。估计是在 arch 上面 nginx 启动的太快了什么依赖的服务还没加载完成。
    28 replies  •  2018-08-05 21:43:36 +08:00
    wqyyy
    wqyyy
    Aug 4, 2018 via Android
    1
    仅作对比:

    ```
    [Unit]
    Description=A high performance web server and a reverse proxy server
    Documentation=man:nginx(8)
    After=network.target

    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;'
    ExecStart=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;'
    ExecReload=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload
    ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /usr/local/nginx/logs/nginx.pid
    TimeoutStopSec=5
    KillMode=mixed

    [Install]
    WantedBy=multi-user.target
    ```
    MeteorCat
    MeteorCat
    Aug 4, 2018 via Android
    2
    手动编译,手动写 systemctl ?
    RobertYang
    RobertYang
    OP
    Aug 4, 2018 via Android
    3
    @MeteorCat 是的
    RobertYang
    RobertYang
    OP
    Aug 4, 2018 via Android
    4
    @wqyyy 替换了你写的这个也启动不了,systemd 显示启动时间超过 1min30s,然后显示错误
    cominghome
    cominghome
    Aug 4, 2018
    5
    看看 nignx error-log 和 system message,或者直接启动 nginx 试试排除 nginx 配置原因,nginx.service 就那两行,不一定是 systemctl 的问题
    Hardrain
    Hardrain
    Aug 4, 2018
    6
    journalctl -xe -u nginx.service 的输出?
    wqyyy
    wqyyy
    Aug 4, 2018 via Android
    7
    @RobertYang 这样子的话我也不知道了,这个是从 Ubuntu 源里拆出来之后略作修改的。
    RobertYang
    RobertYang
    OP
    Aug 4, 2018 via Android
    8
    @cominghome @Hardrain nginx 日志没有记录到错误,journalctl 还是提示启动超时的那两行
    RobertYang
    RobertYang
    OP
    Aug 4, 2018 via Android
    10
    @iUnix 依然不工作,放弃了
    iUnix
    iUnix
    Aug 4, 2018 via Android
    11
    @RobertYang 手动 ok,我猜它启动时某些服务还没 ready,问题应该在 after 那里。
    iUnix
    iUnix
    Aug 4, 2018 via Android
    12
    @RobertYang 把启动顺序往后调看看是不是这个问题。
    henryshen233
    henryshen233
    Aug 4, 2018 via iPhone
    13
    @iUnix 有些时候 ssh 上去就开了,默认开机不会打开,这种是什么原因呢
    iUnix
    iUnix
    Aug 4, 2018 via Android
    14
    @henryshen233 有没有日志? systemctl 或者 nginx
    RobertYang
    RobertYang
    OP
    Aug 5, 2018
    15
    @iUnix systemctl 日志就是 nginx.service: Start operation timed out. Terminating. nginx 未记录到日志。
    RobertYang
    RobertYang
    OP
    Aug 5, 2018
    16
    @iUnix 刚刚看错楼了,我等下调到 after=php-fpm 后面试试
    RobertYang
    RobertYang
    OP
    Aug 5, 2018 via Android
    17
    @iUnix 调到 php-fpm 之后启动时间依然超过 1 分 30 秒然后报错
    edsion996
    edsion996
    Aug 5, 2018
    18
    好像权限问题~我以前也遇到过
    300
    300
    Aug 5, 2018 via Android
    19
    ```
    [Unit]
    Description=nginx - high performance web server
    Documentation=http://nginx.org/en/docs/
    After=network-online.target remote-fs.target nss-lookup.target
    Wants=network-online.target

    [Service]
    Type=forking
    PIDFile=/var/run/nginx.pid
    ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID

    [Install]
    WantedBy=multi-user.target
    ```
    Nginx 默认的文件
    Nginx 是手动编译的,用这个在 CentOS 和 Ubuntu 上都正常启动
    RobertYang
    RobertYang
    OP
    Aug 5, 2018 via Android
    20
    @winterbells 同样不行,有点玄学了
    300
    300
    Aug 5, 2018 via Android
    21
    @RobertYang 那就不知道了 Nginx 文件权限多少呢 chmod +x ?
    RobertYang
    RobertYang
    OP
    Aug 5, 2018 via Android
    22
    @winterbells 能手动 systemctl start nginx 所以跟配置没关系吧
    henryshen233
    henryshen233
    Aug 5, 2018
    23
    @iUnix 以前的事情啦,有些进程就是这样,不过我现在没弄了😄
    Hardrain
    Hardrain
    Aug 5, 2018
    24
    @RobertYang 你的意思是"Nginx 开机后不能自动由 systemd 启动,但可以手动执行 systemctl start nginx.service 来启动"是吗?

    检查一下 /usr/lib/tmpfiles.d 目录,有无 nginx 相关的文件。
    可能 nginx 要在一个 tmpfs 的挂载点的某个子目录下创建 lock 或 pidfile,而这个子目录重启后没被创建。
    需要用 tmpfiles 解决。syntax 参考该目录下其他文件即可。
    RobertYang
    RobertYang
    OP
    Aug 5, 2018 via Android
    25
    @Hardrain 应该不是这个原因,保存 pidfile 的目录早就已经创建在 /usr/local/nginx 中了
    hcymk2
    hcymk2
    Aug 5, 2018
    26
    systemd.log_level=debug 再看下日志。
    RobertYang
    RobertYang
    OP
    Aug 5, 2018
    28
    @alvinbone88 肯定不是这个原因,我都是这样写的`listen 80;`

    @hcymk2 不纠结了,上面也没什么重要的东西,重装了下,主要是上次腾讯云母机宕机重启,nginx 没起来博客挂了半天
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1599 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 09:24 · PVG 17:24 · LAX 01:24 · JFK 04:24
    ♥ Do have faith in what you're doing.