サーバー構築 djangoの環境設定
移転しました。
RH5にDjangoを設定する必要があったので、ここではその際に行った様々な手順について記載しておく。
SSH接続制限
WEBサーバー側でのインストール。
アクセスできるサーバーを制限する。
hosts.allowから設定しないと、アクセスできなくなってしまう可能性があるため注意。
# vi /etc/hosts.allow ----- ALL : 127.0.0.1 ALL : 192.168.0.1 ALL : 192.168.0. ALL : XXX.XXX.XXX.XXX ----- # vi /etc/hosts.deny ----- ALL : ALL -----
Pythonインストール
参考URL
http://techteam.wordpress.com/category/linux/
Djangoを使用するため、Pythonをインストール。
※ RH5のデフォは、python2.4なため2.5をインストールする。
$ wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz $ tar zxvf Python-2.5.2.tgz $ cd Python-2.5.2 zipimport.ZipImportError: can't decompress data; zlib not available が発生するため、--zlibを指定 $ ./configure --prefix=/usr/local/python252 --zlib=/usr/local/include $ make $ sudo make install $ ln -s /usr/local/python252 /usr/local/python $ sudo ln -s /usr/local/python252 /usr/local/python 既存のpython2.4を削除しようと思ったが、あまりにも多くのライブラリが 参照しているようだったので、気がすすまないがprofileでPATHを指定して python2.5を使用するよう変更 $ sudo vi /etc/profile ----- PATH=/usr/local/python/bin:$PATH ----- $ wget http://peak.telecommunity.com/dist/ez_setup.py $ sudo /usr/local/python/bin/python ez_setup.py ここで、上記zlibエラー発生。--zlibオプションで回避。
Django インストール
WEBサーバー側でのインストール。
$ mkdir src $ cd src $ svn co http://code.djangoproject.com/svn/django/trunk/ $ mv trunk django $ cd django $ sudo python setup.py install $ cd ~ $ mkdir work $ cd work $ django-admin.py startproject mysite $ cd mysite ↓↓↓↓ 以下のように、自分のIPアドレスを指定しないと、外からアクセスできないので注意。 $ python manage.py runserver 192.168.0.2:9050
上記を行った後に、ブラウザで動作確認。
http://192.168.0.2:9050
memcachedのインストール
WEBサーバー側でのインストール。
Djangoでmemchachedを使う時があるため、インストールしておく。
yumでインストールするとpython2.4用のもの?がはいってしまうようなので、
ソースからインストール
libevent インストール
memcachedをインストールしようとすると以下のようなエラーがでる。
libeventディレクトリ指定してもむりっぽ。。不思議。
checking for libevent directory... configure: error: libevent is required. You can get it from http://www.monkey.org/~provos/libevent/ If it's already installed, specify its path using --with-libevent=/dir/
このためlibeventをソースからインストール
$ wget http://www.monkey.org/~provos/libevent-1.4.6-stable.tar.gz $ tar zxvf libevent-1.4.6-stable.tar.gz $ cd libevent-1.4.6-stable $ ./configure $ make $ sudo make install
memcached
$ wget http://danga.com/memcached/dist/memcached-1.2.6.tar.gz $ tar zxvf memcached-1.2.6.tar.gz $ cd memcached-1.2.6 $ ./configure $ make $ sudo make install
cmemcache
Djangoとmemcache連携用にインストール
cmemcacheに必要になるlibmemcacheをパッチをあててインストール $ wget http://people.freebsd.org/~seanc/libmemcache/libmemcache-1.4.0.rc2.tar.bz2 $ tar jxvf libmemcache-1.4.0.rc2.tar.bz2 $ cd libmemcache-1.4.0 $ wget http://gijsbert.org/downloads/cmemcache/libmemcache-1.4.0.rc2.patch $ patch -p2 -d . -E < libmemcache-1.4.0.rc2.patch $ make $ sudo make install cmemcache インストール $ wget http://gijsbert.org/downloads/cmemcache/cmemcache-0.95.tar.bz2 $ tar jxvf cmemcache-0.95.tar.bz2 $ cd cmemcache-0.95 $ sudo python setup.py install
自動起動設定
起動スクリプト手に入れる。ほかにたぶんもっと良い方法があるはず。。。
$ sudo yum install memcached $ cp /etc/rc.d/init.d/memcached ~ $ sudo yum remove memcached $ cd $ vi memcached ----- ■以下をstart() 関数の前あたりに以下追加 export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH ■ memcached の実行パスを /usr/local/bin/memcached に変更 daemon --pidfile /var/run/memcached/memcached.pid /usr/local/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS : : killproc -p /var/run/memcached/memcached.pid /usr/local/bin/memcached : : ----- $ sudo mkdir /var/run/memcached $ sudo chkconfig --add memcached $ sudo chkconfig memcached on $ sudo chkconfig --list memcached ← 3,4,5でonになっていることを確認。 memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off とりあえず起動しておく $ /etc/rc.d/init.d/memcached start
Triton インストール
DBサーバー側でのインストール。
既存MYSQLのアンインストール
$ sudo rpm -q mysql mysql-5.0.45-7.el5 ←存在確認 $ sudo rpm -e --allmatches --nodeps mysql --allmatces PACKAGE_NAME に一致するすべてのバージョンのパッケージを削除する。 --nodeps パッケージをアンインストールする前に依存性のチェックをしない。 $ sudo rpm -e mysql-server-5.0.45-7.el5 $
Tritonnインストール
まずはRPM取得。やっぱRPMは便利でふ。
$ wget http://globalbase.dl.sourceforge.jp/tritonn/31596/MySQL-client-5.0.51a-tritonn.1.0.10.i386.rpm $ wget http://jaist.dl.sourceforge.jp/tritonn/31596/MySQL-server-5.0.51a-tritonn.1.0.10.i386.rpm $ wget http://keihanna.dl.sourceforge.jp/tritonn/31596/MySQL-shared-5.0.51a-tritonn.1.0.10.i386.rpm $ wget http://globalbase.dl.sourceforge.jp/tritonn/31596/mecab-0.97-tritonn.1.0.10.i386.rpm $ wget http://globalbase.dl.sourceforge.jp/tritonn/31596/mecab-ipadic-2.7.0.20070801-tritonn.1.0.10.i386.rpm $ wget http://osdn.dl.sourceforge.jp/tritonn/31596/senna-1.1.3-tritonn.1.0.10.i386.rpm
そしてインストール。
sudo rpm -i mecab-0.97-tritonn.1.0.10.i386.rpm sudo rpm -i mecab-ipadic-2.7.0.20070801-tritonn.1.0.10.i386.rpm sudo rpm -i senna-1.1.3-tritonn.1.0.10.i386.rpm ↓こいつは、http://rpm.pbone.net/ からさがしだした。入れないとMySQLインストールがうまくいかない。 sudo rpm -i MySQL-devel-community-5.0.51a-0.rhel5.i386.rpm sudo rpm -i MySQL-shared-5.0.51a-tritonn.1.0.10.i386.rpm sudo rpm -i MySQL-client-5.0.51a-tritonn.1.0.10.i386.rpm sudo rpm -i MySQL-server-5.0.51a-tritonn.1.0.10.i386.rpm
自動起動設定の確認
3,4,5がonになってればOK # chkconfig --list mysql mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ROOTのパスワード設定
$ mysql -u root > SET PASSWORD FOR root@localhost=PASSWORD('hoge');
設定ファイル作成
# cp -ap /usr/share/mysql/my-huge.cnf /etc/my.cnf * my-huge.cnf メモリ1〜2G環境向け * my-large.cnf 512MB前後 * my-medium.cnf 64MB前後 # vi /etc/my.cnf ----- [mysqld] default-character-set=utf8 character_set_server=utf8 skip-character-set-client-handshake -----
以下ページを参考に、Tritonn動作確認して終了
http://qwik.jp/tritonn/basictutorial.html
MySQL_Pythonのインストール
WEBサーバー側でのインストール
PythonとMySQLをつなぐためのソースをインストール。
tritonnをインストールしてもmysql_configが入ってないため、mysql-develをインストール $ wget ftp://mirror.switch.ch/pool/1/mirror/mysql/Downloads/MySQL-5.0/MySQL-devel-community-5.0.51a-0.rhel5.i386.rpm $ sudo rpm -i MySQL-devel-community-5.0.51a-0.rhel5.i386.rpm eazy_installを使ってMySQL_Pythonをインストール $ yum -y install python-setuptools $ sudo easy_install-2.5 -U -Z MySQL-Python
DB作成
$ mysql -u root -p > create database hogehoge; ユーザー作成(WEBサーバーからのアクセス用) > grant all on hogehoge.* to hogehoge@192.168.0.1; パスワード設定(WEBサーバーからのアクセス用) > set password for hogehoge@localhost = PASSWORD('foo'); > quit mysql -u hogehoge -p hogehoge ← アクセスできることを確認
Lighttpd + fastcgi インストール
RH5でyumからinstallすると、lighttpd1.4.18が入ってしまい、バグがあるためssl接続時にサーバーが反応しなくなるというエラーが発生ため、最新のソースをsubversionから取得して入れる
fastcgi
flupをインストールしとく $ sudo easy_install-2.5 flup fastcgiインストール $ wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz $ tar zxvf fcgi-2.4.0.tar.gz $ cd fcgi-2.4.0 $ ./configure $ make $ sudo make install
Lighttpd インストール
参考URL
http://d.hatena.ne.jp/hacking_dubby/20080428/1209399682
1. 依存パッケージのインストール
lighttpd が依存するパッケージをいれとく $ sudo yum install pcre-devel $ sudo yum install bzip2-devel $ sudo yum install openssl-devel
入れないといかのようなエラーがでる。
configure: error: pcre-config not found, install the pcre-devel package and build with --without-pcre
configure: error: bzip2-headers and/or libs where not found, install them or build with --without-bzip2
2. lighttpd インストール
$ wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.bz2 $ tar jxvf lighttpd-1.4.19.tar.bz2 $ svn checkout svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x/ $ cd lighttpd-1.4.x $ cp -ap * ../lighttpd-1.4.19 $ cd ../lighttpd-1.4.19 $ ./configure --with-openssl --with-openssl-libs=/usr/lib --prefix=/usr/local/lighttpd1419 --with-pcre $ make $ sudo make install $ sudo ln -s lighttpd1419/ lighttpd $ sudo mkdir /usr/local/lighttpd/conf/ confファイルコピー $ sudo doc/lighttpd.conf /usr/local/lighttpd/conf/ 起動ファイルコピー $ sudo cp doc/rc.lighttpd.redhat /etc/rc.d/init.d/lighttpd $ vi /etc/rc.d/init.d/lighttpd ----- #if [ -z "$LIGHTTPD_CONF_PATH" ]; then LIGHTTPD_CONF_PATH="/usr/local/lighttpd/conf/lighttpd.conf" #fi lighttpd="/usr/local/lighttpd/sbin/lighttpd" ----- $ sudo /etc/rc.d/init.d/httpd stop apacheが再起動してしまわないように、止める $ sudo /sbin/chkconfig httpd off $ sudo /sbin/chkconfig lighttpd on $ sudo /sbin/chkconfig --list | grep lighttpd $ sudo /etc/rc.d/init.d/lighttpd start
lighttpd設定
$ vi /usr/local/lighttpd/conf/lighttpd.conf ----- server.document-root = "/home/www/hogehoge/" 以下のモジュールを、有効(#をはずす)化する。 server.modules = ( "mod_rewrite", : "mod_alias", ← alias用 "mod_access", : "mod_auth", ← BASIC認証用 : "mod_fastcgi", "mod_cgi", : : ) : : fastcgi.server = ( "/mysite.fcgi" => ( "main" => ( "host" => "192.168.0.2", "port" => 3033, "check-local" => "disable", ) ) ) alias.url = ( "/site_media/" => "/home/www/hogehoge/media/", ) url.rewrite-once = ( "^(/site_media/.*)$" => "$1", "^(/.*)$" => "/mysite.fcgi$1", ) ----- # /etc/rc.d/init.d/lighttpd start
動作確認
・fastcgiを起動しておく。
./manage.py runfcgi method=threaded host=192.168.0.2 port=3033 daemonize=false
URLにアクセス
BASIC認証の設定
参考URL
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/847lighttpdbasic.html
# htpasswd -c /etc/lighttpd/lighttpd.user.htpasswd secret New password: ←ユーザー認証用のパスワードを入力 Re-type new password: ←ユーザー認証用のパスワードを再入力 Adding password for user secret # vi /etc/lighttpd/lighttpd.conf ----- auth.backend = "htpasswd" auth.backend.htpasswd.userfile = "/etc/lighttpd/lighttpd.user.htpasswd" auth.require = ( "/" => ( "method" => "basic", "realm" => "Secret Zone", "require" => "valid-user" ) ) -----
DNS設定
参考URL
http://kajuhome.com/bind.shtml
ネームサーバ(bind)のインストール # yum install -y bind キャッシングサーバのインストール 1度問い合わせを行うと一定期間ローカルに記憶しておき(それがキャッシュ)ます。 従って、上位ネームサーバの軽減を行うことができます。 # yum -y install caching-nameserver # vi /etc/named.conf ----- options { directory "/var/named"; // query-source address * port 53; allow-query{ any; }; }; // // a caching only nameserver config // controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/rndc.key"; view "external" { match-clients { any; }; recursion no; zone "hogehoge.jp" { type master; file "hogehoge.com.wan"; allow-update { none; }; }; zone "XXX.XXX.XXX.in-addr.arpa" { type master; file "XXX.XXX.XXX.in-addr.arpa.db"; allow-update { none; }; }; }; ----- # vi /var/named/hogehoge.com.wan ----- $TTL 86400 @ IN SOA hogehoge.jp. root.hogehoge.jp.( 2007031400 ; serial 3600 ; refresh (1 hour) 900 ; retry (15 minutes) 604800 ; expire (1 week) 86400 ; negative (1 day) ) IN NS hogehoge.jp. IN MX 10 hogehoge.jp. IN A XXX.XXX.XXX.XXX hogeweb IN CNAME hogehoge.jp. www IN CNAME hogehoge.jp. ----- # vi /var/named/XXX.XXX.XXX.in-addr.arpa.db ----- TODO ----- ルートDNS情報を取得 # wget ftp://ftp.nic.ad.jp/internet/rs.internic.net/domain/named.root 取得したDNS情報を移動 # mv named.root /var/named/named.ca # vi /etc/resolv.conf ----- search hogehoge.jp nameserver 192.168.0.1 ----- # service named start # chkconfig named on
名づけてネットの設定
以下管理画面にアクセス
http://www.nadukete.net/
1. ネームサーバのIPアドレスの確認と変更 を選択
2. ネームサーバのIPアドレスの確認と変更画面で以下を指定後、実行を押す
・ネームサーバー名:name (これは任意)
・実施する操作:新規登録
3. IPアドレス1に XXX.XXX.XXX.XXXを指定し、実行
4. 汎用JPドメインネームサーバの確認と変更 を選択
5. 汎用JPドメインネームサーバの確認と変更画面上で、以下指定後、更新を押す
・ネームサーバ1:name.hogehoge.jp
・ネームサーバ2:削除!!!!
6. 画面の指示に従う。
→ 72時間以内にドメインきりかえ完了。
Postfixの設定
Sendmailがデフォで起動していたので、おとす。 Postfixの方が扱いやすいから。自分はpostfixインストール。 # chkconfig sendmail off # chkconfig sendmail --list sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off # service sendmail stop postfix インストール # yum -y install postfix # chkconfig postfix on # chkconfig postfix --list postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off # service postfix start