Debianで開発環境を整える

/web/server-side

Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。

Sledge とか Tomcat とかって話じゃなくて、単に使えるようにするまでの話。前回の記事で etch のインストールまではしたので、その続き。

で、しばらくは root で作業する。ちなみにLinux等のCUIの場合、root だと、CUIの左っかわが「アカウント名@ホスト名:カレントディレクトリ#」になってる。通常アカウントだと「$」ね。

root は設定ファイル弄ったりapache再起動したりとかくらいで、なるべく root で作業しないほうが良いんだそうだ。そりゃそうだ。

  1. sources.list
  2. Debianを最新の状態にする
  3. 時刻同期の自動化
  4. 必要なソフトウェアをインストール
  5. ネットワーク設定
  6. SSHの設定
  7. FTPの設定
  8. ユーザとグループ

sources.list

CDブートしたためか、更新情報をCD-ROMから取得する設定になっている。なので初めに、適当なエディタで「/etc/apt/sorces.list」を編集する。

  1. # vi /etc/apt/sorces.list

インストール時に指定したミラーサーバが記述されている。「cdrom:」などとなっている行をコメントアウトして保存。

Debianを最新の状態にする

  1. # apt-get update
  2. # apt-get check
  3. # apt-get upgrade

更新情報を取得し、依存関係をチェックし、アップグレードする ...のだけど、update時にエラーが出た。

  1. W: GPG error: http://ftp.jp.debian.org etch Release: Unknown error executing gpgv
  2. W: GPG error: http://security.debian.org etch/updates Release: Unknown error executing gpgv
  3. W: You may want to run apt-get update to correct these problems

このまま使用しても問題はないけど、なんか気持ち悪いので消してみよう。USING_ETCH 「使ってみたDebian Etch(以下略)」 ...によると、「時間が同期されれば解消される」とのこと。まずタイムゾーンを設定しよう

  1. # tzconfig

続けて、外部サーバーによる時刻同期を試みる。

  1. # apt-get install ntpdate
  2. # ntpdate ntp.ring.gr.jp

これでエラーは消えた。

時刻同期の自動化

「このままでは再起動すると時刻設定は失われてしまう」とのこと。ついでなので自動設定を行うようにしておく。

この方法も USING_ETCH にあった。ntpdate の設定ファイルは「/etc/default/ntpdate」にあり、「/etc/ntp.conf」の設定を参照するようになっているので、ここに参照するサーバを書いておく。

  1. # vi /etc/ntp.conf
  2. server ntp.ring.gr.jp

念のため、再起動して確認してみよ~

常時稼動させておく場合は、cronで回すようにしとくと Better。

  1. # crontab -e
  2. * 5 * * * /usr/bin/ntpdate ntp.ring.gr.jp

必要なソフトウェアをインストール

  1. # apt-get update
  2. # apt-get install apache
  3. # apt-get install vsftpd
  4. # apt-get install mysql-server
  5. # apt-get install screen
  6. # apt-get install ssh
  7.  
  8. # apt-get update
  9. # apt-get check
  10. # apt-get upgrade

ちなみに、Debian のパッケージ管理には「apt-get」を使う方法と「aptitude」を使う方法の2つがあるけど、「今はapt-getに統一した方がいいよ」ということらしいです。混同すると依存関係がぐちゃぐちゃになるんだとか。

んで、メインのエディタとして emacs22 を入れてみました。未だSnapshotらしいけど、最初からUTF-8化してるとのことなので(mule-ucs を組み込んでUnicode化したEmacsは激重)。

  1. # apt-get install emacs22 emacs22-el anthy-el

ネットワーク設定

デフォルトだと、DHCPでIPを取得するようになってる。

  1. auto eth0
  2. iface eth0 inet dhcp

今回はメインPCから接続して開発するので、適当なIPに固定しておこう。「/etc/network/interfaces」を適当なエディタで編集する

  1. # emacs /etc/network/interfaces
  2.  
  3. auto eth0
  4. iface eth0 inet static
  5. allow-hotplug eth0
  6.  
  7. address 192.168.1.100
  8. netmask 255.255.255.0
  9. network 192.168.1.0
  10. broadcast 192.168.1.255
  11. gateway 192.168.1.1
  12. dns-nameservers 192.168.1.1

auto行で起動時に有効にするネットワークインターフェイスを記述。allow-hotplugで、ケーブルの抜き差しで自動認識するようにする。これは別になくても良いけど。あとはWindowsとほぼほぼ同じ。

DNSの設定は/etc/resolv.confに記述する。

  1. # emacs /etc/resolv.conf
  2. nameserver 192.168.1.1

hostsもいちお確認しておく

  1. # cat /etc/hosts

ネットワーク情報が適切に反映されているかどうか調べる。

  1. # ifconfig
  2. # route -N

SSHの設定

今回はローカルでの接続のみなので、あんまり厳密にしなくても良い。

  1. # emacs /etc/ssh/sshd_config
  2.  
  3. PermitRootLogin no
  4. AllowUsers sig
  5.  
  6. # /etc/init.d/ssh restart

root でのログインと、接続するユーザのとこだけサクッと編集。いちおPuTTYとかで接続確認して、終了。

FTPの設定

下記の設定だけ確認しとく。

  1. # emacs /etc/vsftpd.conf
  2.  
  3. listen=YES
  4. anonymous_enable=NO
  5. local_enable=YES
  6. write_enable=YES
  7. local_umask=022
  8. xferlog_enable=YES
  9. connect_from_port_20=YES
  10. secure_chroot_dir=/var/run/vsftpd
  11. chroot_local_user=YES
  12. chroot_list_enable=YES
  13. chroot_list_file=/etc/vsftpdd.chroot_list
  14. rsa_cert_file=/etc/ssl/certs/vsftpd.pem
  15.  
  16. use_localtime=YES
  17.  
  18. # /etc/init.d/vsftpd restart
listen
YES に設定した場合、スタンドアロンモードで起動する。
anonymous_enable
YES に設定した場合、anonymousログインを許可する
local_enable
YES に設定した場合、ローカルユーザのログインを許可する
write_enable
YES に設定した場合、ファイルシステムを変更するFTPコマンドを許可する。
local_umask
ローカルユーザが生成したファイルの umask 値
xferlog_enable
YES に設定した場合、ログファイルにアップロードとダウンロードの詳細を記録する
connect_from_port_20
YES に設定した場合、サーバが(送信元)ポートに 20(ftp-data) を使う
secure_chroot_dir
ファイルシステムへのアクセスが必要ないときに使用する、安全な chroot に使われるディレクトリ
use_localtime
YESに設定すると、ディレクトリリストを表示するとき、時間をローカルタイムで表示する。デフォルトではGMTで表示される。

↓めんどくさいのはココ↓

chroot_local_user
YES に設定した場合、ログイン後にローカルユーザをホームディレクトリへとchrootさせる
chroot_list_file
  • chroot_local_user=YES:chrootさせないユーザのリスト
  • chroot_local_user=NO:chrootさせるユーザのリスト
  1. # emacs /etc/vsftpd.chroot_list
  2. sig

chroot: チェンジルート。指定されたディレクトリよりも上の階層にいけなくすること

ユーザとグループ

主要なアカウントを作成し、各アカウントのホームディレクトリを用意する。

  1. $ /usr/sbin/adduser admin
  2. $ /usr/sbin/usermod -g www-data admin
  3. $ /usr/sbin/usermod -g www-data aiueo
  4. $ /usr/sbin/usermod -d /home/www/ admin
  5. $ /usr/sbin/usermod -d /home/www/aiueo.com aiueo
  6. $ mkdir -m 775 /home/www/
  7. $ mkdir -m 775 /home/www/aiueo.com

ちなみに、adduser は useradd へのシンボリックリンクらしい。あと、root ならこう書けた。

  1. # useradd admin
  2. # usermod -g www-data admin

「/usr/sbin/」にはコマンドっぽいのがいっぱいあるんだけど、通常、一般ユーザはパスが通ってないので「/usr/sbin/usermod」などと打たなくてはならないってことらしい。設定系はrootのが楽だね。

参照

次は apache かな~。その前に、もうちょい見やすくしとかないと...

Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。