LoginSignup
0
2

More than 3 years have passed since last update.

Cloud9でDjangoの開発環境を作ろうとしたがデバッグのやり方がよく分からなかった話

Posted at

TL;DR

  • Cloud9とはAWSで使えるブラウザ上で動作するクラウドベースのIDE
  • OSSでも公開されていてローカル環境でも動かせるので、やってみた
  • Djangoの開発環境を作れたが、デバッグのやり方がちょっとよく分からないかった

動作環境

  • Vagrantで構築(boxはbento/ubuntu-19.04)
  • python2.7.16 (Cloud9用)
  • python3.7.3 (Django用)
  • Django2.1

Cloud9のインストール

Cloud9のインストールは割と簡単でした。とりあえずVagarntで仮想マシンを立てます。Vagrantfileはこんな感じで良いと思います。

# -*- coding: utf-8 -*-
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vbguest.auto_update = true
  config.vm.box = "bento/ubuntu-19.04"
  config.vm.network :private_network, ip: "192.168.99.219"
end

立てたらとりあえずgccとpython2系を入れます。

sudo apt install --no-install-recommends -y gcc python

ほんで、Cloud9はここにある通り、必要なdependenciesをインストールしてくれるスクリプトを公開しているのでこれを実行すれば、準備は整います。

curl -L https://raw.githubusercontent.com/c9/install/master/install.sh | bash

あとはgit cloneしてインストール用のスクリプトを実行すれば完了です。

git clone --depth 1 https://github.com/c9/core.git
./core/scripts/install-sdk.sh

systemdとforeverを使ってcloud9の自動起動と永続化

インストールすると、server.jsで動くよ!みたいなメッセージが出てきたりもしますが、せっかくなので自動起動と永続化をしたいと思いました。
Node.jsで作られたアプリをデーモン化して永続的に実行するにはforeverを使うのが良さそうだったので、まずはこれを入れます。

sudo npm install -g forever

そしたら/etc/systemd/system/cloud9.serviceに以下のファイルを置きます。

/etc/systemd/system/cloud9.service
[Unit]
Description=cloud9 service
After=network.target

[Service]
Type=forking
Environment="HOME=/home/vagrant"
ExecStart=/usr/local/bin/forever start /home/vagrant/core/server.js -l 0.0.0.0 -p 8080 -a : -w /home/vagrant/workspace
ExecStop=/usr/local/bin/forever stop $MAINPID
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cloud9
User=vagrant
Group=vagrant

[Install]
WantedBy=multi-user.target

ハマりポイントとしてはEnvironment="HOME=/home/vagrant"の部分ですかね。HOMEの環境変数がセットされていないと起動しませんでした。あと実行ユーザにはvagrantを指定してます。

置いたらあとは自動起動の設定をして起動します。

sudo systemctl enable cloud9
sudo systemctl start cloud9

これでCloud9が動き始めてブラウザ上で見られるようになったはずです。

私はVagrantfileにconfig.vm.network :private_network, ip: "192.168.99.219"と設定していたので、http://192.168.99.219:8080 で見れるようになりました。
c9.png

Djangoをインストールし、Cloud9で動かしてみる

作りたいのはDjangoの開発環境なので入れます。

sudo apt install --no-install-recommends -y python3 python3-pip
sudo pip3 install Django==2.1

これらのコマンドは、せっかくなのでCloud9のターミナルで実行してもいいですね。
では次にdjango-adminコマンドでプロジェクトを作ります。作ったら、

  • python3 manage.py migrateの実行
  • 外からでも見れるようにsettings.pyALLOWED_HOSTS['*']を入れる

これらをやります。
ah.png

その次は右上の歯車マークからPreferencesを開いてPython SupportのPython VersionをPython 3にします。
ps.png

もうそろそろ疲れてきましたが、Djangoの実行までもうちょいです。
run.png

bashとかのタブがある画面にNew Run Configurationを選択、Commandにはapp/manage.py runserver 0.0.0.0:8000と入力してRunnerはPythonを指定して実行します。そうするとDjangoのサーバが動き出します。http://192.168.99.219:8000/ で見れると思います。

デバッグのやり方がよく分からなかった

実行してめでたしめでたし、ではなく私はデバッグのやり方を知りたいと思いました。いろいろなページをググると、どうやら「Runnerの虫さんマークにチェックするとデバッグ実行できる」ということが分かりました。が、無いんです。
RunnderでPython2を選ぶと虫が現れます。
p2.png
しかし、Djangoのバージョン2以降はpython3系でないと動かないのでこれでは実行できません。色々調べたのですが結局分からずじまいでした。Cloud9自体は結構遊び甲斐がありそうなので使っていきたいのですが、デバッグ実行を私はやりたいので引き続き調べていこうと思ってます。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2