CentOSでNginxとuを使用する

少し前に、フラスコフレームワークを使ってブログプログラムを書いたのですが、書き終えたらサーバーにデプロイしたかったのですが、シャオバイだったので、たくさんの情報をググって、ちょっとした話をしました。設定方法を教えてくれるところもありますが、詳細はなぜこれが一致するのか説明しなかったので、最初から最後までプロセスを要約しました。

サーバーにプロジェクトをデプロイすることは、プロジェクトをこのサーバーで実行し、パブリックネットワーク上のプロジェクトにアクセスできるようにすることです。
したがって、これら2つのポイントを達成したい場合、実行する必要のある作業は次のとおりです。

  1. サーバー環境は、サーバーがプロジェクトを実行するために必要な環境を持つように設定されています
  2. プロジェクトコードをサーバーにアップロードします
  3. インターネットからの要求を処理するようにサーバープロキシを構成します。

1. サーバー環境の構築

最初にシステムの選択についてお話ししましょう。最初にWindowsシステムを除外します。Linuxシステムでは、Ubuntu、Debian、CentOSが非常に優れています。

Ubuntuは強力なソフトウェアソースサポートを備えていますが、デスクトップオペレーティングシステムに適しています。 Debianは安定しており、ハードディスク上の小さなスペースと少量のメモリを占有しますが、開発が速すぎて、セキュリティと安定性はCentOSほど良くありません。そこでCentOSを選びました。 3つの比較については、[http://waynerqiu.com/7/156.html](http://waynerqiu.com/7/156.html)を参照してください。

購入したサーバーはリモート接続で操作する必要があります。ここではパテをお勧めします。 CentOS 6.3 x86_64を使用しています。バージョンが異なれば、ソフトウェアのインストールアドレスも異なる場合があります。

Linuxシステムには、python-Vで表示できる低バージョンのpythonが付属しています。組み込みのpythonバージョンは、yumなどのシステムの一部の機能に関連しています。

フラスコプロジェクトにはpython2.7以降が必要なので、システムにpython2.7またはpython3.5をインストールする必要があります。

Python2.7.5をダウンロードしてインストールします。

# wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2 

現時点でwgetがない場合は、yum installwgetを使用してインストールできます。

# tar jxvf Python-2.7.5.tar.bz2
# cd Python-2.7.5
#. /configure --prefix=/usr/local
# make && make install

現時点では、python2.7.5はシステムが使用するpythonではありません(python -Vと入力すると、下位バージョンのpythonが表示されます)。したがって、システムのデフォルトのpythonがpython2.7.5を指すようにするには、ソフト接続を確立する必要があります。

# mv /usr/bin/python /usr/bin/python2.4.3//あなたのpythonバージョンは異なるかもしれません
# ln -s /usr/local/bin/python27 /usr/bin/python

yumはpython2.7と互換性がないため、新しいバージョンのpythonを使用すると、yumインストールソフトウェアがエラーを報告します。そのため、yumが使用するpythonバージョンを指定する必要があります。

# vi /usr/bin/yum

編集モードに入り、 #!/ usr / bin / python#!/ usr / bin / python2.7.5に変更します

関連する開発キットといくつかのパッケージをインストールします

# yum groupinstall "Development tools"
# yum install zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

pipをインストールする

# wget https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz --no-check-certificate

pipのダウンロードはhttpsプロトコルに基づいているため、 wgeturlの後に --no-check-certificateを追加する必要があります。そうしないと、ダウンロードできません。

ピップを解凍してインストールします

# chmod +x pip-1.3.1.tar.gz 
# tar xzvf pip-1.3.1.tar.gz 
# cd pip-1.3.1 
# python setup.py install 

最後のステップで、setuptoolsがインストールされていないため、エラーが「ImportError:No modulenamedsetuptools」と報告される場合があります。

setuptoolsをインストールします

# wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg  --no-check-certificate 
# chmod +x setuptools-0.6c11-py2.7.egg 
# sh setuptools-0.6c11-py2.7.egg 

この手順では、エラー " zlib not available "も報告される場合があります。#rpm-qa | grep zlibを使用して、使用可能なインストールパッケージを表示し、インストールされていないパッケージをインストールできます(上記のzlibとzlib-develをインストールしました)

sh setuptools-0.6c11-py2.7.eggを再度実行しますが、それでもエラーが報告されますか?同じエラー?

その場合、これはzlibの問題ではなく、pythonの問題であるはずです。コンパイルする前に、python2.7.5を再コンパイルし、Modules /Setup.distファイルを変更する必要があります。現れる

# zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

コメントを削除して、python2.7.5を再コンパイルします

# cd Python-2.7.5
#. /configure --prefix=/usr/local
# make && make install

このようにして、zlibを使用できるようにし、setuptoolsのインストールに戻ってから、pipのインストールに戻ります。今回は、pipが最終的にインストールされます。フラスコ関連のパッケージをグローバル環境にインストールすることも(サーバーに将来プロジェクトが1つだけ含まれる場合)、仮想環境にパッケージをインストールすることもできます。心配しないで、プロジェクトコードをアップロードしてください。

2. プロジェクトコードをサーバーにアップロードします

次に、フラスコプロジェクトコードをサーバーにアップロードできます。flashFXPまたはFileZillaを使用してアップロードできます。

これが次のステップを紹介するためのアップロードディレクトリです。フラスコプロジェクトコードは / home / www / WebBlogoldに配置されます(WebBlogoldは私のプロジェクトフォルダです)。 Linuxのディレクトリ構造がわかりませんか?あなたはそれをググることができます、そして私はここに記事[http://yangrong.blog.51cto.com/6945369/1288072](http://yangrong.blog.51cto.com/6945369/1288072)をお勧めします。

サーバーに複数のプロジェクトがある場合は、virtualenv仮想環境をインストールすることをお勧めします。 Virtualenvは、プロジェクト間の同じパッケージの異なるバージョンの依存関係の問題を解決できます。

pipを使用してvirtualenv仮想環境をインストールします

pip install virtualenv 

プロジェクトディレクトリを入力し、ディレクトリに「virtualenv venv」と入力します。ここで、venvは、ビルドする仮想環境フォルダの名前です。結果として、次の2行が表示されます。

New python executable in venv/bin/python
Installing setuptools, pip...done.

これは、フォルダが作成されたことを意味します。 source venv / bin / activateコマンドを使用して仮想環境を有効にします。有効にすると、現在のパス名の前に(venv)が表示されます。

フラスコ関連のパッケージを仮想環境にインストールするには、パッケージを1つずつインストールするか、すべてのパッケージをtxtファイルに書き込んで一度にインストールします。

フラスコ関連.txtファイル:

Flask==0.10.1
Flask-Login==0.2.11
Flask-Mail==0.9.1
Flask-Moment==0.4.0
Flask-PageDown==0.1.5
Flask-SQLAlchemy==2.0
などなど

それらをプロジェクトフォルダに保存し、仮想環境で「pip install-rflaskrelated.txt」と入力してインストールします。

3. サーバープロキシを構成する

私のサーバーエージェントはグローバルにインストールされていますが、もちろん仮想環境にインストールすることもできます。

使用されるプロキシはnginxとuwsgiの2つです。最初に、nginxなしでプロジェクトにアクセスできる場合、nginxを使用する目的はセキュリティと[負荷分散](https://cloud.tencent.com/product/clb?from=10680)です。 nginxをフロントエンドプロキシとして構成し、uwsgiをバックエンドプロキシサーバーとして構成します(ここで説明するフロントエンドとバックエンドは相対位置であり、実際の意味はありません)。インターネットからの要求を処理する場合は、nginxで処理する必要があります。その後、リクエストはuwsgiに渡され、プロジェクト自体にはuwsgiを介してアクセスできます。

nginxがなく、uwsgiサーバーしかない場合、インターネット要求はuwsgiによって直接処理され、プロジェクトにフィードバックされます。
Nginxは、セキュリティフィルタリング、アンチDDOS保護、およびその他の安全な操作を実装できます。複数のサーバーが構成されている場合、nginxはサーバーの負荷が比較的分散されていることを確認できます。

また、uwsgiは、WSGIプロトコル(Webサーバーゲートウェイインターフェイス)、httpプロトコルなどを実装するWebサーバーであり、要求の受信と処理、応答の送信などを行うことができます。したがって、uwsgiのみも可能です。

最初にuwsgiをインストールします

pip install uwsgi

プロジェクトのルートディレクトリに構成ファイルuwsgiconfig.iniを作成します(uwsgiは複数の構成ファイル形式、xml、ini、jsonなどをサポートします)

[ uwsgi]

socket =127.0.0.1:8001//プログラムの開始時に使用されるアドレスとポート。通常、フラスコプロジェクトをローカルで実行します。//アドレスとポートは127です.0.0.1:5000,//ただし、サーバーでは、ポートはuwsgiを介して設定され、プロジェクトはuwsgiを介して開始されます。//つまり、uwsgiが開始されると、プロジェクトも開始されます。
chdir =/home/www///プロジェクトディレクトリ

wsgi-file = manage.py      //フラスコプログラムの起動ファイルは通常、ローカルで実行されます//      python manage.プロジェクトを開始するためのpyrunserver

callable = app      //プログラムで有効になっているアプリケーション変数名

processes =4//プロセッサの数

threads =2//スレッド数

stats =127.0.0.1:9191//uwsgi統計を取得するためのサービスアドレス

構成ファイルを保存します。uwsgiuwsgiconfig.iniと入力してuwsgiを起動できます。

nginxのインストール:nginxはyumインストールソフトウェアソースにないため、追加します

# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# yum install nginx

nginxのいくつかのコマンド

急いでnginxプロキシサーバーを起動しないでください。最初にnginx構成ファイルを作成しましょう。

nginx構成ファイルは / etc / nginx / conf.d /フォルダーにあり、 / etc / nginx / sites-enabled / defaultにある場合もあります。デフォルトの構成ファイルを開きます。ほとんどのコンテンツに注釈が付けられているため、変更する必要があります。

events {
 worker_connections  1024;}
http {
 include       mime.types;    
 default_type  application/octet-stream;    
 sendfile        on;    
 keepalive_timeout  65;

 server {
  listen       80;//デフォルトのWebアクセスポート
  server_name  xxx.xxx.xxx.xxx;//あなたのパブリックネットワークIP
  # charset koi8-r;
  access_log  /home/www/WebBlogold/logs/access.log;//サーバーが受信した要求ログ、//プロジェクトフォルダの下に作成する必要があります//ログフォルダ、以下と同じ。
  error_log  /home/www/WebBlogold/logs/error.log;//エラーログ

  location /{

   include        uwsgi_params;//インポートされたuwsgi構成は次のとおりです

   uwsgi_pass     127.0.0.1:8001;//uwsgi構成ファイルのソケットアイテムのアドレスと一致する必要があります//同じ,そうしないと、uwsgiはリクエストを受信できません。

   uwsgi_param UWSGI_PYHOME /home/www/WebBlogold/venv;//pythonの場所(仮想環境)

   uwsgi_param UWSGI_CHDIR  /home/www/WebBlogold;//プロジェクトルートディレクトリ

   uwsgi_param UWSGI_SCRIPT manage:app;//プロジェクトのメインプログラムを開始します(ローカルで実行//このメインプログラムはフラスコに組み込むことができます//サーバー上のプロジェクトにアクセスする)}}}
以下は束です#、それはすべてコメントです、それについて心配しないでください。

nginxを起動するときに、「98:Addressがすでに使用されています」というエラーが表示された場合でも、心配しないでください。nginxがすでに起動されている可能性があります。

netstat -ntlpでポートの占有率をチェックして、ポート80がnginxによって占有されているかどうかを確認します。他のプログラムがnginxのデフォルトポート80を占有していることがわかった場合は、これらのプロセスを強制終了して、nginxを再起動できます。

この時点で、ようやくすべての作業が完了し、すぐにプロジェクトにアクセスできるようになりました。

ここで、nginx構成ファイルをチェックして、nginx -tが正常に適用されていないかどうかを確認し、構成ファイルを確認します。

  1. nginxと入力してnginxを開始します
  2. uwsgi uwsgiconfig.iniと入力して、uwsgiを開始します

このとき、uwsgiはプロジェクトにエラーがあるかどうかを通知します。ローカル操作が適切であれば、通常はエラーは発生しません。

報告される可能性のあるエラーは、プロジェクト関連モジュールのインポートパスが正しくないことです。変更するだけです。エラーがない場合は、ブラウザを開いてサーバーのIPアドレスを入力するか、対応するドメイン名があり、IPに解決されている場合は、ドメイン名を入力することもできます。

すべてがうまくいけば、目的のページが表示されます。うまくいかない場合は、最初にログファイルを確認します。ログファイルは、プロジェクトのルートディレクトリの下のlogsフォルダにあります。

Recommended Posts

CentOSでNginxとuを使用する
CentOS6.8でdockerをインストールして使用する
CentOSでのMysqlのインストールと使用
CentOS7.2でのKVMのインストールと予備使用
CentOs7.3はNginx1.9.9をコンパイルしてインストールします
centos7kvmのインストールと使用
CentOS7postgresqlのインストールと使用
Centos7elk7.1.1のインストールと使用
CentOS5.9でkeepalivedをインストールして構成します
Centos5.2でLAMPをコンパイルしてインストールします
CentOS7でOpenSSLとOpenSSHをアップグレードする
CentOS6.xはNginxをコンパイルしてインストールします
CentOS7.2およびNginx構成仮想ホスト
CentOS7.3はiptablesをインストールして詳細に使用します
CentosでTomcatを展開して最適化する
CentOSでのJava-JDKのインストールと構成
Python3をインストールし、CentOS8でansible
CentOS7はSQLServerをインストールして使用します
CentOS7の下にPython3とPyをインストールします
CentOS7でのErlang20.2のインストールと展開
Jexus 5.8.2を使用して、CentosでAsp.netコアをデプロイして実行します
CentOS6.3の下にMono3.2とJexus5.4をインストールします
CentOS7でlibmodbusライブラリをコンパイルしてインストールします
CentOS 7でのTomcatのインストールと構成(Tomcatの起動)
CentOS6 / 7でのMySQL8.0のインストール、展開、および構成
centos7でのredisのインストールと構成
CentOSでのZabbixのインストールと展開およびローカリゼーション
Dockerをデプロイし、CentOSでNginxを構成します
CentOS7でのJenkinsのインストールと展開のチュートリアル
32ビットおよび64ビットのCentOS6.0でMono2.10.8およびJexus5.0をインストールします
Centos7はNginxをインストールします
CentOS7にDockerをインストールして使用する方法
CentOSでNginxサーバーをすばやく構築する方法
CentOS8にComposerをインストールして使用する方法
VMware10でのCentOS7のインストールと構成のグラフィックチュートリアル
Centos7によるPHPのインストールとNginxのチュートリアルの詳細
CentOSの下でyumを介してsvnと構成をインストールします
CentOS6.5でのrsyncサーバーのインストールと構成
CentOS8にCurlをインストールして使用する方法
CentOS7 DockerNginxの展開と操作の詳細な説明
CentOSでのMySQL8.0のインストールと展開、非常に詳細!
Windows 8Hyper-VでのCentOS6およびSSH構成のインストール
「ソースプロダクションコントロール」シリーズ(2)CentOS8でのNginx1.18の使用:コンパイル、インストール、および基本的な使用
centos7をインストールして接続します
CentOS MONOnginxを実行しています
Centosでのconfluence6.3操作記録のインストールとクラッキング
CentOS7でGitBookを展開する
Vmware-Centos8をインストールして起動します
CentOS7.4でHadoop-2.7.6をコンパイルします
ランチャーを使用して、CentOS7でK8sクラスターを構築します
CentOS7の下にmysql5.7をインストールします
Vmware-Centos7をインストールして起動します
Centos7の下にActiveMQをインストールします
CentosでのJira7操作記録のインストールとクラッキング
CentOS7の下にPostgreSQL12をインストールします
VMwareにCentOSをインストールする
UbuntuでのPythonでのGDALのインストールと使用
[python] ubuntuの下のpython2とpython3
ubuntuでiptablesを使用する
CentOSの下にJDK + Tomcat8をデプロイします
CentOS 8 / RHEL8にCockpitをインストールして使用する方法