サイト名:ノートブックの東
紙リンク:https://www.eastnotes.com/post/29
免責事項:このブログのすべての記事別途指定、BY-NC-SAライセンス使用されている場合を除きます。ソースを示してください!
Djangoは最終的には成功したクラウドテンセントに展開し、また、HTTPS機能を実現しました。今、将来の視聴のための方法、以下に列挙デプロイメント環境を、ステップ。
ウェブサイトのソースコードはgithubの上でオープンソースをされています。https://github.com/mxdshr/DjangoEast、クローニングの使用を歓迎する、と星を与える〜
1.環境と展開ツール
- テンセント雲
- Ubuntuのサーバ16.04.1 LTS 64位
- Django2.0.8
- python3.6.7
- Gitの
- Nginx1.10.3
- Uwsgi
- Filezillaの
Filezillaのは、私はファイルを転送するFTP設定されたUbuntuのvsftpdのを、インストールしようとしてきた前に、それは事実ではない、サーバーにファイルをアップロードするために使用され、Filezillaのは、rootアカウントでログインしたポートが22である、また、ファイル転送が可能です。
2.展開手順
展開を行う前に、あなたのUbuntuはちょうど梱包されていることを確認してください、純粋な!また、システムのログイン・ユーザーがルートであることを確認し、そうでない場合はルート、ルートに切り替えるには、次のコマンドを使用します。
sudo su
2.1 python3.6をインストール
Ubuntuはpython2.7とpython3.5が来るが、これは私が必要バージョンではないので、python3.6をインストールする必要があるので、あなたは方法の異なるバージョンを使用している場合は同じです。次のようにコマンドは次のとおりです。
apt-get install software-properties-common
add-apt-repository ppa:jonathonf/python-3.6
apt-get update
apt-get install python3.6
インストール後、使用する端末タイプのPythonのバージョンでは2.7であるので、我々は、デフォルトではインストールされ、端末に次の変更は、私たちをpython3.6行う必要があります。
cd /usr/bin rm python3 ln -s python3.6 python3
2.2インストールPIP3
ピップアクションを言うまでもなく、主に様々なPythonパッケージのインストールを管理するために使用され、インストールは次のとおりです。
apt-get install python3-pip
唯一の最初のステップ、およびPythonのインストール、我々は、端末にピップを入力するか、システムのバージョンを使用します。上記の原理は同じのpythonであると我々は、変更するために何かをする必要があります。
cd /usr/bin
rm pip3
ln -s pip3.6 pip3
その後、あなたはPIP3をインストールしたライブラリを使用することができ、効果を取ることができますバックログ
pip3 install --upgrade pip
私は、このような操作はすぐには反映されませんした後、あなたが仕事について、サーバーに再度ログインする必要があり、理由を知りません。さて、あなたは今で再度ログインし、ターミナルPIP3は、私たちが望むものである、と今ピップにいくつかのアップグレードを行う必要が入力したとします。
pip3 install --upgrade pip
2.3インストールし、仮想環境を構成しvirtualenvの
私たちは次のように、スタンドアロンPythonの仮想環境にインストールコマンドを動作させるためにサイトをお勧めします。
pip3 install virtualenv
あなたは、私は/家を選んだ仮想環境、ジャンゴとして、私の仮想環境の名前を入力し、仮想環境を作成してアクティブにするディレクトリ:
virtualenv django
source /home/django/bin/activate
操作を行う場合、すべての後、私たちは、Djangoの環境では、仮想環境、インストールパッケージのpythonジャンゴやmanage.pyファイルの操作を有効にするには覚えておく必要があります。
2.4 Gitリポジトリ、ダウンロードサイトをインストールします
次のようにGitを使用すると、簡単に、githubのとの相互運用私たちは、ウェブサイトのソースコードファイルを更新するに役立つ、インストールすることができます:
apt-get install git
プログラムのウェブサイトを保存するディレクトリを選択する必要をインストールした後、ここで私は、個人用サイトのディレクトリはデフォルトではありません、あなたが作成する必要があり、家庭/個人用サイト/選択し、このディレクトリに、Gitはダウンここに私の上にサイトを引っ張る使用しますオープンソースは、次のようにWebアプリケーションの方法があり、ダウンロード、例えば、githubの上でブログをジャンゴすることがあります。
git init
git remote add origin https://github.com/mxdshr/DjangoEast.git
git pull origin master
さて、今私たちは、プログラムのサイトを取得していることを、我々は必要なパッケージのpythonジャンゴプログラムをインストールします
2.5設置場所動作環境
この前に、仮想環境ジャンゴになっていることを確認してください。
pip install -r requirements.txt
今回は、PythonのDjangoのプログラムを実行するために必要なすべてのパッケージには、お使いの環境にロードされている、と今のサイトには、実行することはできません、我々はデータベースをインストールする必要があります。
2.6 MySQLデータベースをインストールします
次のようにここで私はMySQL5.8バージョンを選んだ、インストール手順は以下のとおりです。
cd /home
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
dpkg -i mysql-apt-config_0.8.12-1_all.deb
*选择8.0即可*
apt-get update
apt-get install mysql-server
インストールプロセスでは、良いヘクタールを書くようにしてください、パスワードの入力を求めるプロンプトが表示されます!インストール後は、データベースを作成し、ユーザーと承認を作成する必要があります。
mysql -uroot -p
CREATE DATABASE `数据库名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%';
FLUSH PRIVILEGES;
今回我々は、その後、2例に分け終え改正後の操作でデータベース構成プログラムのウェブサイトdjangoblog / settings.pyを行って変更してくださいことを得る構成データベース: - あなたが使用したい前に、データベース場合は、してください、その導入MySQLのクライアントデータ(例えば、Navicatは)。 - データベースを持っていない場合は、データテーブルを作成し、サイトのルートで次のコマンドを実行します。
python manage.py makemigrations
python manage.py migrate
まあ、ジャンゴとデータベースが設定されています。私たちは、単にWebのルートディレクトリに切り替えて実行し、サイトを実行することができます。
python manage.py runserver 0.0.0.0:80
あなたのサイトにアクセスするには、ipアドレスを設定するためにサーバーを使用できるように0.0.0.0:80は、アクセス可能な任意のIPアドレスを表します。しかし、Webアプリケーションを実行しているが付属しています唯一のpythonのrunserverツールを使用するだけでは十分ではありません。など我々はまた、より良い私たちのサイトを実行するためのApacheまたはnginxのサーバー管理ソフトウェアを必要とし、我々はまた、uwsgiをインストールする必要があります。
2.7インストールuwsgi
uwsgiインストールする前に、我々は、Pythonの開発キットをインストールする必要があります。
apt-get install python3.6-dev
そして、uwsgiをインストールし、私たちは公共の環境にインストールし、インストールする前にこのジャンゴ仮想環境を終了してください。
pip3 install uwsgi
インストール後、我々は、サイトが正常に実行できるかどうかをテストするためにuwsgiを使用することができ、次のコマンドを使用します。
uwsgi --http :8888 --chdir /home/mysite --home /home/django --module djangoblog.wsgi:application
--http:ポートを指定するために使用、私は8888を指定し、テンセントクラウドセキュリティグループにポートを開いてください
、サイトのルートディレクトリを指定するために使用:--chdir
--homeを:仮想環境のアドレスを指定するために使用
--moduleを:でDjangoプロジェクトは、あなたのアドレスを指定するには
、その後、私たちは、アドレスにhttpに行く://サーバーのIPアドレス:8888には、ページノーCSSスタイルを見ることはできません。uwsgiだけダイナミック・リンク・サービスを提供するため、あなたはnginxのアクセス静的ファイルをインストールする必要がある場合は、スタイルが表示されていない理由:
2.8 nginxのインストール
apt-get install nginx
nginxのをインストールした後、我々はいくつかの設定を行う必要がありますが、最初に我々はnginxの設定ファイルであるかを知っておく必要があります。
主配置文件:/etc/nginx/nginx.conf一般不用动
可用配置文件:/etc/nginx/sites-available我们一般更改这里的配置文件
已用配置文件:/etc/nginx/sites-enabled,已经启用的配置文件 我们在可用配置文件目录,新建一个mysite.conf此文件用于配置我们的项目。
cd /etc/nginx/sites-available
vim mysite.conf
次に、コンフィギュレーション次のファイルに書きます。
upstream django {
server 127.0.0.1:8888; # for a web port socket (we'll use this first)
}
server{
listen 80;
server_name mysite;
charset utf-8;
client_max_body_size 75M; #上传文件大小限制
# 网站静态文件所在目录
location /static{
alias /home/mysite/static;
}
# 上传文件所在目录
location /media{
alias /home/mysite/media;
}
# 动态文件交给uwsgi处理
location / {
uwsgi_pass 127.0.0.1:8888;
include /etc/nginx/uwsgi_params;
}
}
そして、このファイルと、ソフトリンク対応のサイトを作成し、プロファイルが有効になっていることを示します。
ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf
また、我々はまた、nginxの代わりのrootユーザー、または他の禁断のエラーが発生した403を起動する必要があります。開いているファイル/Etc/nginx/nginx.conf、ルートの最初の行のユーザの背後のユーザが変更することができます。
2.9設定uwsgi
前に、我々は単にそれをuwsgiテストし、それを構成していません。今、私たちは最初に/ homeディレクトリの下にmysite_uwsgiディレクトリを作成し、設定する必要がありますし、その後uwsgi設定オプションを保存するディレクトリにmysite.iniファイルを作成します。
cd /home
mkdir mysite_uwsgi
cd mysite_uwsgi
vim mysite.ini
以下の内容を書きます
[uwsgi]
chdir = /home/mysite
home = /home/django
module = djangoblog.wsgi:application
master = True
processes = 4
max-requests = 5000
harakiri = 60
socket = 127.0.0.1:8888
uid = root
gid = root
pidfile = /home/mysite_uwsgi/master.pid
daemonize = /home/mysite_uwsgi/mysite.log
vacuum = True
まあ、今nginxの設定が完了し、uwsgiはまた、我々は、その後、サイトが成功するかどうかをテストすることができますmysite.iniでファイルuwsgiを開くことができ、完成して構成します。
uwsgi --ini /home/mysite_uwsgi/mysite.ini
成功した起動コマンドかどうかを確認Uwsgi:
ps -aux | grep uwsgi
複数のプロセスの結果ならば、我々はそれが成功する見始めることができます。
HTTPSの設定2.10
ウェブサイトは現在、基本的には標準HTTPSは、いない場合は、ブラウザが危険なウェブサイトへのプロンプトが表示されます。また、検索エンジンに影響を与えるので、私たちはHTTPSにサイトをアップグレードする必要があります。
私はテンセント、テンセントの雲が無料TrustAsia TLS RSA CA証明書を申請することができ、クラウド使い、SSL証明書は、あなたが.CRTを得ることができ、2つのファイルの提出後に年を使用することができ、一つは.keyにあります。私たちは、Filezillaの持つこれらの2つのファイルは、/ etc / nginxの/ディレクトリの下に到達しなければなりません。
そして、あなた自身のウェブサイトに、HTTPS要求へのHTTPリクエストの内容は、次の構成ファイル内のドメイン名をHTTPモジュールで/etc/nginx/nginx.conf文書を記述します。
server{
listen 80;
server_name eastnotes.com www.eastnotes.com;
rewrite ^(.*) https://$host$1 permanent;
}
内側の内容で満たされ、その後オープン/etc/nginx/sites-available/mysite.conf:
listen 443 ssl http2;
server_name www.eastnotes.com,eastnotes.com;
ssl_certificate 1_www.eastnotes.com_bundle.crt;
ssl_certificate_key 2_www.eastnotes.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
再起動nginxの
nginx -t
service nginx restart
まあ、今プレフィックスHTTPSを見るべきサイトを開きますが、十分ではない、我々は、WWWでリダイレクト301に接続する必要があるのは/ etc / nginxの/サイト利用可能な場所にWWWなく、すべての接続これは、次のコードを追加します。
if ($host != 'www.eastnotes.com' ) {
rewrite ^/(.*)$ https://www.eastnotes.com/$1 permanent;
}
この時点で、Djangoのオンライン展開が完了し...... TMは本当にああ苦労!
3.共通コマンド
# 检查nginx配置文件是够有错误
nginx -t
# 重启nginx
service nginx restart
# 查看uwsgi进程
ps -aux | grep uwsgi
# 正常关闭uwsgi进程
uwsgi --stop /home/mysite_uwsgi/master.pid
# 强制关闭全部uwsgi进程
ps -aux | grep uwsgi |awk '{print $2}'|xargs kill -9
# 重新加载uwsgi
uwsgi --reload /home/mysite_uwsgi/master.pid
x lsof -i:9000 #查看端口占用状态
netstat -lnp| grep 9000 #查看端口占用状态
kill -9 +PID号