この記事では、Alibaba Cloud上でDjangoアプリケーションを起動してデプロイする方法を説明します。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
#前提条件
最初の前提条件として、Python ベースのアプリケーションに virtualenv と virtualenv wrapperをインストールして、Python プロジェクトに分離された環境を作成する必要があります。そのためには、以下の手順で行うことができます。
-
pip
をインストールする
sudo apt-get install python-pip
-
virtualenv
のインストール
sudo pip install virtualenv
- virtualenvs を格納する
dir
を作成します。
mkdir ~/.virtualenvs
-
virtualenvwrapper
のインストール
sudo pip install virtualenvwrapper
- virtualenv のディレクトリに
WORKON_HOME
を設置する
export WORKON_HOME=~/.virtualenvs
-
virtualenvwrapper.sh
を.bashrc
に追加します。
この行を~/.bashrc
の最後に追加し、virtualenvwrapper
コマンドが読み込まれるようにします。
/usr/local/bin/virtualenvwrapper.sh
シェルを終了して再度開くか、.bashrc
または source ~/.bashrc
コマンドで .bashrc
をリロードすれば準備は完了です。
- gitをインストールします。
apt-get install git
- ウェブサーバとしてNginxをインストールし、その背後でアプリケーションを実行できるようにします。
Sudo apt-get install nginx
#手順
それでは、Alibaba Cloud ECSインスタンスのセットアップと起動に取り掛かりましょう。
####最初のLinuxインスタンスの起動
Alibaba Cloud Management Consoleを使用してECSインスタンスを実行する手順を簡単に見てみましょう。
- アカウントにログインし、Product & ServicesセクションのElastic Compute Serviceに移動します。サイドバーメニューの**[概要]**をクリックします。すでに実行中のインスタンスのリストが表示されます。Buy Instanceをクリックして、任意のリージョンからインスタンスを購入するか、次のステップに進んで新しいインスタンスを作成します。
2.サイドバーメニューの**[Instances]**をクリックします。インスタンス一覧で必要なリージョンを選択し、右上のバーでCreate Instanceをクリックします。
3.製品購入コンソールにリダイレクトされますので、ご希望のパッケージを選択する必要がありますが、クイック起動オプション(ECSインスタンスとデータ転送の特別価格を提供しています)、またはカスタム起動オプション(2つの異なる価格モデルを備えています)のいずれかを選択することができます。具体的には、月額または年単位で支払うサブスクリプション課金、またはニーズに応じて従量課金のいずれかを選択することができます。このチュートリアルでは、課金方法としてPay-As-You-Goを選択しました。
4.このウィンドウで、ECS インスタンスを起動する Datacenter Region と Zone を選択します。Region を選択して Zone を選択しない場合は、ランダムゾーンにインスタンスが配置されます。
5.ここで、作成するインスタンスの種類を選択する必要があります。要件に基づいて、Generationタブからインスタンスのジェネレーションのタイプを選択します。ジェネレーション タイプは、使用する構成と計算能力に基づいて異なるインスタンスの種類を表します。
6.次に、Network Type を選択して ECS インスタンスを起動します。ニーズに応じて、Classic Network または VPC のいずれかにすることができます。Classic Networkでは、アリババクラウドがIPアドレスを分散的に割り当てます。シンプルで高速なECSの利用を必要とするユーザーに適しています。VPCは、論理的に分離されたプライベートネットワークで、専用の接続に対応しています。より複雑なネットワーク管理プロセスに慣れているユーザーに適しています。
7.ここで、Operating Systemを選択する必要があります。各オプションの下には、異なるOSのバージョンのリストが用意されています。Ubuntuオプションを選択します。
8.必要に応じてドロップダウンメニューからシステムディスクの種類を選択します。また、[Add a disk] をクリックして、このリストにディスクを追加することもできます。
9.セキュリティ設定セクションでは、セキュリティを強化するためのパスワードを作成することができます。
10.Purchase Plan セクションで、インスタンスの名前を入力し、起動するインスタンスの数を設定します。
11.Overviewセクションで構成の詳細と合計価格を確認し、Buy Nowをクリックします。
12.Activateをクリックして注文を確定し、インスタンスを起動します。
13.インスタンスが起動したら、コンソールのInstancesタブで確認できます。
####Djangoアプリケーションのインストールとデプロイ
Alibaba Cloud Management Consoleを使用してECSインスタンスを作成して起動したので、Djangoアプリケーションをインストールしてデプロイする方法を見てみましょう。
1.SSHコマンドを使ってサーバーにログインします。
2.パスワードを入力します。
3.新しい virtualenv を作成して、Django アプリケーションをデプロイするための環境を設定します。
mkvirtualenv DjangoApp
新しい virtualenv を終了するには、deactivate を使用します。これで、workon で環境を切り替えることができるようになりました。virtualenv をロードしたり切り替えたりするには workon コマンドを使用します。
workon DjangoApp
4.現在の環境にDjangoをインストールします。
pip install Django
5.django-adminコマンドでSample Projectを作成し、ディレクトリをプロジェクトフォルダに変更します。
django-admin startproject todoApp
cd todoApp/
6.データベースを移行またはブートストラップします。
python manage.py migrate
7.管理パネルにアクセスするためのスーパーユーザーを作成します。
python manage.py createsuperuser
8.ユーザーを設定したら、manage.pyで処理されるrunerverコマンドを実行してアプリケーションをテストします。
python manage.py runserver 0.0.0.0:8000
8000番ポートで以下のように実行されていることがわかります。
あなたの管理パネルである**/admin**に移動して、アプリケーションを管理することができます。
ここで、Nginx を使用してアプリケーションを Web サーバーの後ろに配置します。
9.データベーススキーマを作成し、Python環境を有効化します。以下の手順で行うことができます。
- ディレクトリを Django Project ディレクトリに変更する
- 次のコマンドを実行する
python manage.py migrate
10.CSSやJSファイルを含むすべての静的ファイルを収集します。以下の手順で行うことができます。
- 次のコマンドを実行して、特定の場所にあるすべての静的ファイルを収集します。
Python manage.py collectstatic --noinput
- 開発者は、すべての静的ファイルが収集される場所への
STATIC_URL
パスを設定する責任を負います。 - これらの変数は、Project ディレクトリ内の
setting.py
で定義されています。
1、STATIC_URL
2、STATICFILES_DIRS
3、STATIC_ROOT
11.uwsgiライブラリをインストールし、uwsgi serverを使用してサーバを起動します。以下の手順を実行することで実行できます。
pip install uWSG
django アプリケーションのデプロイに使用する ini ファイルを作成します。
vim uwsgi.ini
-
application dir
のuwsgi.ini
に保存します。iniファイルの書き方については、Python/WSGIアプリケーションのクイックスタートを参照してください。以下のコマンドを実行してアプリケーションを起動します。
uwsgi uwsgi.ini (your ini file)
12.アプリケーションを提供するnginxの設定ファイルを変更します。
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name localhost; location /static/ { include uwsgi_params; alias /root/todoApp/public/; } location / { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi.sock; } }
13.nginxを再起動すると、アプリケーションはポート80でnginxの後ろで稼働しています。
#結論
この記事では、Alibaba Cloud上にDjangoアプリケーションをデプロイする方法について説明しました。要約すると、これに関わる最初のステップは、UbuntuをOSとしてECSインスタンスを起動して実行すること、次に、このインスタンスに Django アプリケーションをインストールしてデプロイすることでした。このチュートリアルの前提条件の一部として、デプロイを完了し、有効な Alibaba Cloud のアカウントを持っている必要があることを覚えておいてください。
以下は、このチュートリアルに関連する製品のリストで、実運用のシナリオで Django アプリケーションをデプロイする際に役立つでしょう。
- Alibaba Cloud Elastic Compute Service (ECS)
- Alibaba Cloud CloudMonitor
- Alibaba Cloud Web Application Firewall (WAF)
- Alibaba Cloud Domain Name Service (DNS)
- Alibaba Cloud ApsaraDB for RDS
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ