ubuntuサーバ版で簡単に自宅サーバを作る

自宅サーバのOSを3年ぶりに新調。ubuntuに変更した。そして、とっても簡単にできたので、レポートしてみる。

できたもの

  • LAMP
  • postfix(メールサーバ)
  • samba(ファイルサーバ)

2.インストール

CDを入れてインストール。

サーバ版だと、最初にどんなシステムを入れるか、聞いてくる。

LAMP、Samba、Mail、SSH(あったっけ?)を選択した。

最初にユーザも作る。

これだけで、もうSSHでアクセス可能。さっそくSSHで外部からアクセスして、スーパユーザになる。

$sudo -s

3.ネットワークの設定(IPを固定する)

参考:http://park15.wakwak.com/~unixlife/linux/de-network.html

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

と、最初はDHCPになっているので、これをIP指定に変更

# The loopback network interface
iface lo inet loopback
auto lo

# The primary network interface
iface eth0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0

最後にネットワークを再起動

#/etc/init.d/networking restart

4.メールサーバpostfix

すでにインストールされている。されてないときは、インストールする。

#aptitude install postfix

/etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = 74street.ddo.jp
mydomain = 74street.ddo.jp
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname,localhost.$mydomain,$mydomain
relay_domains = $mydomain
relayhost = [mail.so-net.ne.jp]:587
mynetworks_style = subnet
mynetworks = 192.168.0.0/24,127.0.0.0/8
inet_interfaces = all

# so-net op25b
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/ispauth
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = PLAIN

最初から、tlsやらsslの設定がされている様子。ちなみに、うちのプロバイダ、plalaはリレーサーバに送らないと外にメールを送れない。この設定だと外部からSMTPは利用できないんだけど、別に良いよね。

/etc/postfix/ispauth

[mail.so-net.ne.jp]:587 (SMTPユーザ):(SMTPパスワード)
# chmod 640 /etc/postfix/authinfo
# postmap /etc/postfix/authinfo

メールクライアントはThunderbirdで、SSLを有効にする、で受信できた。

メールの転送

GMAILに飛ばしてしまうので、あまり気にしない。ホームディレクトリに「.forward」を置く。

~/.forward

minami@gmail.com

5.apache2

初のapache2! 今までは1しか使ったことがなかった。

基本的に既に設定済み(既に動いている)。自分なりの設定変更したいところだけを変える。

ドキュメントルートディレクトリの変更

「/var/www」から「/var/www/html」に変更したい。基本的に、スクリプトは/var/wwwに置いて、そのうちwebでアクセスするものには、/var/www/htmlにシンボリックリンクを置いて使うようにしている。

/etc/apache2/sites-available/default

  DocumentRoot /var/www/html
       
               Options FollowSymLinks
               AllowOverride None
       
       
               Options FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
       
       ScriptAlias /cgi-bin/ /var/www/cgi-bin/
       
               AllowOverride None
               AddHandler cgi-script .cgi .pl .py
               Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
               Order allow,deny
               Allow from all
       
  • DocumentRootでルートディレクトリを設定
  • cgiを実行するためのディレクトリを/var/www/cgi-bin/に変更。
  • cgiとみる拡張子の設定をここに書いてしまう。
  • OptionsのIndexesは削除。これがあると、ディレクトリ構造が見えてしまう。
  • AllowOverrideをAllにしておくと、.htaccessで変更できる。危険?
/var/wwwの権限

wwwの変種権限を最小に。編集するのは、minami。apache2はwww-dataというユーザで実行されているっぽい。よって、所有権をminamiに、グループをwww-dataにして、グループは必要なところ以外閲覧権限にする。

#chown -R minami:www-data /var/www
#chmod -R 755 /var/www

minamiをwww-dataグループに追加。

#gpasswd -a minami www-data
SSL

SSLを有効にする。最初から、既にモジュール自体は入っていた。

#a2enmod ssl

SSLの設定を同様に変更する。

/etc/apache2/sites-available/default-ssl

上と同じなので省略

SSLのバーチャルサーバを立てることで、SSLが有効になるみたい。あと、cdで移動しないと動作しなかった。

#cd /etc/apache2/sites-acailable/
#a2ensite default-ssl

6.PHP

基本的に、LAMPとしてインストールされているので、自分が必要な部分を追加するだけ。

pear

#aptitude install php-pear

/etc/php5/apache2/php.ini

memory_limit = 128M
eAcceleratorを入れる

参考:http://www.uetyi.mydns.jp/wordpress/linux-server/entry-437.html

Debianの場合、php50devを入れなければならないらしい。

#aptitude install php5-dev

eAcceleratorのサイト(http://eaccelerator.net/)からダウンロードしてくる。いつも、0.9.5.3を使ってる気がする。

#wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
#tar xjvf eaccelerator-0.9.5.3.tar.bz2
#cd eaccelerator-0.9.5.3
#phpize
#./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config
#make
#make install
Installing shared extensions:     /usr/lib/php5/20060613+lfs/(インストールされたディレクトリが表示される)

php.iniを書き換える(/etc/php5/aoache2/php.ini)

[eaccelerator]
#インストールされたディレクトリ下のこのファイルを指定
zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so"
#キャッシュのメモリ量。単位はMB。
eaccelerator.shm_size = "128"
#キャッシュファイルを置くディレクトリ。作っておくこと。
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.debug = "0"
eaccelerator.log_file = "/var/log/apache2/eaccelerator.log"
eaccelerator.name_space = ""
eaccelerator.check_mtime = "1"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "3600"
eaccelerator.shm_prune_period = "120"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys     = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content  = "shm_and_disk"
#設定スクリプトの場所
eaccelerator.allowed_admin_path = "/var/www/html/control.php"

設定スクリプトを移動させる。このcontrol.phpは一緒に入っている。

#cp control.php /var/www/html/

パスワードの設定だけ変更しておくべし。(/var/www/html/control.php

/** config **/
$user = "admin";
$pw = "password";
/** /config **/
#/etc/init.d/apache2 restart

7.MySQL

これもLAMPセットに入ってるというか、OSインストール時点でMySQLにrootパスワードまで設定させられる。

なんか、php5-mysqlだけ入れ直した気がする。

#aptitude install php5-mysql
#/etc/init.dapache2 restart

8.Samba

めっちゃ楽だった。

WORKGROUPと表示名だけ変更(/etc/sabma/smb.conf)

workgroup = MYWORKGROUP
server string = samba

あとは、以下を設定ファイル(/etc/sabma/smb.conf)に追加している。

  • 共有ディレクトリ
[public]
  path = /var/samba_public/
  comment = public
  browsable = yes
  printable = no
  writable = yes
  guest ok = yes
  force create mode = 777
  • wwwディレクトリ
[www]
 comment = www
 path = /var/www/
 public = no
 writable = yes
  • 各人のホームディレクトリ
[homes]
  comment = %U's Home Directory
  browseable = no
  writable = yes
#/etc/init.d/samba restart

8.おまけ。ログイン時のメッセージを変更

/etc/motd.tail

サーバはちゃんと生きているッ! 俺もがんばれッ!
#reboot

で、

あまりサーバっていってもシステム入ってなかった!