Nature's Linux 1.3.3 を使用したWEB鯖構築手順書。
[Linux]
Nature's Linux Techで公開されているのインストール手順書を参考。
インストールCD用イメージ.ISOはここから入手。
Nature's Linux はハードディスクのパーティションを最大50GBまでしか確保できない。
また50GBフルで確保すると、起動時にカーネルパニックが発生する時が稀にある。
パーティションを複数に分け、home、var等に振り分けた方が良いだろう。
尚、キチンと調査していないので参考までに。
インストール直後のVFS rootのパスワードはvrootになっている。
まず最初にVFS rootのパスワードを変更する。
[dev ]$ su - Password: vroot [root]# passwd New UNIX password: 新しいパスワード Retype new UNIX password: 新しいパスワード passwd: password updated successfully
SSH(ポート22)によるリモートログインが可能。
直接rootでリモートログインできない。
SSH(ポート2022)によるリモートログインが可能。
直接rootでリモートログインできない。
インストール直後ではRFSユーザーが登録されていない為、リモートログインができない。
事前にローカルからRFSのrootでログインし、ユーザー登録を行う必要がある。
既にインストールされているパッケージのアップデートを確認する。
# apt-get update # apt-get upgrade
現在インストールされているサービスを確認する。
# chkconfig --list fcron 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
xinetdを利用するサービスがあるので、予め有効(ON)にしておく。
# chkconfig xinetd on # chkconfig --list fcron 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd based services: proftpd: off
# useradd -g 属するグループ名 -d ホームディレクトリ 登録するユーザ名 # passwd 新しく登録したユーザ名 New UNIX password: パスワード Retype new UNIX password: パスワード passwd: password updated successfully
# usermod -g 属するグループ名 -d ホームディレクトリ -s シェル 変更したいユーザ名
# userdel -r 削除したいユーザ名
ディスク スペースを確認。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda5 50G 489M 47G 2% /
パーティションの編集。
編集する(HD)デバイスを指定する。
# fdisk /dev/hda
または
# fdisk /dev/hdb
Nature's Linuxには標準でProFTPdがインストールされているので、特別インストール作業は必要なく、セットアップ作業のみ。
/opt/etc/proftpd/proftpd.conf
ServerType inetd ServerName "web" ServerIdent off DefaultServer on Port 21 Umask 022 MaxInstances 30 User ftp Group ftp ListOptions "-a" UseReverseDNS off IdentLookups off RequireValidShell off DefaultRoot ~ ExtendedLog /var/log/proftpd.log <Limit LOGIN> DenyAll AllowUser users AllowGroup users </Limit> <Directory /> AllowOverwrite on HideNoAccess on </Directory>
# chkconfig proftpd on # chkconfig --list fcron 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd based services: proftpd: on
日本SAMBAユーザ会で公開されているソースからコンパイルしてインストールする方法を参考。
FTPから、ソースファイルをwgetでダウンロードする。
# wget ftp://ftp.samba.gr.jp/pub/samba-jp/samba-2.2.11-ja/samba-2.2.11-ja-1.0.tar.gz
# tar xvzf samba-2.2.11-ja-1.0.tar.gz
作成されたソースディレクトリに移動してconfigure/makeを実行。
オプションはデフォルト。
# cd samba-2.2.11-ja-1.0/source # ./configure \ --prefix=/usr \ --localstatedir=/var \ --with-lockdir=/var/lock/samba \ --libdir=/etc/samba \ --with-configdir=/etc/samba \ --with-privatedir=/etc/samba \ --with-codepagedir=/usr/share/samba/codepages \ --with-fhs \ --with-sambabook=/usr/share/swat/using_samba \ --with-swatdir=/usr/share/swat \ --with-quotas \ --with-smbmount \ --with-automount \ --with-pam \ --with-pam_smbpass \ --with-syslog \ --with-utmp \ --with-msdfs \ --with-acl-support \ --with-winbind \ --with-mmap \ --without-smbwrapper \ --with-vfs \ --with-i18n-swat # make install
/etc/samba/smb.conf
[global] coding system = euc client code page = 932 workgroup = WORKGROPS server string = encrypt passwords = Yes log file = /var/log/samba/log.%m load printers = No writeable = Yes create mask = 0644 [homes] [tmp] path = /tmp
/etc/init.d/smb
#!/bin/sh # # chkconfig: 345 91 35 # description: Starts and stops the Samba smbd and nmbd daemons # used to provide SMB network services. # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # Check that smb.conf exists. [ -f /etc/samba/smb.conf ] || exit 0 # See how we were called. case "$1" in start) echo -n "Starting SMB services: " daemon smbd -D daemon nmbd -D echo touch /var/lock/subsys/smb ;; stop) echo -n "Shutting down SMB services: " killproc smbd killproc nmbd rm -f /var/lock/subsys/smb echo "" ;; status) status smbd status nmbd ;; restart) echo -n "Restarting SMB services: " $0 stop $0 start echo "done." ;; *) echo "Usage: smb {start|stop|restart|status}" exit 1 esac
パーミッションを755に変更する。
# chmod 755 /etc/init.d/smb
/etc/xinetd.d/swat
service swat { disable = no port = 901 socket_type = stream wait = no only_from = 192.168.1.0/24 user = root server = /usr/sbin/swat log_on_failure += USERID }
/etc/pam.d/samba
auth required /lib/security/pam_pwdb.so nullok account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.so password required /lib/security/pam_pwdb.so # shadow md5 nullok audit
/etc/logrotate.d/samba
/var/log/samba/log.nmbd { postrotate /usr/bin/killall -HUP nmbd endscript } /var/log/samba/log.smbd { postrotate /usr/bin/killall -HUP smbd endscript }
# chkconfig smb on # chkconfig --list fcron 0:off 1:off 2:on 3:on 4:on 5:on 6:off smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd based services: proftpd: off swat: on # /etc/init.d/smb restart # /etc/init.d/xinetd restart
PERLでCPANモジュール利用できるようセットアップする。
# perl -MCPAN -e shell
初回起動時、CPANの会話式設定がある。UNINST=1を指定すると幸せ。
その後 CPAN.pm を更新する。
cpan> install Bundle::CPAN cpan> reload CPAN
一般的なモジュールをインストールする。
cpan> install Jcode cpan> install Bundle::LWP
Nature's Linuxには、mod_ssl対応版 Apache 1.3系、PHP、MySQLで構成されたミドルウェアが用意されているので、ありがたく頂戴する。
# apt-get install nl-webdb-apm
Perlのインタプリタをメモリ上に乗せ、劇的に処理速度を向上することができるmod_perlをDSO(Dynamic Shared Object)としてApacheに組み込む。
まずmod_perlモジュールをhttp://perl.apache.org/から入手する。
Apacheが1.3.x系なので、mod_perlは1.0をダウンロードし、インストールする。
# wget http://perl.apache.org/dist/mod_perl-1.0-current.tar.gz # tar xvfz mod_perl-1.0-current.tar.gz # cd mod_perl-1.29 # perl Makefile.PL USE_APXS=1 WITH_APXS=/opt/package/apache13-modssl/bin/apxs EVERYTHING=1 # make install
/opt/etc/apache13-modssl/httpd.conf
LoadModule env_module libexec/mod_env.so LoadModule config_log_module libexec/mod_log_config.so LoadModule mime_module libexec/mod_mime.so LoadModule negotiation_module libexec/mod_negotiation.so LoadModule status_module libexec/mod_status.so LoadModule includes_module libexec/mod_include.so #LoadModule autoindex_module libexec/mod_autoindex.so LoadModule dir_module libexec/mod_dir.so LoadModule cgi_module libexec/mod_cgi.so LoadModule asis_module libexec/mod_asis.so LoadModule imap_module libexec/mod_imap.so LoadModule action_module libexec/mod_actions.so #LoadModule userdir_module libexec/mod_userdir.so LoadModule alias_module libexec/mod_alias.so LoadModule access_module libexec/mod_access.so LoadModule auth_module libexec/mod_auth.so LoadModule headers_module libexec/mod_headers.so LoadModule setenvif_module libexec/mod_setenvif.so LoadModule php4_module libexec/libphp4.so LoadModule perl_module libexec/libperl.so ClearModuleList AddModule mod_env.c AddModule mod_log_config.c AddModule mod_mime.c AddModule mod_negotiation.c AddModule mod_status.c AddModule mod_include.c #AddModule mod_autoindex.c AddModule mod_dir.c AddModule mod_cgi.c AddModule mod_asis.c AddModule mod_imap.c AddModule mod_actions.c #AddModule mod_userdir.c AddModule mod_alias.c AddModule mod_access.c AddModule mod_auth.c AddModule mod_headers.c AddModule mod_so.c AddModule mod_setenvif.c AddModule mod_php4.c AddModule mod_perl.c User apache Group apache ServerType standalone ServerRoot "/opt/package/apache13-modssl" PidFile /var/run/httpd.pid ScoreBoardFile /var/run/httpd.scoreboard SetEnvIf Request_URI "\.(gif)|(jpg)|(jpeg)$" object-is-image LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined UseCanonicalName ON ServerSignature OFF HostnameLookups OFF Timeout 300 KeepAlive ON MaxKeepAliveRequests 100 KeepAliveTimeout 15 MinSpareServers 5 MaxSpareServers 10 StartServers 5 MaxClients 150 MaxRequestsPerChild 0 Port 80 DefaultType text/plain AddType application/x-httpd-php .php AddHandler cgi-script .cgi DirectoryIndex index.cgi index.html index.htm ServerAdmin info@web ServerName web ErrorLog /var/log/www_err CustomLog /var/log/www_acs combined env=!object-is-image <Directory /> Options None AllowOverride None </Directory> DocumentRoot "/www" <Directory "/www"> Options ExecCGI Order Allow,Deny Allow from ALL AllowOverride None ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html </Directory> <Directory "/www/data"> Options None Order Allow,Deny Deny from ALL AllowOverride None </Directory> <Directory "/www/anth"> <Files *.cgi> SetHandler perl-script PerlHandler Apache::Registry PerlHandler Apache::StatINC PerlSendHeader On </Files> Options ExecCGI Order Allow,Deny Allow from ALL AllowOverride None AuthType Basic AuthName "Please USERNAME and PASSWORD." AuthUserFile /www/anth/.htpasswd require valid-user </Directory> NameVirtualHost 192.168.1.1:80 <VirtualHost 192.168.1.1:80> ServerName web DocumentRoot "/www" </VirtualHost> <VirtualHost 192.168.1.1:80> ServerName wiki.web DocumentRoot "/wiki" ErrorLog /var/log/wik_err CustomLog /var/log/wik_acs combined env=!object-is-image <Directory "/wiki"> <Files *.cgi> SetHandler perl-script PerlHandler Apache::Registry PerlHandler Apache::StatINC PerlSendHeader On </Files> Options ExecCGI Order Allow,Deny Allow from ALL AllowOverride None ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html </Directory> </VirtualHost>
# chkconfig apache on # chkconfig --list apache 0:off 1:off 2:on 3:on 4:on 5:on 6:off fcron 0:off 1:off 2:on 3:on 4:on 5:on 6:off mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd based services: proftpd: on swat: on # /etc/init.d/apache restart
.htpasswdは、BASCI認証で利用されるパスワードファイル。
初めてパスワードファイルを作成する時は、cオプションを付加する。
# htpasswd -bc .htpasswd ユーザID パスワード
2回目以降。
# htpasswd -b .htpasswd ユーザID パスワード
ミドルウェアによりApacheと共にインストールされているMySQLは、そのままでは利用できない状態になっています。
/etc/hosts
127.0.0.1 localhost.localdomain localhost
hostが上記のようになっている場合、下記のように修正が必要です。
127.0.0.1 localhost localhost.localdomain
# chkconfig mysqld on # chkconfig --list # /etc/rc.d/init.d/mysqld start
# mysql_install_db
# su - mysql $ mysql -u root
mysql> SHOW DATABASES; mysql> DROP DATABASE test; mysql> CREATE DATABASE workdb; mysql> use workdb; mysql> SHOW DATABASES;
また不必要なユーザーを削除します。
mysql> GRANT ALL ON * TO root@localhost IDENTIFIED BY 'パスワード'; mysql> GRANT SELECT, INSERT, DELETE, UPDATE ON workdb.* TO workuser@"%" IDENTIFIED BY 'パスワード'; mysql> SELECT host, user, password FROM mysql.user; mysql> DELETE FROM mysql.user WHERE password = '';
mysql> FLUSH PRIVILEGES;
MySQLサーバーのrootユーザーにパスワードを設定したので、次回から-pオプションを付けてログインします。
$ mysql -u root -p
他のクライアントからMySQLサーバーにログインするには、ポート番号 3306 を利用してアクセスします。
PostfixはSMTPデーモン、QpopperはPOP3デーモン、Watcher2はPOP before SMTPを実現するサービス。
Nature's Linuxではミドルウェアとして簡単に導入することができる。
# apt-get install nl-mail-pqf
/opt/etc/postfix2/main.cf
myhostname = web #mydomain = domain.tld
↓
myhostname = web.domain.jp mydomain = domain.jp
# chkconfig postfix on # chkconfig watcher2 on # /etc/init.d/postfix restart # /etc/init.d/watcher2 restart
メールサーバーを公開した場合、注意しなければならないのがスパム等の不正中継。
Watcher2によるPOP before SMTPが正常に働いていれば、まず問題なし。
SMTP不正中継チェックで、キチンと動作しているか確認する。
外部向けDNS鯖を構築するのに、広く利用されているBIND9がパッケージで提供されている。
# apt-get install bind9
サービス起動用スクリプトに、自動でBINDが開始されない不具合がある。
/etc/init.d/bind
#!/bin/bash ←ここを #!/bin/sh から変更する。 # # bind This shell script takes care of starting and stopping # bind (BIND9 DNS server).
〜 中 略 〜
start() {# Start daemons.#PIDFULLPATH=${PIDPATH} ←┬ここから5行を#if [ -f ${PIDFULLPATH} ]; then │コメントアウトする。# echo $"$prog: already running" │# return 1 │#fi └echo -n "Starting bind: "${INSTROOT_BIND}/sbin/named -u ${DAEMON_NAME} -c ${SYSCONFDIR}/named.confRETVAL=$?[ $RETVAL -ne 0 ] && failure $"$base startup"[ $RETVAL -eq 0 ] && touch /var/lock/subsys/${DAEMON_NAME} && success $"$base startup"echoreturn $RETVAL}
2006/06/06 - start(){〜}の不具合は解消されている。
最新のnamed.rootをwgetコマンドでダウンロードする。
# cd /opt/etc/bind9 # wget ftp://rs.internic.net/domain/named.root
/opt/etc/bind9/named.conf
# rndc key setting key rndc_key {algorithm "hmac-md5";secret "キー文字列";}; # rndc access setting controls {inet 127.0.0.1 allow { localhost; } keys { rndc_key; };}; # LOG logging { channel my_log { file "/var/log/bind9/named.db"; severity dynamic; print-category yes; print-severity yes; print-time yes; }; category default { my_log; }; }; # OPTIONS options { directory "/opt/etc/bind9"; pid-file "/var/run/bind9/named.pid"; statistics-file "/var/log/bind9/named.stats"; }; # HINT zone "." in { type hint; file "named.root"; }; # ZONE zone "web" in { type master; file "zone"; };
※キー文字列は環境毎に異なる為、必ずオリジナル・ファイルから編集すること。
/opt/etc/bind9/zone
$TTL 86400 @ 1D IN SOA dns.web. info.web. ( 2003021201 30m 15m 1w 20m ) ; IN NS web. IN NS dns1.interq.or.jp. IN NS ns-kg015.ocn.ad.jp. IN NS ns-os001.ocn.ad.jp. IN NS pns.ocn.ad.jp. IN NS ns4.iij.ad.jp. IN A DNSのIP/公開する場合はグローバルIP IN MX 10 web. ; dns IN A DNSのIP/公開する場合はグローバルIP www IN A 〃 wiki IN A 〃 ;
# chkconfig bind on # chkconfig --list apache 0:off 1:off 2:on 3:on 4:on 5:on 6:off bind 0:off 1:off 2:on 3:on 4:on 5:on 6:off fcron 0:off 1:off 2:on 3:on 4:on 5:on 6:off mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off watcher2 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd based services: proftpd: off qpopper: on swat: on # /etc/init.d/bind restart
digコマンドを使用して、DNSが正しく設定されているか確認する。
出力されるメッセージで、指定したドメイン名のAレコードに設定されているIPをチェックする。
AレコードにIPアドレスが表示されていない場合は、DNSが正しく設定されていない事になる。
# dig web @localhost
パソコンの内部時計はズレ易い為、定期的にタイムサーバーと同期を取る必要がある。
# apt-get install ntp
ntpdateコマンドでNTP(タイム)サーバーと同期が取れるかテスト。
※独立行政法人情報通信研究機構のStratum 1 タイムサーバーを指定。
# ntpdate ntp.nict.jp
提供 | アドレス |
---|---|
情報通信研究機構 | ntp://ntp.nict.jp |
東京大学 | ntp://eric.nc.u-tokyo.ac.jp |
豊橋技術科学大学 | ntp://ntp.tut.ac.jp |
大阪府立大学 | ntp://eagle.center.osakafu-u.ac.jp |
和歌山大学 | ntp://narumi.eco.wakayama-u.ac.jp |
広島大学 | ntp://ns.hiroshima-u.ac.jp |
定期的にntpdateコマンドを実行するのに、crontabコマンドを利用する。
# crontab -e
35 * * * * run-parts --report /etc/cron.hourly 25 5 * * * run-parts --report /etc/cron.daily 47 5 * * 7 run-parts --report /etc/cron.weekly 52 5 1 * * run-parts --report /etc/cron.monthly
0 5 * * * /usr/bin/ntpdate ntp.nict.jp
分 時間 日 月 曜日 コマンド -------------------------------- 分 0-59 時間 0-23 日 1-31 月 1-12 曜日 0- 6 (0:Sun 〜 6:Sat)
ご意見・ご感想があれば、コメントして下さい。
71.6.145.82/fc614582.aspadmin.net/
Category :: OS
2006/06/27 23:39:39 written by yuichis
Permanent.Link :: Trackback.Ping :: http://yuichis.homeip.net/?2
▼index
▼contents new 20
Windows::XP HomeをProfessionalにする方法
小粋なツール「aChgSndCfg.exe」と「wifictrl.exe」
簡易FTPデーモン「ftpサーバ for Windows CE」
必須ファイラー「GSFinder+ CustomVersion」
▼Upload List
受信したトラックバックはありません。