読者です 読者をやめる 読者になる 読者になる

さくらVPSでDjangoを動かす

Python Django MySQL

さくらVPSを使ってDjangoを動かすまでのログ。と言っても、基本的には真っ白なCentOSの環境構築と全く同じです。

基本設定

CentOSをサーバーとして活用するための基本的な設定 - さくらインターネット創業日記
基本的なセキュリティの設定は上記のエントリを参考に行いました。
ただし、3のiptablesの設定に関しては、ssh接続するIPアドレスが定まらないのでどこからでも接続できるようにXXXXポートを割り当てたしたのと、Djangoの開発サーバをYYYYポートを使って起動実験ができるよう以下のように設定しました。XXXXとYYYYはwell-known-portで使われていない番号を好きなように設定して下さい。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport XXXX -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport YYYY -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

全部の設定が終わったら、ついでにyumをアップデートしておきましょう。

$ sudo yum update

とりあえずここらで一旦再起動。

$ # VPSコントロールパネルの「再起動」ボタンを押すか、
$ sudo reboot

再起動が完了するまでしばし休憩(1分くらい)。

Apacheをインストール

$ sudo yum -y install httpd.x86_64 system-config-httpd.noarch httpd-devel.x86_64
$ sudo /sbin/chkconfig httpd on # サーバ起動時にApacheも自動的に起動
$ sudo /sbin/service httpd start # さっそくApachを起動

ここでブラウザを使ってサーバにアクセスして下のようなページが表示されればOK
f:id:yuku_t:20101004000454j:image

MySQLをインストール

今回は使わないけどMySQLを使う予定なのでインストールしときました

$ sudo yum -y install mysql-server mysql-devel
$ sudo /sbin/chkconfig mysqld on # サーバ起動時にMySQLも自動的に起動
$ sudo /sbin/service mysqld start # さっそくMySQLを起動

mysql-develがないとmysql-pythonでインストールされるMySQLdbのインポートに失敗します。

Python関連

$ sudo yum -y install python-devel python-setuptools
$ sudo easy_install mysql-python

python-develがないと、mysql-pythonでインストールされるMySQLdbのインポートに失敗します。

Django

最後にDjangoをインストールします。easy_installとか使ってもいいけど、バージョンのこととか面倒なので直接入れました。

$ wget http://www.djangoproject.com/download/1.1.2/tarball/
$ tar xzvf Django-1.1.2.tar.gz
$ cd Django-1.1.2
$ sudo python setup.py install

起動実験

$ django-admin.py startproject testproject
$ cd testproject
$ python manage.py runserver IPアドレス:YYYY

YYYYはiptablesに設定したポート番号です。ブラウザでアクセスして以下のように表示されればOK
f:id:yuku_t:20101004000455j:image

他にインストールしたもの

git

/etc/yum.repos.d/CentOS-Base.repoの末尾に以下を追加

[dag]
name=Dag RPM Repository for Redhat EL5
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

これでインストールできる

$ sudo yum -y install git
zsh
$ sudo yum -y install zsh