请教 Django runserver 开机自启动的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hwhtj
V2EX    Django

请教 Django runserver 开机自启动的问题

  •  
  •   hwhtj
    sometech 2024-07-23 09:39:05 +08:00 3376 次点击
    这是一个创建于 443 天前的主题,其中的信息可能已经有所发展或是发生改变。

    /etc/systemd/system/rc-local.service 文件内容:

     Description=/etc/rc.local Compatibility COnditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target 

    /etc/rc.local 文件内容

    #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. echo "看到这行字,说明添加自启动脚本成功。" > /home/some/Qexo/test.log a=`lsof -i:8000 | wc -l` if [ "$a" -eq "0" ];then echo "start nohup django:8000" >> /home/some/Qexo/test.log nohup /usr/bin/python3 /home/some/Qexo/manage.py runserver 0.0.0.0:8000 > cmdb.log 2>&1 & else echo "8000 端口被占用" >> /home/some/Qexo/test.log fi #source/home/some/Qexo/ #nohup /usr/bin/python3 /home/some/Qexo/manage.py runserver 0.0.0.0:8000 > cmdb.log 2>&1 & echo "看到这行字,说明 django.sh 执行过。" >> /home/some/Qexo/test.log exit 0 

    重启后,sudo systemctl status rc-local,报如下错误

     rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; preset: enabled) Drop-In: /usr/lib/systemd/system/rc-local.service.d └─debian.conf Active: failed (Result: exit-code) since Tue 2024-07-23 09:22:23 CST; 15min ago Duration: 236ms Process: 3617 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS) Main PID: 3621 (code=exited, status=1/FAILURE) CPU: 344ms 7 月 23 09:22:23 some-Ubuntu23 systemd[1]: Starting rc-local.service - /etc/rc.local Compatibility... 7 月 23 09:22:23 some-Ubuntu23 systemd[1]: Started rc-local.service - /etc/rc.local Compatibility. 7 月 23 09:22:23 some-Ubuntu23 systemd[1]: rc-local.service: Main process exited, code=exited, status=1/FAILURE 7 月 23 09:22:23 some-Ubuntu23 systemd[1]: rc-local.service: Failed with result 'exit-code'. 
    14 条回复    2024-09-10 14:48:25 +08:00
    byaiu
        1
    byaiu  
       2024-07-23 09:42:39 +08:00
    猜测是 pythonpath 的问题
    依赖是不是全局装的?
    而且不是有 log 么,看看 log 就好了
    Vegetable
        2
    Vegetable  
       2024-07-23 09:44:18 +08:00
    一方面,你至少把你的 test.log 放出来,免得大家肉眼检查脑内运行帮你看问题。
    另一方面,你这个需求其实很适合将服务放在 dcoker 里边自动启动,全是好处。
    lingeo
        3
    lingeo  
       2024-07-23 09:46:09 +08:00
    1.直接 bash 运行 rc.local 脚本试一下有没有报错。
    2.推荐你使用 supervisor 管理进程。
    Spute
        4
    Spute  
       2024-07-23 09:53:16 +08:00
    1 、切到项目目录,以前台模式直接执行/usr/bin/python3 /home/some/Qexo/manage.py runserver 0.0.0.0:8000 ,进行 debug
    2 、建议使用 docker 部署这种 web 服务器
    dolphintwo
        5
    dolphintwo  
       2024-07-23 10:31:03 +08:00
    写一个 django 的 service 再 enable 它
    lzZzeucJri6FcR0o
        6
    lzZzeucJri6FcR0o  
       2024-07-23 10:50:22 +08:00
    人才
    hwhtj
        7
    hwhtj  
    OP
       2024-07-23 11:08:31 +08:00
    我登录 的不是 root 用户。
    直接 sudo bash 运行 rc.local 脚本 成功,
    直接运行/usr/bin/python3 /home/some/Qexo/manage.py runserver 0.0.0.0:8000 ,也会成功,但就是把命令放在 rc.local 里面,再由 systemctl 调用就不成功
    说到最后,我就是想在 ubuntu 启动的时候自动运行/usr/bin/python3 /home/some/Qexo/manage.py runserver 0.0.0.0:8000 --noreload 这么一句脚本,可试了很多方法都不行
    hwhtj
        8
    hwhtj  
    OP
       2024-07-23 11:23:38 +08:00
    hwhtj
        9
    hwhtj  
    OP
       2024-07-23 11:25:37 +08:00
    pililink
        10
    pililink  
       2024-07-23 13:47:04 +08:00
    推荐你使用 supervisor 管理进程
    skyrim61
        11
    skyrim61  
       2024-07-24 08:47:03 +08:00
    使用 gunicorn 部署
    zcybupt2016
        12
    zcybupt2016  
       2024-07-24 14:30:41 +08:00
    建议打 docker + 1 ,省事得多
    elboble
        13
    elboble  
       2024-07-24 14:49:37 +08:00
    supervisor +1 ,或者 unicron ,代拉服务。runserver 是调试用法
    huangzhiyia
        14
    huangzhiyia  
       2024-09-10 14:48:25 +08:00
    分享一个自己生产环境常用的配置

    1.不要用系统自带的 Python 而是转为使用 venv 之类的虚拟环境

    我一个服务器上跑着不同版本的 Python 环境, 直接从 Debian 10 升级到 Debian 12 没有任何问题,如果用系统自带的 python 肯定 GG 思密达了

    2.在服务器项目目录下执行 python -m venv venv 然后 source venv/bin/activate 激活环境后进行初始化之类的操作

    pip install -r requirements.txt
    python manage.py xxxxxxxxxxx

    3. 最后配置 system service


    ```bash
    [Unit]
    Description=edge-system
    After=network.target

    [Service]
    User=admin
    Group=admin
    CPUQuota=50%
    MemoryLimit=1024M
    WorkingDirectory=/usr/local/edgesystem
    Restart=always
    RestartSec=5
    ExecStart=/usr/local/edgesystem/venv/bin/gunicorn conf.wsgi:application --workers 4 --threads 3 -b 127.0.0.1:8001
    [Install]
    WantedBy=multi-user.target
    ```

    4.最终执行

    systemctl --now enable servicename
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2830 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 13:33 PVG 21:33 LAX 06:33 JFK 09:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86