どのようにpythonプロジェクトをlinuxサーバーに展開しますか?


最近Pythonで外部挂けを书きましたが、Linux环境のサーバーに配备する必要があります。これは前の现地开発の际にvirtualnvを使っていたので、この仮想环境を使うメリットがあります。プロジェクトに依存するライブラリは全体的なものではなく、现在のプロジェクトのディレクトリの下で有効です。ですから、簡単にenv全体をサーバーにコピーして実行することはできません。余分な仕事が必要です。
一般的にはそれぞれのプロジェクトがそれぞれのライブラリに依存しています。一部のライブラリのバージョンが違って衝突を引き起こすことがあります。この問題を解決するためには、仮想環境を使用する必要があります。Pythonは各プロジェクトディレクトリの下でそれぞれの仮想環境を作成できます。同じオペレーティングシステムの間でも、すばやくプロジェクトをコピーして動作することができます。
Python 3で作成したプロジェクトを使っていますが、CentOS 7のサーバーにはPython 2しかないので、Python 3の環境をインストールしておく必要があります。
第一歩:Pythoon 3環境のインストール
1.まずコンパイル環境をインストールする(後はpython公式サイトからPython 3のソースコードを取得して自分でコンパイルするpython)yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make2.公式サイトからpython 3のソースコードをダウンロードします。wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz3.順次解凍を実行します。解凍後のディレクトリ>コンパイルしてインストールします。
tar-xvJf Pythoon-3.25.tar.xz
cd Pythoon-36.2
./configur prefix=/usr/local/python 3
make&make install
4.インストールが完了し、ソフト接続を作成します。
ln-s/usr/local/python 3/bin/python 3/usr/python
皰執行命令
python-V〓〓はpython 3のバージョンを見ます。
皰執行命令
python 2-V〓〓はpython 2のバージョンを見ます。
5.以降の作業は、CentOSのyumコマンドは、持参したpython 2のバージョンを使用する必要がありますので、二つの修正が必要です。
vim/usr/bin/yum
vim/usr/libexec/urlgraber-ext-down
この二つの書類の山西を!/usr/bin/pythonを〓に修正します!/usr/bin/python 2
第二ステップ:ローカル開発環境の依存項目をリストファイルを作成する
1.現地の開発環境において、envで実行する:pip3 freeze >requirements.txtリストファイルは現在のプロジェクトディレクトリに生成されます。内容は以下の通りです。
certifi==2018.4.16
chardet==3.0.4
idna==2.7
requests==2.9.1
urllib 3==1.23
生成したファイルをlinuxサーバにアップロードします。
2.Pythonプロジェクトをサーバにアップロードする
ステップ3:linuxサーバでプロジェクトの仮想環境を作成し、プロジェクトのインストールに必要な依存性
1.pip 3のディレクトリ/usr/local/python/binに切り替えて、以下のコマンドを実行します。
铅仮想環境の取り付け
pip 3 install virtualnv
ハ作成仮想環境ENV
virtual lenv ENV
ハ仮想環境のあるディレクトリに切り替え
cd ENV
ハ仮想環境を有効にする
source./bin/activate
铅据付依存リストの倉庫
pip 3 install-r requirements.txt
铅現在の仮想環境にインストールされている依存ライブラリを一覧表示します。
pip 3 list
ステップ4:カスタムシステムサービスの追加(重要)
璜のような命令は、ssh端末が終了すると、pythonプロセスも殺されます。
python xx.py&
pythonプログラムはバックグラウンドで実行できるようにカスタマイズされたシステムサービスを作成する必要があります。
1.システムサービスの作成vim /usr/lib/systemd/system/robot.service内容は以下の通りです
[ユニット]
Description=robot
After=network.target
[サービス]
Type=forking
ExecStart=/usr/local/python 3/bin/ENV/bin/python/usr/local/python 3/bin/ENV/p.3 py&
Private Tmp=true
[Install]
WantendBy=multi-user.target
ExecStartはサービス開始時に実行するコマンドです。相対パスは使用できません。必ずフルパスでお願いします。
ここでは命令を任意のshファイルに書いてもいいです。ここにshファイルの全パスを書いてもいいです。
2.カスタムシステムサービスを有効にするsystemctl enable robot3.サービスの開始systemctl start robotプロセスを確認して、サービスの開始を確認してもいいです。ps aux|grep robot終わり!
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。