2017-09-22 49 views
0

我使用的是Ubuntu 16,我想启动该服务。服务应该在系统启动时自动启动。该服务启动django服务器。如何在Ubuntu启动时自动启动服务?

[Unit] 
Description=service 

[Install] 
WantedBy=multi-user.target 

[Service] 
ExecStart=/usr/bin/python /home/ubuntu/wiki/Backend/manage.py python runserver 0.0.0.0:8000 
Type=simple 

在控制台错误:

● wiki.service - service 

Loaded: loaded (/etc/systemd/system/wiki.service; enabled; vendor preset: enabled) 

Active: failed (Result: exit-code) since Fri 2017-09-22 11:10:44 UTC; 3min 36s ago 

Main PID: 1144 (code=exited, status=1/FAILURE) 

systemd[1]:Started service. 

python[1144]:Traceback (most recent call last): 

python[1144]:File "/home/ubuntu/wiki/Backend/manage.py", line 17, in <module> 

python[1144]: ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment? 

systemd[1]: wiki.service: Main process exited, code=exited, status=1/FAILURE 

systemd[1]: wiki.service: Unit entered failed state. 

systemd[1]: wiki.service: Failed with result 'exit-code'. 
+0

你有任何virtualenv? – itzMEonTV

+0

@itzMEonTV,是 – user233428

+0

因此,不要使用'/ usr/bin/python',尝试'/ path/to/env/bin/python' – itzMEonTV

回答

0

默认情况下,所有的systemd服务以root身份运行。因此,它在启动服务期间将root用户的环境用于所有内容。这可能是这里的问题。这可能是django的东西需要像你一样运行。要检查这一点,你可以让systemd以特定用户身份启动服务。进行以下更改服务文件:

[service] 
User=<whatever your username is> 
ExecStart=/usr/bin/python /home/ubuntu/wiki/Backend/manage.py python runserver 0.0.0.0:8000 
Type=simple 

看看是否能解决问题

服务节还可以有一个组的参数。包括这一点可能不会受到伤害。