2013年1月27日日曜日

ServersMan@VPS サーバ構築 (Django版)

ServersMan@VPS Entryプランでサーバを構築して、Djangoを使うまでのアレコレをスクリプトに纏めたので、公開しておきます。

apt-get でインストールできないパッケージがイロイロあるので、ソースからビルドしたり..
結構、面倒でした。

1.環境

OS : Ubuntu10.04 (32bit)

2.概要

主な流れは、次の通り。

  • Serversman を削除
  • iptables で、ファイヤーウォール設定
  • apt-get で mosh denyhosts mysql-server などをインストール
  • Python2.7
  • pip
  • Django MySQL-python
  • MeCab mecab-ipadic mecab-python (形態素解析できます)
  • mod_wsgi
  • /etc/apache2/httpd.conf に wsgi の設定

利用する場合は、<IPアドレス> と <ユーザ名> を書きかえてください。

3.手順

-- ここから --
※ L:はローカル(PC)、R:はリモート(VPS) です。

L:$ ssh root@<IPアドレス> -p 3843
> パスワード入力

R:# vi setup.sh
--
#!/bin/sh
/etc/init.d/smadmd stop
dpkg -P smadmin
dpkg -P serversman
### iptables ###
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 3843 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 60000:61000 -j ACCEPT
iptables-save > /etc/iptables.rules
fl="/etc/network/if-pre-up.d/iptables_start"
cat > $fl <<_EOF_
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.rules
exit 0
_EOF_
chmod 755 $fl
### Install PKG ###
sed -i".bak" -e 's/archive.ubuntu.com/jp.archive.ubuntu.com/g' /etc/apt/sources.list
apt-get update
apt-get install python-software-properties
add-apt-repository ppa:keithw/mosh
apt-get update
apt-get upgrade
apt-get install mosh language-pack-ja denyhosts phpmyadmin mysql-server gcc zlib1g-dev g++ apache2-dev
### Python2.7 ###
# apt-get install gcc zlib1g-dev
cd /usr/local/src
wget http://python.org/ftp/python/2.7/Python-2.7.tar.bz2
tar jxvf Python-2.7.tar.bz2
cd Python-2.7
./configure --prefix=/usr/local
make
make install
### pip ###
cd /usr/local/src
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar xzvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
/usr/local/bin/python2.7 setup.py install
easy_install pip
pip install yolk Django==1.3 MySQL-python
### MeCab ###
# apt-get install g++
cd /usr/local/src
wget http://mecab.googlecode.com/files/mecab-0.99.tar.gz
tar zxvf mecab-0.99.tar.gz
cd mecab-0.99/
./configure --enable-utf8-only
make
make install
ldconfig
cd /usr/local/src
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801/
./configure --with-charset=utf8
make
make install
cd /usr/local/src
wget http://mecab.googlecode.com/files/mecab-python-0.99.tar.gz
tar zxvf mecab-python-0.99.tar.gz
cd mecab-python-0.99/
python setup.py build
python setup.py install
### mod_wsgi ###
# apt-get install apache2-dev
cd /usr/local/src
wget https://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
tar xzf mod_wsgi-3.4.tar.gz
cd mod_wsgi-3.4
./configure --with-python=/usr/local/bin/python2.7 --with-apxs=/usr/bin/apxs2
make
make install
fl="/etc/apache2/httpd.conf"
cat > $fl <<_EOF_
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
WSGIScriptAliasMatch / /home/akira/django/django.wsgi
WSGIScriptAliasMatch ^/site([^/]+) /home/site\$1/django/django.wsgi
_EOF_
a2enmod userdir
mkdir /etc/skel/public_html
/etc/init.d/apache2 restart
### USER ###
adduser <ユーザ名> --ingroup sudo
usermod -L root
##
cd
rm setup.sh
--
R:# sh setup.sh
R:# exit

L:$ mosh <ユーザ名>@<IPアドレス> -p 3843
R:$ mkdir django
R:$ cd ~/django
R:$ vi django.wsgi
--
import os, sys, site
site.addsitedir(os.path.dirname(__file__))
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
--

2013年1月10日木曜日

ServersMan@VPS sshfs で リモートマウント

ふと、「ssh でサーバ(Ubuntu10.04)のディレクトリをマウントする方法は無いのか??」と思い、Google で検索してみると、みごとにヒット。

クライアント側(Xubuntu12.04)に sshfs をインストールするだけでした。
すばらしい。

1.インストール (クライアント側)

$ sudo apt-get install sshfs

2.マウント用ディレクトリを作る

$ mkdir <マウントポイント>

<マウントポイント> : 任意のディレクトリ名

3.マウント

$ sshfs [-p <接続ポート>] [アカウント@]<サーバ>:[ディレクトリ] <マウントポイント>

<サーバ> の後ろの ":" を忘れないように。

4.アンマウント

$ fusermount -u <マウントポイント>

これさえあれば、FTP も必要無いし、クライアント側の環境でプログラムも書けるし、イッキに便利になると思う。
とりあえず、一歩前進。

参考
http://l-w-i.net/t/ubuntu/sshfs_001.txt

2013年1月5日土曜日

ServersMan@VPS Python2.7を使う(その2)

Ubuntu10.04 で、Python2.7とDjango1.3を使うのに、試行錯誤中。

Django の公式ドキュメントには、
Apache と mod_wsgi の組み合わせは、推奨の Django の実運用環境です。
と、あります。

Django1.3 の指定は、django.wsgi に記述することで OK だけど、Python のバージョンを指定する方法が分からない..

WSGI のドキュメントには、WSGIPythonHome で指定できるように書かれているが、これはダメでした。

で、なんとか解決できそうな目処がついたので、メモっておきます。

1.Python2.7 インストール

Python 本体は、/usr/local に入れました。

# apt-get install gcc zlib1g-dev
# cd /usr/local/src
# wget http://python.org/ftp/python/2.7/Python-2.7.tar.bz2
# tar jxvf Python-2.7.tar.bz2
# cd Python-2.7
# ./configure --prefix=/usr/local
# make
# make install

2.mod_wsgi インストール

apt-get install libapache2-mod-wsgi でインストールすると、システムで使っている
Python2.6.5 が適用されるので、ソースから make しました。

# apt-get install apache2-dev
# cd /usr/local/src
# wget https://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
# tar xzf mod_wsgi-3.4.tar.gz
# cd mod_wsgi-3.4
# ./configure --with-python=/usr/local/bin/python2.7 --with-apxs=/usr/bin/apxs2
# make
# make install

こちらに、入りました。
/usr/lib/apache2/modules

モジュールを有効にします。
# vi /etc/apache2/httpd.conf
--
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
WSGIScriptAlias / /home/USERNAME/django/django.wsgi
--
# /etc/init.d/apache2 restart

※ とりあえず、ユーザディレクトリ(/home/..)で動作を確認。

3.virtualenv インストール

Django を、ユーザのディレクトリに入れる為に、virtualenv をインストール。

$ cd
$ mkdir src
$ cd ~/src
$ wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.6.4.tar.gz
$ tar xzf virtualenv-1.6.4.tar.gz
$ cd virtualenv-1.6.4
$ python virtualenv.py --python=/usr/local/bin/python2.7 ~/mypython

アクティブにします。
$ source ~/mypython/bin/activate

4.Django1.3 インストール

$ pip install Django==1.3

5.django.wsgi を作る

$ cd
$ mkdir django
$ cd django
$ vi django.wsgi
--
import os, sys, site
site.addsitedir('/home/USERNAME/django')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
sys.path.append('/home/USERNAME/mypython/lib/python2.7/site-packages')
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
--

※ site.addsitedir でプロジェクトのディレクトリーを、sys.path.append でDjango本体のパスを指定しています。

6.Django プロジェクトを作る。

ここからは、チュートリアルを参考に。

$ cd ~/django
$ django-admin.py startproject mysite
$ cd mysite
$ python manage.py startapp polls

で、一応、動作確認まで、こぎつけることが出来ました。

2013年1月1日火曜日

ServersMan@VPS Python2.7を使う

Ubuntu10.04に入っている Python は、バージョン 2.6.5 。
いつも使っているバージョン(2.7)を使いたいので、ユーザのホームディレクトリに入れておきます。

1.ライブラリ(gcc,zlib)を入れておきます。

$ sudo apt-get install gcc zlib1g-dev

2.Python2.7 インストール

$ cd
$ mkdir local
$ mkdir src
$ cd ~/src
$ wget http://python.org/ftp/python/2.7/Python-2.7.tar.bz2
$ tar jxvf Python-2.7.tar.bz2
$ cd Python-2.7
$ ./configure --prefix=$HOME/local
$ make
$ make install

3.Virtualenv インストール

$ cd ~/src
$ wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.6.4.tar.gz
$ tar xzf virtualenv-1.6.4.tar.gz
$ cd virtualenv-1.6.4
$ python virtualenv.py --python=$HOME/local/bin/python2.7 ~/mypython
$ source ~/mypython/bin/activate

4.Django1.3 インストール

ついでに、Django1.3 も入れておきましょう。

$ pip install Django==1.3
$ pip install yolk
$ yolk -l

参考

https://plus.google.com/105835326498095858930/posts/8QFA2vPcMAR