python - 如何仅通过命令行在虚拟机中启动并运行服务器?

标签 python linux server virtual-machine

我用 Python 和 Flask 编写了一个服务器应用程序,现在我想在我设置的虚拟机上启动并运行它。因此,我非常感谢两个方面的指导。

  1. 如何设置服务器以使其永久运行,并且其他计算机可以访问它?这些计算机可以在同一个网络中,所以我不必担心域名或任何东西。我只是在寻找能够访问它的多个设备。我目前能够在我的本地机器上运行服务器,一切正常。

  2. 我远程设置了我的虚拟 linux 机器,所以我通过 SSH 连接到它并从命令行执行所有操作,但对于如何从命令行执行上述操作我有点迷茫。

非常感谢任何指导/帮助!我所做的网络搜索并没有为我指明正确的方向。如果我的任何术语不正确,我深表歉意(如果是这样,请随时纠正我,以便我学习!)。谢谢!

最佳答案

在 Ubuntu 上使用 systemd,/etc/systemd/system,进行简单设置(虽然可能不适合生产设置)。

我有时会为正在制作原型(prototype)的 Python Flask 应用程序执行此操作。首先,将您的应用程序代码放在 /opt/my-app 中。我通常只是 cd/optgit 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.pypython server.py 一样。要检查守护进程的日志,如果它似乎没有成功,你可以运行:

journalctl -u my-app -e 

在生产中,我不确定这是最好的设置,可能最好研究一下 ngnix 之类的东西。但我一直为原型(prototype)这样做,这非常棒。

关于python - 如何仅通过命令行在虚拟机中启动并运行服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47111880/

相关文章:

regex - 在 bash 中交换文件中的 2 个单词的最佳方法是什么

java - 如何使用单个Java ServerSocket读取安全的Web请求并处理Web套接字请求?

php - 加密的 Sql 数据在服务器之间传输时是否安全

python - 我无法使用 mysqldb 与 lampp 服务器连接我的 python 程序

python - 为什么 Python 和 Ruby 这么慢,而 Lisp 实现却快?

python - 在 for 循环期间修改可迭代的大小 - 循环是如何确定的?

python - 如何在以下列格式输出的列表中插入列表 : [a, b, c] => [ [c], [b, c], [a, b, c]]

python - 如何使用python监控全局键盘事件?

python - 为什么我不能调整 PNG 文件的亮度级别

linux - 长时间运行的脚本的 Unix 重定向