baidu了好幾天,折騰了好幾天,終於讓uwsgi能在CentOS8下開機自動啟動Django網站了
網上說的:
/etc/init.d/???.sh
chkconfig --add ???.sh
這種↑方法,不行!!
沒研究,不知道是不是CentOS8版本原因
今天看了下Systemd的介紹,終於以.service的方式搞定。
解決方案分兩步:
1、新建自己的 xxx.service(位置:/etc/systemd/system)
[Unit] Description=uwsgi-xxx-support After=network.target Before=nginx.service [Service] ExecStart=/usr/sbin/xxx.sh ExecReload=/bin/kill -HUP ( ps -ep | grep uwsgi) Type=forking [Install] WantedBy=multi-user.target ~
注意:: Type 要設置為forking,因為xxx.sh執行完之后是要退出的,繼續運行的是uwsgi進程,默認的simple是啟動不了的,狀態會一直是inactive(dead)
建 好 之 后:$ systemctl enable xxx.service
2、建自己的xxx.sh腳本(我放在/usr/sbin)
#!/bin/sh venvwrap="virtualenvwrapper.sh" python38=`/usr/bin/which python3.8` VIRTUALENVWRAPPER_PYTHON=${python38} export WORKON_HOME=/root/.virtualenvs if [ $? -eq 0 ]; then venvwrap=`/usr/bin/which $venvwrap` source $venvwrap fi workon .xxx source activate uwsgi --ini /webroot/xxx/uwsgi.ini & ~ ~ ~ ~
要設置 VIRTUALENVWRAPPER_PYTHON ,否則source ...../virtualenvwrapper.sh會報錯,報找不到python
要export WORKON_HOME ,否則workon找不到虛擬環境
activate要以source 參數的形式運行,否則報無權限
uwsgi 最后添&,表示后台執行
reboot
不登錄,不執行任何指令
打開瀏覽器,瀏覽網站
SUCCESS!
