Django環境構築 Linux CentOS編 その1
Djangoの環境を構築。色々なブログの些細な走り書きを読みながら進めても、ちっとも 頭の中が整理されないので、本筋はDjangoの公式のインストールドキュメントから始めようと 思います。
で、クイックインストールではなく、詳細インストールの方を進めて、自分で構築したい環境を作る 事を実現できるようになるのが私の目的!
まずは、Django のインストール — Django 1.4 documentationこちらを読み進めて、 初心者には知らない単語やその意味などをを調べて追記しながら行きたいです。(ちなみに、ここでいう初心者は私の事です。)
当然、初心者なので、環境構築して壊してを頻繁に繰り返すだろう事から、仮想環境に構築していく 手順を追加していきます。
目指すべき環境構築は、Mac OSX上にVirtualBox と Vagrant をインストールして、Linux環境を実現して、そこにpython2.7.9(2系の最新版かつ、DjangoはPython3系では動かない為)をインストールして、Djangoをインストール。また、ゆくゆくはWebサービス化したいので、 Apache と mod_wsgiをインストールして環境を構築していきます。 ちなみに、Pythonには2系と3系の2種類のバージョンが現存しています。2系は、2020年にサポート終了予定となり、2系はVer2.7.9以降は正式リリースされないようです。
まず、Djangoを動かす為に必要なPythonの環境を構築したいと思います。
最初に、Virtualboxを下記よりダウンロードします。(私はMac OSXなので、dmgファイルをインストールして、そのまま普通にGUI側のインストーラーでインストールします。) Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle
続いて、Vagrantをインストールします。これも、下記からインストールしてください。 ここでは、mac版をインストールしています。これも特に難しい事なくインストールできると思います。 Download Vagrant - Vagrant
両方ともインストールしたら、ここからターミナルを使って作業していきます。 ターミナルを起動しましょう。念のため、ターミナルの場所をUPしておきます。 Launchpadのその他の中にあります。黒い四角いアイコンです。
それでは、まずはじめに、Vagrantが無事にインストールされているかを確認してみます。
ターミナルの表示は、このように、
ほにゃらら、$
となっています。ほにゃららの所は、各個人によって違うと思います。
このほにゃららの より先の$の次からコマンドを書いていきます。 次のように打ってみてください。
$ vagrant -v
バージョン1.7.2というのがわかったかと思います。これで、無事にインストールされている事がわかりました。
次回は、この続きから設定していきます。
開発独学メモ 環境構築 仮想サーバー構築(最初の失敗)
バーチャルボックスをインストールして、Vagrantをインストール。
その後、Vagrantのboxを作成して、ubuntuサーバーをインストール 仮想環境のubuntuサーバー上に、Djangoの環境構築し、Webサーバーを立てて、 クライアント上にあるフォルダと繋げる。
その初期段階で、一旦独自のbox化しておく。ここまでをやる。
BOXをダウンロード
vagrant box add ubuntu14.04 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
BOXが無事にダウンロードされているか確認
vagrant box list
boxをイニシャライズする
vagrant init ubuntu14.04
boxを起動する。
vagrant up
立ち上がった仮想環境にsshで入る。
vagrant ssh
再びsshでログイン
vagrant ssh
パッケージ情報を最新化する。
sudo apt-get update sudo apt-get upgrade
Heroku にデプロイするための Heroku Toolbelt をインストールする。
wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
無事にインストールされているか確認する。
heroku version
DjangoやHerokuデプロイに必要なライブラリをインストールする。
sudo apt-get install python-pip python-virtualenv libpq-dev
pipのバージョンを確認する。 (pipとは、Pythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システムでRubyのJemのようなもの)
pip --version
Djangoの環境構築 任意のフォルダをつくって、作ったフォルダに移動する。
mkdir フォルダ名 cd フォルダ名
mkdir potfolio && cd portfolio
virtualenvでpythonの仮想環境を実行する ※そもそも、Virtualboxで仮想環境のサーバー立ててるのに、その中でさらにpython のバージョン違いを共存させる為のVirtualenvを入れているのか?については、とりあえず勉強の為に入れているので、自分でもまだ用途がわかってない。という事で、virtualenvとは、Python の様々なバージョンの環境を仮想的に提供することができるもので、ディレクトリ毎に使用するPythonを変更できる。ここでは、venvというディレクトリを作成し、そのディレクトリ環境にDjango環境を構築する。
virtualenv venv
作成したvenvのディレクトリにパスを通す。アクティベートする。 パスを通さないと、グローバルのPythonが実行されるので。
source venv/bin/activate
ubuntuにpycongをインストールする為にビルドに必要なライブラリをインストール。
sudo apt-get install python-dev libpq-dev
easy_installを使ってインストールする為、easy_installが入っているsetuptoolsをインストール。
sudo apt-get install python-setuptools
psycopg2をインストール
sudo easy_install psycopg2
Django開発関連をインストールする。
pip install django-toolbelt
ちゃんとインストールされているかを確認する。
pip list
下記が入っていれば成功。argparse (1.2.1) dj-database-url (0.3.0) dj-static (0.0.6) Django (1.8) django-toolbelt (0.0.1) gunicorn (19.3.0) pip (1.5.4) psycopg2 (2.6) setuptools (2.2) static3 (0.5.1) wsgiref (0.1.2)
Djangoのプロジェクトファイルを作成
django-admin.py startproject さっき作った任意のファイル名 .
django-admin.py startproject portofolio .
最後の「 . 」ドットを忘れずに!manage.pyができている事を確認する。
ls -l
Heroku の実行プロセスにある Dynos に渡す実行パラメータを Procfile というテキストファイルに記述する。
echo 'web: gunicorn portofolio.wsgi --log-file -' | tee Procfile web: gunicorn portofolio.wsgi --log-file -
開発サーバーを立ち上げてみる。
foreman start
※一応立ち上がるが、HTMLの返却が確認できない。仮想サーバー上だからか?とりあえず、今の段階ではスルー しておく。デプロイする為の準備をする。
pip freeze > requirements.txt
ブラウザで、下のURLで無事にできているか確認https://[app-name].herokuapp.com/
残念。エラー状態。という事で、ここは一旦スルー仮想サーバーのubuntu上にWebサーバーをインストール
* yumでインストールするので、yumをインストール。これで色々と頑張っていたが、うまくいかない。で調べてみると、 権限を与える必要があるようで、色々と検索すると、 ubuntu yum のリポジトリを追加をする必要がありそうという事がわかった。 さらに調べていくと、Debian系のLinuxではapt-getを使っていて、 RedHat系のLinuxでは、yumを使っているという事らしい。なので、CentoOSではyum,Ubuntuではaptという事。じゃあ、わざわざyumでインストールしないで、apt-getでいいじゃん。と思い、apt-getでインストール事に。ここで、もう一つの罠。yum では、sudo apt-get install yum
yum install httpd
と書くのでapt-get install httpd
とすると間違い。下記でインストールできる。apt-get install apache2
Apache 用の Python WSGI アダプタモジュールをインストールする。
sudo apt-get install libapache2-mod-wsgi
mysqlをインストール
sudo apt-get install mysql-server python-mysqldb
apache2のバージョン確認
apache2 -v
srvフォルダにwwwフォルダを作成する。 現在は、home/vagrant/portfolioにいるので、絶対パスでsrvフォルダにwwwフォルダを作成する。
sudo mkdir srv/www
wwwフォルダに移動する。cd /srv/www
で、ここで先に作った、virtualenvの環境を移動させようかと思ったけど、まだあんまり理解してないし、 そもそも、Herokuにデプロイしてうまくいってない環境を移動してもしょうがないので、あらためて作る事に。virtualenvの環境から抜ける。抜けずにやろうとしたけどなんかうまくいかず。 virtualenvの環境から抜けるには以下。
deactivate
ちなみに、再度入る時はcdでvenvに戻って以下(あってるかわからないが、これで入れる)source venv/bin/activate
virtualenvの環境にdjangoをインストールしていたが、通常の環境にはいれてないので、再度インストール
sudo pip install django
あらためて、Djangoのプロジェクトを作成する。
sudo django-admin.py startproject portfolio .
WSGIの設定をする為の事前準備
cd /srv/www/portfolio
sudo mkdir apache
cd apache
sudo vi django.wsgi
viエディタで以下を記入する。
import os import sys #path = '/srv/www' #if path not in sys.path: # sys.path.insert(0, '/srv/www') sys.path.append('/srv/www') sys.path.append('/srv/www/portfolio') os.environ['DJANGO_SETTINGS_MODULE'] = 'portfolio.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
38.Apachの設定
sudo vi /etc/apache2/sites-available/portfolio.conf
<VirtualHost *:80> ServerName 192.168.33.10 DocumentRoot /srv/www/portfolio <Directory /srv/www/portfolio> Order allow,deny Allow from all </Directory> WSGIDaemonProcess portfolio.djangoserver processes=2 threads=15 display-name=%{GROUP} WSGIProcessGroup portfolio.djangoserver WSGIScriptAlias / /srv/www/portfolio/apache/django.wsgi </VirtualHost>
ここで、一旦、IPアドレスが必要になったので、新規ウィンドウでターミナルをたてて、 Vagrantfileをviでひらいて、 IPアドレスで接続できるように編集する。
# config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "private_network", ip: "192.168.33.10"
39.設定を有効化する。
sudo a2ensite portfolio sudo /etc/init.d/apache2 restart
とここまでやったが、うまくいかず。原因は、複数あるので特定が難しく再チャレンジする事に、 現在わかっているのは、設定ファイル名とプロジェクトのファイル名でスペルミスがあったという事。
ただ、だいぶ意味がわかってきたので。 次回、もっとコンパクトに最初から再チャレンジしようと思います。 いらない作業が結構あったのと、学習目的としてと環境構築として必要な構成を共存させてしまっていたので、 その辺りは、次回はBox別に構築しようかと思います。
今回の学習で参考にしたサイト以下
- Ubuntu 14.04 で Django アプリケーションを Heroku にデプロイする手順 | dreamin'up4u
- H2 Database EngineにPythonから接続する(psycopg使用) - Symfoware
- 今日のPython: VIRTUALENV について
- Python - virtualenvとは? - Qiita
- Ubuntu10.10にyum(ヤム)をインストールする - 大人になったら肺呼吸
- Debian系に、パッケージの説明文を見るためだけにyumを入れる。 | smokycat.info
- PYTHONでWEB開発: Django実践チュートリアル(サーバー編)DjangoをUbuntu,Apache, mod_wsgiで動かしてみる
- Debian -- Details of package libapache2-mod-wsgi in sid
- Pythonの仮想環境を構築できるvirtualenvを使ってみる - Qiita
- VirtualBox - MacOS XでVagrantにCentOS入れ、Railsアプリ制作、Heroku公開 vol.04 - Qiita
- Apache2 on ubuntu で a2ensite すると does not exist と言われるときの対処法 - Qiita
- Vagrantで作った仮想マシンを簡単に共有できる「Vagrant Share」を使ってみる - さくらのナレッジ
Django開発環境構築
Django開発環境構築メモ
色々調べた結果、下記のブログが非常に分かりやすかったので、その通りに実行することに。 Ubuntu 14.04 で Django アプリケーションを Heroku にデプロイする手順 | dreamin'up4u
で、pip install django-toolbeltを実行した時点で、エラーが返ってきた。
./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory
#include <Python.h>
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1"
psycopgが無いと言われているので、psycopgのインストールをする事に。
インストール方法は下記ブログに記載されている。
H2 Database EngineにPythonから接続する(psycopg使用) - Symfoware
で無事に解決した。
Django 環境構築メモをしながらRuby on RalisとDjangoの初学者における敷居について考えた
とりあえず、これはあの時何やったっけ?ってよくなるので、環境構築時のメモですが、 構築しながら、プログラムが初心者にとってハードルになる部分について思ったことを つらつら書いています。
あまり、人の役に立つのかわかりません。そのうち、ちゃんと理解できるようになったら、丁寧に書きたいと思います。(希望)
まず、はじめに何がしたいか? PythonでのWebアプリケーションの開発。何を作りたいか?ポートフォリオシステムを作る。(できるだけシンプルな)
そこで、Pythonで開発環境を構築しようとしている。←今ここ。
で色々調べていると、DjangoやらVartialBOXやら、Vagrantなどのキーワードが出てきて、調べながら実施。
Python3系で開発、Djangoのフレームワークを使って開発。それを、仮想OS上で実装、Vagrantつかって、Ubuntuに構築?という解釈でよいのか?
調べていて思ったのは、Ruby on RailsとPaythonのDjangoどちらも初学者の私にとって、それでもPaythonを利用する選択肢をしているのは、解析系を主にしたいからだが、Ruby on Railsの方が初学者にまだ敷居が低いと感じるのは、優秀なチュートリアルというコンテンツがあるからだと思う。
もう、PaythonのDjangoのチュートリアルコンテンツは、最初の時点ですでにDjangoはインストール済みとして進めますとあるように、前提がそもそも、敷居が少し上を対象に書かれているのに対し、Ruby on Railsは全くの開発初心者含めたチュートリアルになっていて、変な端折りがない。丁寧な作りだからだと感じた。
ただし、おしいのは、あのコンテンツができてから時間がたち、バージョン違いによる問題から初心者に少し、敷居があがっている。(Ruby on Railsのチュートリアル内においても、その問題にはふれており、検索して開発者は問題を解決するものだということで、その方法にも触れられている点が良い)
問題なのは、日本語ドキュメントが少ない点。とくに、最新のバージョンについての環境構築は、これから始める人でなければブログにもUPされないので、これから始める人口が世界にくらべて日本だけを対象にしたら圧倒的に少ない。
当たり前だが、母数がそもそも違うので仕方がない。そのために、英語が読めることが重要。
なんてことを考えていたら、横道それてしまって、環境構築がまだ終わっていない。w
その後、調べたら、Djangoチュートリアルとは別にインストールの記事が見つかった。 分別されてかかれていたのね。(追記)
UnityChanEscapeは諦めた。
Unityちゃんでゲームを作ろうのPart2で、Sample Assetsをインポートでハマっていた。 答えは、Standard Assetsという名前に変わっていたというのが理由だったのだが、
最初に結論から書くと、Unityちゃんでゲームを作ろうのPart2に関しては、飛ばすことにした。 というのも、何とか、Sample Assetsの問題をクリアして、motto2フォルダーにあるステージを 配置してカメラを調整という段になり、説明文を読むと、なんか嫌なことが書かれていた。
今回は事前にステージのプレハブを用意しました。ちなみに、このステージはSample Assetsの部品でできており、ステージ自体はSample Assetsの部品を含まない状態で提供しています。アセットストアからSample Assetsをインポートすることで、ファイルIDを基に参照関係が整理されてステージが再現されます。
勘の良い皆さんならお気づきでしょう。Sample AssetsはStandard Assetsへと名前を変えています。 参照関係ね、ふふん。嫌な予感しかしないぜ。と思って、早速ステージを配置した所、ドンピシャ! はいはい、知ってましたよ。
新しい名前で、関連付けし直さないと多分ダメだろうという事は、予感してましたよ。 という事で、Stageの中を覗くと、platform_prototype_2×1×2というような部品がズラーッと並んでおり、Standard Assetsを覗きに行くと。JoinOutherPrototype02×01×02というような名前がズラーッとしていました。
で、一個一個、丁寧にドラッグアンドドロップしながら、(これ何かもっと効率的な方法無いのかな?当然、初学者の私は知らない事が多いので、知らないだけで本当はもっと違う方法でできるのでは?)という葛藤をしながら、ひとつひとつ丁寧に入れ。
全部入れ終えたのですが、?何かが違う。 あきらかに、最初の点線でかかえれていた形になっていない。
という所で、無駄に時間かかりそう。まずは、動くものを早く作って体感したいのが今の目的。 と、割り切ってここはパスする事に。(簡単に言うと、この作業でうまくいかなかったので心が折れたw)
さ、次の2Dやろーっと。
UniytChanEscape Unitychanでゲームを作ろう!でハマってる事。
Unity5がリリースされたら困る初心者の嘆き
Unity5がリリースされたのは良い事なんだろうが、Unity5で説明されている良書が出る前に 購入しているUnity4系で書かれている参考書を片手に学習していると、些細な事でつまづく。
ググっても、圧倒的にUnity4での説明が多いので、これまた些細な事でつまづく。 初心者が学習するのは、少し前のバージョン環境で豊富なドキュメント類(先人の遺産)で 学習した方がいいのだろうが、新しいバージョンが出ているにもかかわらず、少し前の バージョンで環境構築とか、さらに初心者には厳しい。
こういうものの積み重ねが、初心者の入り口を閉ざしているので、独学の厳しい所なんだろう。 と、愚痴からハジまったのは何故かというと。
ハマっているからだ。もう今日は1日中、いろいろな事をして、全ての環境でエラー出まくりで ちっとも面白くない!Unityだけでなく、PythonやらOpencvやらをいじっているのだが、全く うまくいかない。
こういう日は、諦めて他の事しようとUnityを始めた。かつ、もう本に書かれている通り、一旦 素直に学習しようとした矢先、本に書かれている事すらできない始末。
これの、Part2でいきなりつまづいた。何でつまづいたかというと、Assets Storeで「Sample Assets (beta)」をダウンロードするように書かれているのだが、その「Sample Assets (beta)」が見つからない。
もう、こんな事で引っかかる。で、ググりまくった結果。 「Standard Assets」Asset Store という名前にかわり、中身も少しだけ変更あるらしい。
しかし、もっと体系的に学びたいんだが、独学で体系的にUnityでのゲーム作り学べる。サイトやら勉強会やらって無料のものは無いのかな。
Ruby on RailsのチュートリアルみたいなUnityチュートリアルが欲しい。
何気なくOpencv環境構築
そもそもOpencvって何だ?
っていう疑問から始まった。最近なんとなく、Pythonを弄りだしている。 本当になんとなく、Python自体は、結構前から気になっていた言語で、一度本格的に勉強を始めた時期もあった。 なにせ、オライリーの「初めてのPython 第2版 2008年6月16日 初版第6刷発行を持っている。 しかも、久しぶりに本を読んだらちゃんと、付箋まではってある始末。
うーむ、使わないものは忘れるのも早い。あんな分厚い本を真面目に勉強したにもかかわらず、もったいない。 という状態なので、もうほとんど初心者状態。 にも関わらず、無謀にもPython熱が再燃してきて、地道に取り組もうとPythonを弄り始め、データ分析系の 環境構築を本を見ながら、取り組む事初っ端からつまづく。
なんたって、OS Xのyosemite でgccがインストールできない。なんで???
なんか調べたら、OS Xのyosemiteではllvmgccに移行しつつありとかなんとかの記事を見つけて、 そもそも、LLVMって何?gccって何?となり、ググりまくってました。
もちろん、調べ方の基本は「LLVMとは」ですよね。何を今更的なことをわざわざ書いているかと言うと、 こんな初心者の悪戦苦闘ブログを見る人は、同じく初心者でしょう。で、結構初心者にとって辛いのは、 もうみんな当たり前でしょ?的なことってあんまり書いてくれないのですよね。
なんで、私は書く。そう誰が何と言おうと書く。 まぁ、それは置いといて、LLVMについて調べたら、
LLVMとgcc
LLVMとはコンパイラ基盤の一つです。中間言語を介して、対象のアーキテクチャに最適なマシン語へ変換することができます。中間 言語を介して実行されるため、JavaVMのような仮想マシンと比較されることも多いようですが、厳密な意味で仮想マシンとは別物と いう認識で良いようです。 http://dev.classmethod.jp/references/llvm-clang-ios8-introduction/
と上記のページで言うてた。半分わかったような、わからんような。まぁ、英語からマシン語に変換するもののオープンソース的な何かなのかな?くらいでとりあえずスルー。ただし、この辺りの基盤系って、個人的にはすごい興味あるので、後で振り返って調べる。 ただし、今はスルー。
で、gccも調べる。結局わかったのは、gccも、LLVMもコンパイル。というくらい。で、LLVM-gccとはなんぞや。というと、gccと少し互換をもたせたLLVMという感じでしょうか?親切な人がいたら是非教えてもらいたい。が、これもこの辺りでスルー。 なにせ、今の目的ではないから。ちなみに、gccより、LLVMのがコンパイル早いらしい。で、LLVM-gccはその中間くらい。gccはGPLライセンスで商用利用的に怖いので、BSDライセンス似たOSIライセンスであるLLVMにMACは移行をしているということなのかな。というくらい。
さて、Opencvからだいぶ離れてしまったが、gccのインストールを諦めて、他の方法で環境構築できないかを考える事に、、、 というか、調べる事に。 で、GUIで簡単に環境構築できるCanopyというものを発見。 Enthought Scientific Computing Solutionsここからダウンロードできる。で、こいつをインストール後に、Opnecv環境をターミナルのipython Notebookでいじれる環境を作るというブログを見つけ、進めるも、途中でエラー。たぶん、Freeライセンスだとダメなんだろう。くらいに思って、違う方法を検討する事にしたところで、ふと気がついた。そもそも、「Opencv」って何だ?って、、、 qiita.com
そこで、「Opencv」を調べ始めたところ、CVはComputer Visionの略っぽい。で、大雑把に平たく言うと、FreeライセンスのCVのライブラリ集という感じだろうか、細かい事は、こちらのブログに詳しく書いてあったので、読んでみてください。 【シリーズ】「python,OpenCVを用いたCVプログラミング」 第1回:背景と主旨説明 | DERiVE コンピュータビジョン ブログ & メルマガ
という事で、今流行りのDeep Learningなどもこういったライブラリ使って研究できちゃうのかな。という事で、触ってみたい! という意欲から、環境を構築する事にした。
で、なんやかんやで(今夜中の2時くらいになり、集中力がなくなってきたので、続きはまた今度詳しく書くとして) 以下のブログ見ながらセットアップした。Pynevで2系と3系が混在できるとか、また次の機会に書く。が、私でも とうとう、ipython notebookで いじれる環境ができたので、ちょっと満足。さ、Opencvで遊ぶぞー! qiita.com