2017-11-04 4 views
0

私はFlaskを使ってPythonでサーバーアプリケーションを作成しましたが、セットアップした仮想マシンで起動して実行したいと考えています。したがって、私は本当に2つの分野での指導に感謝します。仮想マシンでサーバーを起動してコマンドライン経由で実行するにはどうすればよいですか?

  1. サーバーのセットアップが永久に実行され、他のコンピュータからアクセスできるようにするにはどうすればよいですか。コンピュータは同じネットワークに置くことができるので、私はドメイン名などについて心配する必要はありません。私はそれにアクセスできるように複数のデバイスを探しています。私は現在、私のローカルマシン上でサーバーを実行することができ、すべて正常に動作します。

  2. 私は自分の仮想マシンをリモートでセットアップしていますので、SSHを使ってコマンドラインからすべてを実行しますが、コマンドラインから上記のことをどうやってやるのか分かりません。

ご指導お願いします。私が行ったWeb検索は正しい方向に私を指摘していません。私の専門用語が分からない場合はお詫びします(もしそうなら、教えてくれるように私を修正してください)。ありがとうございました!

答えて

1

Ubuntuでsystemd(/etc/systemd/system)を使用すると、シンプルな設定が可能です(ただし、プロダクション設定には適していない可能性があります)。

私が試作しているPython Flaskアプリでこれを行うことがあります。まず、アプリケーションコードを/opt/my-appに入れます。私は通常ちょうどcd /optgit cloneレポがあります。次に、/etc/systemd/system/my-app.serviceというファイルを作成します。このファイルには、次の行を追加します。そして、あなたが行うことができます

DB_HOST=localhost 
DB_USER=postgres 
DB_PASSWORD=postgres 
DB_NAME=postgres 

[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と呼ば

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のようなものを調べる方が良いでしょう。しかし、私はプロトタイプのためにこれをすべて行い、それはかなり素晴らしいです。

+0

ありがとう、マイク!クイックフォローアップの質問。 AWS-Lambda上で別のアプリケーションを実行している場合、これを直前に実行していたサーバーに接続する方法はありますか?たとえば、AWS-LambdaのFlaskファイルでメソッドのいくつかを呼び出したり、データベースに貢献したいのであれば、それは可能ですか? – agaidis

関連する問題