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
に以下のファイルを置きます。
[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 で見れるようになりました。
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.py
のALLOWED_HOSTS
に['*']
を入れる
その次は右上の歯車マークからPreferences
を開いてPython SupportのPython VersionをPython 3にします。
もうそろそろ疲れてきましたが、Djangoの実行までもうちょいです。
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を選ぶと虫が現れます。
しかし、Djangoのバージョン2以降はpython3系でないと動かないのでこれでは実行できません。色々調べたのですが結局分からずじまいでした。Cloud9自体は結構遊び甲斐がありそうなので使っていきたいのですが、デバッグ実行を私はやりたいので引き続き調べていこうと思ってます。