[Seek Help] 有root权限的命令怎么在autostart下运行,请各路大神帮下谢谢!
Tofloor
poster avatar
dgmenghuan
deepin
2022-05-29 06:20
Author

我用python+uwsgi+nginx做了一个小型 的数据库方面的网站,但每次都需要手工启动uwsgi和nginx,uwsgi是用conda install uwsgi安装的,这个不用root权限,但是nginx是下载的软件安装的,它就需要root权限,烦请各位大神教我一下怎么实现这两个软件开机后自动运行。

aa.sh的内容: uwsgi --ini /home/mycomputer/mypro/mypro.ini

bb.sh的内容:sudo 1234567|/home/mycomputer/nginx/sbin/./nginx

求大神帮忙,浪费N多脑细胞了,新手求助,望赐教,谢谢

Reply Favorite View the author
All Replies
忘记、过去
Moderator
2022-05-29 06:27
#1

写一个 sh 脚本放在固定位置(文件需要可执行权限)。

里面需要 root 的命令改成
echo '密码' | sudo -S xxxxxxxx
这样子执行就好,除了密码明文有点危险之外......

然后在 ~/.config/autostart 里面见一个 xxxx.desktop,文件格式如下:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Exec=脚本绝对路径

然后注销应该就能看到效果了。

Reply View the author
enforcee
deepin
2022-05-29 06:44
#2

nginx应该是可以用systemd启动的

设置自启systemctl enable nginx

直接运行systemctl start nginx

如果没有的话楼主自己写一个service文件

Reply View the author
deepinuser17
deepin
2022-05-29 10:03
#3

nginx安装之后,启动文件已经默认安装了。只需设定机器启动时自动运行就可以了。 命令如下:

sudo systemctl enable nginx

 

自动运行wsgi的启动文件需要自己创建。 步骤如下:

1. 创建一个文件/etc/systemd/system/wsgi.service

sudo vi /etc/systemd/system/wsgi.service

 

wsgi.service 文件内容如下:

[Unit]
Description=Run wsgi service as user bob
DefaultDependencies=no
After=network.target

[Service]
Type=simple
User=bob
Group=users
ExecStart=/home/bob/bin/startup_script.sh
TimeoutStartSec=0
RemainAfterExit=yes

[Install]
WantedBy=default.target

调整用户,组名, 脚本路径。

 

2. 设置这个服务开机自动运行。 命令如下:

sudo systemctl daemon-reload
sudo systemctl enable wsgi.service

 

3. 手动运行wsgi服务,验证这个服务可以正常启动。

sudo systemctl start wsgi
systemctl status wsgi

 

4. 验证了手动运行wsgi以后,重启机器,验证wsgi可以在开机以后自动运行。

Reply View the author
charm
deepin
2022-05-29 19:40
#4

好家伙,我刚搞定。
deepinuser17写得挺好的,不过uwsgi.ini配置可能需要注意下

uid=
gid=
这两个字段用自己的用户名比较好,不用root就好
Reply View the author