Linuxサーバーを展開するためのPythonのDjangoプロジェクト

プロジェクトの依存関係:LinuxのCentos7(アリクラウド軽量サーバー)+ Pythonの3.7.2 + Djangoの2.2.1 + restframework 3.9.4 + MySQLの5.7

Centos7へ1つのインストールのpython3、使用することができるソフトウェア管理パッケージと依存関係をインストール

yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

2は/ usr / localディレクトリにPyhton3をダウンロード

wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

3解凍

tar -zxvf Python-3.7.2.tgz

4解凍良いのpythonファイルを入力します

cd Python-3.7.2

5コンパイル指定されたパスに取り付けられています

./configure --prefix=/usr/local/python3

6インストールのpython3

make

make install

インストール後にソフトリンク7は、完全なターミナルのpython3で直接変数を追加し、使いやすいです

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3

インストールが完了PIP3 8のpython3もインストールが完了したら、リンクを確立したい、別のソフトウェアをインストールする必要はありません
また、PIP3のソフトリンクを提供します

ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3

注: 如果软链建立完成,但是却无法使用的时候执行下面命令:
   mv pip pip2  # (将文件 pip 更名为 pip2 )
   ln -s /usr/local/python3/bin/pip3 /usr/bin/pip  

9インストールvirtualenvの、プロジェクト管理の便利異なるバージョン。

pip3 install virtualenv

10のソフトリンク

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv3

11が正常に(実際の需要に応じて、ランダムに作成されたファイル)は、主記憶装置およびenvウェブサイトファイル用に使用されるルートディレクトリに2つのフォルダを、確立しインストールしました。

mkdir -p /data/env   # 存放虚拟环境
 
mkdir -p /data/wwwroot   # 存放web项目

/データ/ ENV /ダウンへの12のスイッチは、仮想環境の指定されたバージョンを作成します。

       virtualenv3 --python=/usr/bin/python qize_demo (项目名) # 创建虚拟环境

       # 然后进入
       cd /data/env/qize_demo/bin 

       # 进入bin目录后开启虚拟环境,执行命令
       source activate  

    # 注:(启动后出现 (qize_demo),说明是成功进入虚拟环境。)

13仮想PIP3セキュリティジャンゴと環境とuwsgi(注:uwsgiが二回インストールする、一度システムにインストールされ、その後、一度インストールに対応する仮想環境を入力してください。)

pip3 install django  #(如果用于生产的话,则需要指定安装和你项目相同的版本)

pip3 install uwsgi

# 给uwsgi建立软链接,方便使用

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

ファイルをrequirements.txtする現在の環境の依存関係をエクスポートするには、以下のコマンドを使用して、ローカルディレクトリにある14件のプロジェクト

pip freeze > requirements.txt 


15プロジェクトのソースコード圧縮パッケージ。サーバー対応するディレクトリにアップロード項目(/データ/ wwwrootに/)、解凍。

良いプロジェクトの取り付けrequirements.txtに16が減圧パスの根を依存関係します。

pip3 install -r requirements.txt

データベース・サーバをインポートする1​​7。(あなたは、MySQLの単語を使用している場合)

エクスポートのMysql、データベースのジャンゴ

mysqldump -uroot -p password django>django.sql

インポートするには、次のコマンドを使用して、サーバーにサーバーにアップロードdjan​​go.sql

mysql -uroot -ppassword

use dajngo;

source your Path\django.sql

よる18 のrunserverのpython3のmanage.py次のステップではなく、通常のランアップ検査の正常なスタート(ここではいくつかの一般的なミスや解決策がある)場合は、プロジェクトを実行します。

报错1:django.core.exceptions.ImproperlyConfigured:あるmysqlclient 1.3.3以降が必要とされます。あなたは0.7.11解决方案を持っています。

解決:編集PythonのインストールパスにPython36-32 \ Libの\サイト-パッケージ\ジャンゴ\ DB \バックエンド\ mysqlの\ base.py

将文件中的如下代码注释

#if version < (1, 3, 3):
#    raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

报错2:ファイル"/usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/operations.py"、ライン146、last_executed_queryクエリで= query.decode(エラー= '置き換えます「)

AttributeError:「str」はオブジェクトが属性「デコード」を持っていません

解決:編集

/usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/operations.py

的 第146 行,

# 将 decode 改为 encode 保存并退出
query = query.decode(errors='replace') 改为 query = query.encode(errors='replace')

19プロジェクトのルートディレクトリにuwsgi設定ファイル(qize_demo.xml)を追加します。

<uwsgi>       

 <socket>127.0.0.1:8070/</socket><!-- 内部端口,自定义 --> 

 <chdir>/data/wwwroot/qize_demo/</chdir><!-- 项目路径 -->            

 <module>qize_demo.wsgi</module> 

 <processes>4</processes> <!-- 进程数 -->     

 <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->

</uwsgi>

nginxの構成は、(元の設定ファイルがバックアップさ以下であり、次いで次に置換される)20プロファイル。

events {

    worker_connections  1024;

}

http {

    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name  127.0.0.1:80;  # 改为自己的域名,没域名修改为127.0.0.1:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8070;  #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT qize_demo.wsgi;     #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /data/wwwroot/qize_demo/; #项目路径
           
        }
        location /static {
            alias /data/wwwroot/qize_demo/static; #静态资源路径
        }
    
        location /templates {
            alias /data/wwwroot/qize_demo/templates;
        }
    }

}

注:首尾よくアクセスするための正しい順序で記入し、プロジェクトパス、パス静的リソースでUwsgiとnginxの設定ファイルに注意を払うようにしてください。そうでなければ、502エラー。Djangoは、ファイルや他の設定ファイルを変更Uwsgiとnginxのを再起動してください、または有効になりませんした後に、あります。

21 Uwsgiと再起動nginxの方法:

メソッドを起動しuwsgi

uwsgi -x qize_demo.xml

nginxのリブート方法

nginx -s reload

そして、ブラウザでサーバーIP(またはドメイン名)にアクセス、プロジェクトを表示することができます。

あなたはnginxの設定ファイルでドメインを結合した後、プロジェクト、DNSサーバのIPまでのドメイン名管理、バックグラウンドで最初にアクセスするためのドメイン名を使用したい場合。そして、ブラウザでの結合ドメインを介してプロジェクトにアクセスします。

以下は、問題のいくつかをまとめたものです。

1エラーメッセージが表示され、500以上のは、情報nginxのへのアクセス権を持っている、とnginxの構成は論外一般的である場合。Nginx.confが正しいパスで設定項目を表示するには、XMLファイルのパラメータとポートにポートuwsgi_pass uwsgiは再始動nginxの後に設定の変更が完了するかどうか、同じです。エラーがないかどうかを確認するために、プロジェクトの下にルート・パスに行くことができるプロジェクトを開始するためのpython manage.pyののrunserverがあり、プログラム自体が問題である可能性があります。

2エラーメッセージが400回の以上のアクセスが表示された場合は、tempates含め、プロジェクトパスの検査に焦点を当て/静的静的パスが正しいこと、およびプロジェクトの設定は、アクセス・パスtempates /静的ファイルを構成するかどうか、およびURLが正しいこと、そしてそこにhtmlファイル経路に導入され、CSS、JS、IMG他の文書など、正確です。

  css文件:<link rel="stylesheet" href="/static/css/q.css">
  js文件 :<script src="/static/js/q.js"></script>

以下は注意を要約したものです。

プロジェクトは、ジャンゴのアクセス障害を持っていないようなので、エラーメッセージをDEBUG = Falseに設定することを忘れないためにライン上のアイテム1

すべてのIPがアクセスできる2セット(settings.py)

     ALLOWED_HOSTS = ['*']

3つのデータベースの設定(settings.py)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sql_base',       # 库名 (根据实际数据库名进行修改)
        'PORT': 3306,         # 端口(不用改)
        'HOST': '127.0.0.1',  # 本地host(不用改)
        "USER": 'root',           # 用户名
        'PASSWORD': '123456'  # 密码
    }
}

おすすめ

転載: www.cnblogs.com/chaoqi/p/11103188.html