我用 Python 和 Flask 编写了一个服务器应用程序,现在我想在我设置的虚拟机上启动并运行它。因此,我非常感谢两个方面的指导。
如何设置服务器以使其永久运行,并且其他计算机可以访问它?这些计算机可以在同一个网络中,所以我不必担心域名或任何东西。我只是在寻找能够访问它的多个设备。我目前能够在我的本地机器上运行服务器,一切正常。
我远程设置了我的虚拟 linux 机器,所以我通过 SSH 连接到它并从命令行执行所有操作,但对于如何从命令行执行上述操作我有点迷茫。
非常感谢任何指导/帮助!我所做的网络搜索并没有为我指明正确的方向。如果我的任何术语不正确,我深表歉意(如果是这样,请随时纠正我,以便我学习!)。谢谢!
最佳答案
在 Ubuntu 上使用 systemd,/etc/systemd/system
,进行简单设置(虽然可能不适合生产设置)。
我有时会为正在制作原型(prototype)的 Python Flask 应用程序执行此操作。首先,将您的应用程序代码放在 /opt/my-app
中。我通常只是 cd/opt
和 git clone
那里的一个 repo。然后,创建一个名为 /etc/systemd/system/my-app.service
的文件。在该文件中,添加以下内容:
[Unit]
Description=My App daemon
After=network.target postgresql.service
Wants=postgresql.service
[Service]
EnvironmentFile=/etc/sysconfig/my-app
WorkingDirectory=/opt/my-app/ # <- this is where your app lives
User=root
Group=root
Type=simple
ExecStart=/usr/bin/python server.py # <- this starts your app
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
接下来,将您拥有的任何环境变量粘贴到名为 /etc/sysconfig/my-app
的文件中,例如:
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=postgres
然后你可以这样做:
service my-app start
service my-app stop
service my-app restart
然后您可以点击在服务器 IP 和端口上运行的应用程序(就像您运行 python app.py
或 python server.py
一样。要检查守护进程的日志,如果它似乎没有成功,你可以运行:
journalctl -u my-app -e
在生产中,我不确定这是最好的设置,可能最好研究一下 ngnix 之类的东西。但我一直为原型(prototype)这样做,这非常棒。
关于python - 如何仅通过命令行在虚拟机中启动并运行服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47111880/