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

时间:2017-11-04 14:40:21

标签: python linux server virtual-machine

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

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

  2. 我已经远程设置了我的虚拟linux机器,所以我通过SSH进入它并从命令行执行所有操作,但是我对如何从命令行执行上述操作感到有点迷失。

  3. 非常感谢任何指导/帮助!我所做的网络搜索没有指出我正确的方向。如果我的任何术语都没有关闭,我会道歉(如果是的话,请随时纠正我,以便我学习!)。谢谢!

1 个答案:

答案 0 :(得分:1)

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

我有时为Python Flask应用程序执行此操作,即我正在进行原型设计。首先,将您的应用程序代码放在/opt/my-app中。我通常只需要cd /optgit clone个回购。然后,创建一个名为/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一样。要查看守护进程的日志,如果它没有&#39;似乎工作了,你可以运行:

journalctl -u my-app -e 

在制作中,我不确定这是最好的设置,可能更好地研究像ngnix这样的东西。但是我一直都是为原型做这件事而且非常棒。