Ubuntuで自宅サーバーを建てるメモ

  1. 再インストール&再設定するとき、これを見ればOK。
  2. 順番通りにメモっておく。

Linuxの教科書

無料で公開されているlinuxの教科書

Ubuntu

公式サイト
http://www.ubuntulinux.jp/

  • Debian系Linuxディストリビューションの一つ。
  • 開発にお金がかけられていて、保守体制がシッカリしており、安心して使える。
  • RedHat?系のFedoraやCentOSよりも操作性が良いので、OSはUbuntuでOK。
  • Webサーバ用なんだけど、GUIでメンテしたいヘタレなので、Server版じゃなくてDesktop版を使う。

OSダウンロード

ダウンロードURL
http://www.ubuntulinux.jp/products/GetUbuntu

  • OSのISOイメージをダウンロードして、CD-Rに焼く。
  • CD-Rのライティングソフトは、「Nero Express Essentials 7」を使用。
  • 2010年5月21日(金)現在、Ubuntuの最新パージョンは、10.04。長期間サポートの「LTS」版になっていた。ラッキー!?

CD-Rに焼くとき、焼き方を間違えて、ISOイメージファイルをそのままコピーしてしまった!
=WindowsのエクスプローラーでCD-Rの中身を見たら「ubuntu-ja-10.04-desktop-i386-20100512.iso」というファイルが1個だけあって、インストール開始できなかった。><

nero.png
「イメージ、プロジェクト、コピー」→「ディスクイメージ~」を選択すればOK

OSインストール

Ubuntu10.04のインストールは簡単。
質問に答えていけば、ホイホイ進む。
ただし、パーティションは手動で設定する。

(参考)「Ubuntuで作るLinuxサーバー」(日経BPパソコンベストムック 2008/12/12発行)のp.8
book_ubuntu_server.jpg

ディスクを「/boot」「/(ルート・パーティション)」「/home」「/tmp」「/var」とスワップ領域に分割する。

ディレクトリ名容量
/boot200MB
/8GB
/home10GB
/tmp10GB
/varできるだけ多く=残り全部
swapメモリの2倍 (例:1.5GB×2=3GB)

hdd_partition.jpg

/boot

/bootは、カーネルなどのシステム起動に必要なファイルを格納する場所です。
ブートローダーという起動用のプログラムが参照するため、ルート・パーティションとは分けて、常にハードディスクの先頭に配置します。
200MB程度あれば十分です。

/

ルート・パーティションは、Linuxコマンドやアプリケーションの実行ファイル、設定ファイルなどのサーバー運用に必要なファイルを格納する場所です。
追加のアプリケーションが無ければ、容量の増減はほとんどありません。
ただし、不足するとシステムが停止する可能性があるため、余裕を持たせる必要があります。
Ubuntuでは約2.5GBを使いますが、3倍の8GB程度を確保しておきます。

/home

/homeは、全ユーザーのファイルを置く作業ディレクトリです。
思わず大きなファイルをダウンロードすることもあり、ファイルのサイズやユーザー数にもよりますが、10GB程度を確保しておきます。

/tmp

/tmpは、一時的な作業用に使われるディレクトリで、アプリケーションのインストール作業などに使います。
作業内容に依存しますが、10GB程度を確保しておきます。

スワップ領域

スワップ領域は、物理的なメモリーが足りなくなったときに利用されるディスク上の領域です。
一般的にはメモリー容量の2倍を割り当てます。

(自分のパソコンは、1.5GBのメモリーを搭載しているので、1.5GB×2=3GBのスワップ領域を確保することにする。)

/var

/varは、Webサーバーなどで公開するファイル、各種ログファイルなどを格納する場所です。
容量が増加しやすいため、できるだけ多く容量を確保します。
上記ディレクトリの残りをすべて割り当てます。

パーティションの種類

Linuxファイルシステムのパーティションには、

  • 基本パーティション
  • 論理パーティション
    という2種類がある。

一つのハードディスクに、基本パーティションは4つまでしか設定できないらしい。
遅ればせながら - Ubuntu 10.04をインストールしました

一つのハードディスクには基本的に4つしか基本パーティションを作れないそうなのだけど、この拡張パーティションというのを利用すると見掛け上はいくつでもパーティションが作れるということです。

基本パーティションにするディレクトリ

  • ブートローダーが壊れたらOSが起動しなくなるので、「/boot」は、独立した基本パーティションにする。
  • OSが入っている領域が壊れてもユーザーデータをバックアップできるように、「/home」は、独立した基本パーティションにする。

その他は、とりあえず「論理パーティション」でOKかな?

ファイルシステム

パーティションを手動で設定するとき、ファイルシステムは「ext3」を選択する。

  • Ubuntuの標準ファイルシステムは、8.10以前が「ext3」で、9.04以後が「ext4」。
  • 新しい「ext4」には問題点があるので、とりあえず「ext4」でなければならない理由がなければ消去法で「ext3」にしておくのが無難。

https://wiki.ubuntu.com/LucidLynx/ReleaseNotes/ja

ext4の利用において、特定の状況下ではこれまでよりパフォーマンスが低下します

Ubuntu 10.04 LTSのインストールにおいて、デフォルトのファイルシステムはext4が利用されています。
これはLinuxでよく利用されるファイルシステムの中では最新のものです。
ext4には以前のファイルシステム、たとえばext3などに比べて、幾つかのパフォーマンスチューニングのための変更が加えられています。
このファイルシステムはUbuntuでは9.04以降、デフォルトとして利用されています。
多くの場合はパフォーマンスが向上していますが、特定の負荷がかかった場合、ext3を利用している場合に比べて、著しく遅くなることが確認されています。
ファイルシステムパフォーマンスが大きく影響するアプリケーションを利用している場合は、自身の環境において、複数のファイルシステムを利用してベンチマークを取ってみることを推奨します。

とりわけ、(訳注:アップデート・マネージャや各種パッケージ操作ツールのバックエンドとして使われている)dpkgパッケージマネージャは、ext4を利用すると顕著に遅くなることが知られています。
ServerやAlternateCDを用いてインストールを行う際、2倍程度の時間がかかることもあります。
ext4には、既存のファイルを新しいファイルで置き換えるようなリネーム処理において、一度に(atomicに)リネームする処理を行える保証がないため、リネーム処理が行われた直後に電源が切れた場合に、壊れた0バイトのファイルができてしまうことに備えて、dpkgはリネームを行う前に、まず新しいファイルをディスク上に書き出します。
この結果として、パフォーマンスが損なわれています。パッケージ処理が高速に終了することが要求される場合、代わりにext3を利用する方が良いかもしれません。

他に「btrfs」など高速なファイルシステムもあるので、新しいHDDを追加したら、おいおい試してみたらいい。

ファイルシステム - Wikipedia

ネットワーク

自宅サーバ(Webサーバ)として使うので、LAN内でIPアドレスを固定にしておく。

  • DHCP(Dynamic Host Configuration Protocol)でIPアドレスを動的に取得しない。
  • IPアドレスを固定にしておく。

IPアドレス

ネットワークの設定には、3つのIPアドレスが必要になる。

  • WebサーバのIPアドレス
  • サブネットマスク
  • デフォルトゲートウェイ

Windowsのhostsファイル

Webサーバを再構築するとき、以前に割り当てたIPアドレスを忘れた場合、WindowsのローカルPCに設定が残っていれば、それを見ればOK

  • HOSTSファイルの設定
    http://vine-linux.ddo.jp/windows/hosts.php

    HOSTSファイルとは、ローカルネットワーク上のパソコンでDNSサーバーを使用せずに名前解決を行うためのファイルです。

    LAN内にWEBサーバーを立て、DNSサーバー構築していない時は、WEBサーバーの名前ではアクセスできずに、ルーターのアドレスへ転送されたりします。そこでDNSサーバーを立ち上げるよりは簡単に設定できる、HOSTSファイルの編集を行ってみましょう。

192.168.xxx.xxx mydomain.com(←Webサーバのドメイン名)

という記述があれば、それに合わせて同じIPアドレスを割り当てたらよい。なければ新規で決める。

デフォルトゲートウェイ

デフォルトゲートウェイとは 【default gateway】- IT用語辞典

所属するネットワークの外のコンピュータへアクセスする際に使用する「出入り口」の代表となるコンピュータやルータなどの機器。

家庭内LANにおいては、ルーターのLAN側のIPアドレスのこと。
一般的には、「192.168.0.1」のような値が割り当てられている。

サブネットマスク

サブネットマスクとは - Wikipedia

サブネットマスクとは、IPアドレスのうちネットワークアドレスとホストアドレスを識別するための数値。

ネットワークアドレス
巨大なTCP/IPネットワーク(インターネットなど)は、多数のネットワーク(サブネット)に分けて管理される。ネットワークアドレスは、これらのネットワークを識別するためのアドレスである。

ホストアドレス
IPアドレスのうち、ネットワークアドレス部分以外を指す。個々のネットワーク内においてホストを定義する部分。定められたネットワークアドレスから外れなければ、どのホストアドレスもネットワーク内で自由に利用できる。

一般的には、サブネットマスクとして「255.255.255.0」のような値が割り当てられている。

デフォルトゲートウェイ、サブネットマスクのネットワークの確認方法

Windowsパソコンで、LANのデフォルトゲートウェイ、サブネットマスクのネットワークアドレスを確認できる。

  • コマンドプロンプトを起動する。
  • 「ipconfig」というコマンドを入力する。
    これで、サブネットマスク、デフォルトゲートウェイが表示される。

ipconfig.png

ネットワークの設定

Ubuntu 10.04のGUIで設定する方法

  • 画面上部メニューから、「システム」→「設定」→「ネットワーク接続」を選ぶ。
  • 「ネットワーク接続」のダイアログボックス画面で、「有線」(=LANケーブルでPCを接続している場合)→LANカードの一覧から「Auto eth0」→「編集」→「IPv4設定」を選ぶ。
  • 「メソッド」を「自動(DHCP)」から「手動」に変更する。
  • 「アドレス」→「追加」→ここで上記で確認・決定したIPアドレスの値を入力する。
    • アドレス=「192.168.0.123」のような値
    • ネットマスク=「255.255.255.0」のような値
    • ゲートウェイ=「192.168.0.1」のような値
    • DNSサーバ=ゲートウェイと同じ値(または、LAN内にDNSサーバを用意しているならその値)

設定後の確認方法

  • Ubuntuのターミナル画面(GNOME端末など)を起動して、「ifconfig」というコマンドを入力する。
  • サーバのネットワーク設定情報が表示されるので、上記内容と一致していたら設定はOK

ソフトのインストール

使いたいソフト

  • SSH
  • LAMP(Linux+Apache+MySQL+PHP)
  • phpMyAdmin?
  • Postfix
  • DDNS
  • crontab

(参考)
Ubuntu 10.04 Desktop 初期設定メモ
Ubuntu 10.04 でインストールしたソフト、設定一覧


SSH

Webサーバにリモートログインして操作するために、SSHを導入する。

SSHのインストール

  • SSHサーバ
    sudo apt-get install openssh-server
    /etc/ssh/sshd_config を編集
    ポートを変更、 rootログインを許可しない、パスワード認証しない。
    Port 22222
    PermitRootLogin no
    PasswordAuthentication no
    再起動
    sudo service ssh restart
    
  • sshとopenssh-serverのパッケージの違い
    sshパッケージ情報

    aptitude show コマンドで、sshパッケージを情報を入手する。
    sshは、openssh-client と openssh-server で構成されていることがわかる。

「ssh」=「openssh-client」+「openssh-server」とのこと。
「openssh-client」が不要なら、「openssh-server」だけをインストールする方法を選択すればOK。
いずれにしろ、「openssh-server」のアクセス制限は設定する必要があるな。

SSHの設定

(参考)サーバーのセキュリティを強化する→その1:SSHの設定変更

SSHがインストールされている場所は、

whereis sshd

で確認できます。

SSHサーバーの設定は、

/etc/ssh/sshd_config

ファイルに記されています。

$ sudo vim /etc/ssh/sshd_config

で編集します。

認証方式

パスワードによる認証ではなく、公開鍵による認証にする。

  • WindowsマシンからリモートログインするSSHクライアントソフトには、「Poderosa」使う。
  • Windowsマシンからファイル転送するSSH転送ソフトには、WinSCPを使う。
  • 鍵ファイルの形式は「SSH2のRSA」にする(DSAは、偽の鍵を簡単に作れる脆弱性があるらしい)。
  • 鍵の強度は、2048ビットにする。
  • Poderosaで作った鍵を、後でWinSCP用に変換する。

Poderosaで接続する方法

  • Poderosaで、SSH2(ssh.com)形式のRSA暗号鍵ペア(秘密鍵と公開鍵)を作る。
  • WebサーバのSSHサーバー鍵を登録する。

(参考)
Ubuntu/ssh(sshd) の設定 - TOBY SOFT
WindowsからSSHサーバーへリモート接続(Poderosa鍵方式ログイン編)
SSHクライアント Poderosa

Poderosaのツールで作った公開鍵を、USBメモリ等にコピーして、Webサーバ内に設置する。
設置場所はユーザーディレクトリ内に「.ssh」というディレクトリを作って、そこに置く。

/home/username/.ssh/authorized_keys

パーミッションは「600」にする。=緩すぎるとダメ。

WinSCPで接続する方法

  • WinSCPで使える鍵は、PuTTY形式のみをサポートしており、Poderosaで作ったssh.com形式の鍵はそのままでは使えない。
  • WinSCPに付いているツール「PuTTYgen」を使うと、形式を変換することができる。

winscp_key_format.png

(参考)
PuTTYgenで公開鍵/秘密鍵を作成する

WinSCP開発者はセキュリティの観点からRSA形式を推奨しているとのことなので、特に制限がない場合は「SSH-2 RSA」を選択すると良いでしょう。

なお、DSA形式の鍵は内部的な脆弱性があり、「偽の署名」を簡単に作成できてしまいます。

PoderosaのSSH2秘密鍵からPuTTY形式の鍵を作成

IPアドレスでアクセス制限

TCP Wrapperの利用

# vi /etc/hosts.allow
sshd : 192.168.1. , .home.ne.jp    ←追加

/etc/hosts.allowに上の一行を追加します。この場合は、LAN内(192.168.1.0/24)は接続を許可、更にホスト名が.home.ne.jpのホストからは接続を許可という設定になります。/etc/hosts.allowには許可するホスト名やIPアドレスの記述を行います。複数ある場合には上記のように「,」で区切ります。
またこれはみなさんの環境に合わせて設定してください。続いて拒否をする設定を行います。

# vi /etc/hosts.deny
sshd : ALL ←追加

ここでは、ALLを指定しています。この場合は、/etc/hosts.allowで許可されたホスト以外は、拒否するという設定になります。


Apache

Ubuntuの上部メニューから、「アプリケーション」→「アクセサリ」→「端末」を選び、ターミナル画面を表示させる。
以下のコマンドを打つ。

$ sudo su
パスワード:(パスワードを入力)
# apt-get install apache2

.htaccessの設定

.htaccessファイルを有効にする。

  1. sites-available/defaultファイルを編集する
    $ sudo vi /etc/apache2/sites-available/default
  2. ディレクティブの「AllowOverride? None」のNoneをAllに変更する
    <Directory /var/www/>
        :
        # AllowOverride None # 変更前
        AllowOverride All # 変更後
        :
    </Directory>

これで、.htaccessファイルが有効になる。

(参考)htaccessの有効化

mod_rewriteの設定

mod_rewriteを有効にする。

$ sudo a2enmod rewrite

バーチャルドメイン

  • 基本形
    Apache設定ファイル「default」をいじる方法

設定ファイルの場所

/etc/apache2/sites-available/default

設定ファイルで、以下のようにバーチャルホストの設定を追記する。

<VirtualHost *>
   DocumentRoot /var/www/sub
   ServerName sub.domain.com
</VirtualHost>
  • 先頭から読み込んでいくので、記述の順番を考慮する。

設定ファイルを再読込みして、変更内容を有効にする。

/etc/init.d/apache2 force-reload

Apacheの再起動

/etc/init.d/apache2 restart

バーチャルドメインの設定ファイル

設定ファイルを作る。

/etc/apache2/sites-available/my-site

「my-site」の内容は、以下のようにする。

  • 「mydomain.com」を、使用するドメイン名に置き換えること。
  • サブドメイン「aaa」「bbb」を、使用するサブドメイン名に置き換えること。
ServerSignature Off
NameVirtualHost *
<VirtualHost *>
   DocumentRoot /var/www
   ServerName www.mydomain.com
</VirtualHost>
<VirtualHost *>
   DocumentRoot /var/www/aaa
   ServerName aaa.mydomain.com
</VirtualHost>
<VirtualHost *>
   DocumentRoot /var/www/bbb
   ServerName bbb.mydomain.com
</VirtualHost>
<VirtualHost *>
	ServerAdmin webmaster@localhost
	ServerName mydomain.com

	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		# AllowOverride None # None -> All for .htaccess
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

   Alias /doc/ "/usr/share/doc/"
   <Directory "/usr/share/doc/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       Order deny,allow
       Deny from all
       Allow from 127.0.0.0/255.0.0.0 ::1/128
   </Directory>

</VirtualHost>

次に、「a2ensite」コマンドによって、今作成した/etc/apache2/sites-available/my-siteを有効化します。

$ sudo a2ensite my-site

これにより/etc/apache2/sites-enabledディレクトリにmy-siteのシムリンクが作成されます。次のコマンドで確認してみましょう。

ls -al /etc/apache2/sites-enabled

次のように表示されます。

drwxr-xr-x 2 root root 4096 2010-01-13 04:26 .
drwxr-xr-x 7 root root 4096 2010-01-12 09:46 ..
lrwxrwxrwx 1 root root   26 2010-01-12 09:14 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root   22 2010-01-13 04:26 mysite -> ../sites-available/mysite

最後にapacheに設定を再読み込みさせるか再起動します。

$ sudo /etc/init.d/apache2 reload
$ sudo /etc/init.d/apache2 restart

以上で、my-siteが構築されました。


MySQL

MySQLのインストール

$ sudo apt-get install mysql-server

途中で、MySQLのrootユーザーのパスワードを設定する画面が出てくる。

MySQLの設定

  • 文字コード
    /etc/mysql/my.cnf
    の [mysqld] に追加
    default-character-set=utf8
    skip-character-set-client-handshake

MySQLを再起動する。

  • MySQL を起動するには、以下のコマンドを実行します。
    # /etc/init.d/mysql start
  • MySQL を停止するには、以下のコマンドを実行します。
    # /etc/init.d/mysql stop

PHP

PHPのインストール

$ sudo apt-get install php5

Apacheを再起動

$ sudo /etc/init.d/apache2 restart

phpMyAdmin?

phpMyAdmin?をインストールする。

$ sudo apt-get install phpmyadmin

http://localhost/phpmyadmin/
でphpMyAdmin?にアクセスできる。
…はずなのだが、アクセスできない。orz

phpMyAdmin?の設定

(トラブルレスキュー)Ubuntu/phpmyadmin - TOBY SOFT

もし、phpmyadminの画面が表示されない場合は…。
細かいこと:

インストール時に、apache用の設定( /etc/phpmyadmin/apache.conf )は、
/etc/apache2/phpmyadmin.conf に設定を張られており、
そのまま動くようです。

phpmyadminの実体ファイルは、/usr/share/phpmyadmin/以下にあり、
/usr/share/phpmyadmin/config.inc.phpから、
/etc/configinc

/etc/apache2/phpmyadmin.conf

がなかったので、phpMyAdmin?へのエイリアスが効いてなかった。

(参考)Ubuntu/apache2 - TOBY SOFT

(Apacheの)設定ファイルは、debianの構成をうけついでいて、
httpd.confを直接弄るようなことはありません。

以下、/etc/apache2/ 内の簡単な説明

apache2.conf ←httpd.confの代わりにこれが読まれる。
ports.conf ←ポート設定
sites-available/ ←仮想ホストの設定はここにファイルを作る
mods-available/ ←モジュールの設定はここにファイルを作る
conf.d/ ←細かい設定はここにファイルを作る

設定を書き直したら、

/etc/init.d/apache2 force-reload

で設定を読みなおす。

注意点としては、
apache2.conf自体はほとんど編集しません。
細かい設定は、conf.dに一個一個、個別にファイルを置いて設定するのがナウイです。
httpd.confもapache2.confから、読まれるので、httpd.confに一括で全部置く手もありです。

トラブルの対処方法

conf.d の中を覗いたら、こまごまとしたApacheの設定ファイルが置かれていて、Apache起動時に自動的に読み込まれるようなので、ここに「phpmyadmin.conf」を手動で作成する。

/etc/apache2/conf.d/phpmyadmin.conf

このファイルは、

/etc/phpmyadmin/apache.conf

へのシンボリックリンク(ショートカット)にする。

  • シンボリックリンクの作成
    lnコマンドを使う
    $ ln -s リンク元のパス 作成するシンボリックリンクのパス
    # ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf 

これで、
http://localhost/phpmyadmin/
から、phpMyAdmin?にアクセスできた!

同じ方法が紹介されていた。orz
phpMyAdmin - Lenny_Memo

apache 用のコンフィグファイルをリンクを張ります

# ln -s /etc/phpmyadmin/apache.conf /etc/pache2/conf.d/phpmyadmin.conf

phpMyAdmin?へのアクセス制限

セキュリティ確保のために、IPアドレスでアクセス制限をかける。

  • ローカルマシン(自分自身)からのアクセスは許可する。
  • LAN内からのアクセスは許可する。
  • 外部の作業場所からのアクセスは許可する。
  • その他は全てアクセスを不許可にする。

(参考)設定方法
Ubuntu/phpmyadmin - TOBY SOFT

アクセス制限が必要な場合は、
/etc/phpmyadmin/apache.conf を弄るかもしくは、
/etc/apache2/conf.d/ に設定ファイルを書いてアクセス制限などをしてみてください。

例えば、phpmyadminに繋げるサブネットワークを制限する場合は、以下のようにします。

sudo vi /etc/apache2/conf.d/phpmyadmin_access.conf 

phpmyadmin_access.conf 設定例:
(アクセス可能範囲を123.456.789.0?255に制限しています)

<Directory /usr/share/phpmyadmin>
       Order allow,deny   
       allow from 123.456.789.0/24
</directory>

後はapacheを再起動します。

sudo /etc/init.d/apache2 restart

LAMP環境を作る - Lenny_Memo

phpmyadmin の設定
デフォルトではどこからでもアクセス出来るのはセキュリティ上よろしくないのでlocalhostと192.168.1. からだけアクセス出来るように制限する

/etc/apache2/phpmyadmin.conf に以下を追加

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory "/home/www/phpmyadmin">
       options none
       allowoverride none
       order deny,allow
       deny from all
       allow from 127.0.0.1
       allow from 192.168.1.
</Directory>

phpMyAdmin?へのアクセス制限の方法

  • 対処方針
  1. /etc/apache2/conf.d/phpmyadmin_access.conf を作成する。
  2. 中身は、
    Alias /phpmyadmin /usr/share/phpmyadmin
    
    <Directory "/var/www/phpmyadmin">
        Order deny,allow
        deny from ALL
        allow from 127.0.0.1       # ローカルマシン(自分自身)
        allow from 192.168.1.      # LAN内
        allow from xxx.xxx.xxx.xxx # 外部の作業場所
    </Directory>
    にしてみる。

メールサーバー

  • Webサーバーからメール送信ができるようにしたい。
    =とりあえずメール送信(SMTP)できればOK。
  • SMTPサーバとして「Postfix」を使う。
  • OB25P対策の設定を行う。
    =Gmail経由でメールを送信させる方法

Postfixのインストール

(参考)
Postfix のインストールと設定
Ubuntu/postfix@ローカル

$ sudo apt-get install postfix

インストール途中の質問に対して、以下のように設定する。

  • パッケージの設定
    • メール設定の一般形式:インターネットサイト
    • システムメール名:mydomain.com(使用するドメイン名にする)

postfix_1.png

postfix_2.png

Postfixの設定

  • Postfixの設定ファイル「main.cf」を編集する。
    $ sudo vim /etc/postfix/main.cf
  • 以下のような内容にする。
    # See /usr/share/postfix/main.cf.dist for a commented, more complete version
    
    # Debian specific:  Specifying a file name will cause the first
    # line of that file to be used as the name.  The Debian default
    # is /etc/mailname.
    #myorigin = /etc/mailname
    
    smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
    biff = no
    
    # appending .domain is the MUA's job.
    append_dot_mydomain = no
    
    # Uncomment the next line to generate "delayed mail" warnings
    #delay_warning_time = 4h
    
    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
    
    # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
    # information on enabling SSL in the smtp client.
    
    myhostname = mail.mydomain.com
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    myorigin = mydomain.com
    mydestination = $myhostname, mydomain.com
    relayhost = [smtp.gmail.com]:587
    mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all
  • 設定ファイル「header_checks」を作成する
    /etc/postfix/header_checks を以下のように作成して,メールヘッダに「192.168.*.*」又は「127.0.0.1」を含む行を削除する。
    /^Received:.*192\.168\..*/ IGNORE
    /^Received:.*127\.0\.0\.1.*/ IGNORE

OP25B対策

OP25Bとは?
OP25B対策(Outbound Port 25 Blocking対策)

Outbound port 25 Blocking(以下、OP25B)とは、文字どおり外向きのTCP 25番ポートをブロックすることを意味しており、ISPの加入者のパソコンがウイルスに感染したり乗っ取られたりして迷惑メールを配信するのを防止するための技術です。
OP25Bが導入されたとしても、ISPのSMTPサーバを利用しているユーザには全く影響がありませんが、自宅サーバでSMTPサーバを動かしている場合は何らかの対策が必要になります。

  • OP25B対策として、とりあえずGmail経由でメール送信する。

Gmailでメール送信する設定

(参考)
Ubuntu 9.04 Server – Postfixの設定
Postfixで、GMAIL経由でメールを送る(OP25B対策)

まとめ
sasl_passwd作成

$ vim /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 [username]@gmail.com:[password]

sasl_passwdのdb化

$ postmap sasl_passwd

main.cfの設定追加

$ vim /etc/postfix/main.cf
(以下の設定を追加)
relayhost = [smtp.gmail.com]:587

#sasl setting
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
#tls setting
smtp_use_tls = yes

cyrus-sasl-plainのインストール

$ apt-cache search cyrus
$ apt-get install cyrus-sasl-plain

補足
DEBUGログの見方

$ vim /etc/postfix/main.cf
(以下の設定を追加)
debug_peer_level = 2
#debug_peer_list = smtp.gmail.com
#debug_peer_list = gmail-smtp.l.google.com

DDNS


crontab

PHPスクリプトをクーロンで定期的に実行したい。

  1. PHPをコマンドラインで使えるようにする。
  2. crontabを編集する。

PHPのコマンドライン実行

PHPマニュアル
PHP をコマンドラインから使用する
インストール方法
UbuntuでコマンドラインPHPのphp5-cliのインストール方法・コマンド

$ sudo apt-get install php5-cli

PHPの場所

/usr/bin/php

crontabの編集

(参考)

$ crontab -e

で編集できる。

rootとしてではなく、ユーザーとしてcrontabを編集すると、

/var/spool/cron/crontabs/

という場所にユーザー名のcrontabファイルが作成される。

/var/spool/cron/crontabs/username

というようなファイルが作成される。

10分毎にPHPスクリプトを実行する設定

*/10 * * * * /usr/bin/php -f /home/username/mailsend.php

その他

データのレストア

コピーしたディレクトリやファイルのオーナーやグループ、パーミッションを変更する。

  • 丸ごと変更する方法
    「www」ディレクトリ以下をすべてパーミッション「755」にする場合
    $ chmod -R 0755 www
  • ディレクトリだけ変更する方法
    「www」ディレクトリ以下にあるディレクトリだけを選択的にパーミッション「755」にする場合
    find /var/www/ -type d -exec chmod 755 {} \;

画面ロックの設定解除

Ubuntu10.04はデフォルト状態だと、アイドル状態が続くと画面がロックされて、操作を再開するときにパスワードを求められてうざい。

Ubuntu10.04で自動に画面ロックを解除する。

Ubuntu10.04では初期設定は自動で画面ロックしてしまいますね。
解除するのは
[システム]→[設定]→[GNOMEスクリーンセーバー]から設定できますね。

nautilus-gksu

CodeIgniter

PHPがバージョン5.2から5.3になったら、PHPスクリプトでエラーメッセージが多発した。
CodeIgniterで作ったWebアプリも、なんか動作がおかしい。

An Error Was Encountered
The URI you submitted has disallowed characters.

というエラー

CodeIgniter:日本語URIでエラー
CodeIgniter | URIで日本語を使うのだ

application/config/config.phpで
[Allowed URL Characters」セクションの正規表現を修正すればOK

$config['permitted_uri_chars'] = '一-龠ぁ-んァ-ヴーa-zA-Z0-9a-z 0-9~%.:_-';

Java

Java SDKをインストールする。

Ubuntu 10.04 - GotoWiki

sun-java6-jreインストール
ubuntu10.04 からはsun JDKは別のリポジトリに移ったらしいので、新たにリポジトリを追加しなければならない。

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

(参考)Sun Java moved to the Partner repository

For Ubuntu 10.04 LTS, the sun-java6 packages have been dropped from the Multiverse section of the Ubuntu archive. It is recommended that you use openjdk-6 instead.

If you can not switch from the proprietary Sun JDK/JRE to OpenJDK, you can install sun-java6 packages from the Canonical Partner Repository. You can configure your system to use this repository via command-line:

add-apt-repository "deb http://archive.canonical.com/ lucid partner"

Eclipse

PDT

Xdebug

  • Ubuntuソフトウェアセンターから、パッケージを自動でインストールできる。

php5-xdebug.png

Git

Redmine


添付ファイル: filewinscp_key_format.png 12件 [詳細] filephp5-xdebug.png 13件 [詳細] filehdd_partition.jpg 13件 [詳細] filepostfix_1.png 12件 [詳細] fileipconfig.png 12件 [詳細] filenero.png 12件 [詳細] filebook_ubuntu_server.jpg 13件 [詳細] filepostfix_2.png 13件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-01-20 (日) 23:30:06 (2033d)