Category Archives: サーバー管理

Apache2に新しいサイトを登録

Apache2を使えば一つのサーバーで複数サイトの運営ができます。
例えば「http://hogehoge.com/」と「http://foobar.com/」といったページを一つのサーバーで管理し、全く違う内容にするということです。
それぞれのサイトの設定は「/etc/apache2/sites-available」に存在し、有効にするためには「/etc/apache2/sites-enabled」にそのサイトの設定のシンボリックリンクを作成することによってApacheに読み込ませることができます。

現在のデフォルトの状態では「/etc/apache2/sites-available」に「default」というサイト設定が。有効にするために「/etc/apache2/sites-enabled」に「000-default」という「default」のシンボリックリンクが作成されており、有効になっています。
では新しく「http://chibiegg.homeip.net/」というサイトを作ってみましょう。
しかしここで注意です。「chibiegg.homeip.net」という名前を自分のサーバーにただ登録すればそのアドレスが使えるようになる訳ではありません。
どこかのサービスを利用して(例:http://www.dyndns.com/http://ddo.jp/)DDNSサービスやDNSサービスに登録する必要があります。
これについては今度言及しようと思いますので、googleなどで検索してみてください。「ddo.jp」は日本語なのでおすすめです。今回は「dyndns」で「chibiegg.homeip.net」を取得したとします。

それでは新しいサイト情報を「chibiegg-homeip」として作りましょう。このファイル名やアドレスは今後各自の情報にあわせてください。
このサイトのドキュメントルートは「/home/www/chibiegg」とします。このフォルダーも自由に変えていただいて構いません。

<code>
$ su
# mkdir /home/www/chibegg/
# cd /etc/apache2/sites-available
# vi chibiegg-homeip
</code>

とし新規作成します。
そして以下のように書きます。

<code>
NameVirtualHost *
&lt;VirtualHost *&gt;
	ServerAdmin webmaster@chibiegg.homeip.net
	DocumentRoot /home/www/chibiegg
	ServerAlias chibiegg.homeip.net
	&lt;Directory /&gt;
		Options -Indexes FollowSymLinks
		AllowOverride None
	&lt;/Directory&gt;
	&lt;Directory /home/www/chibiegg/&gt;
		Options -Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		Allow from all
	&lt;/Directory&gt;
	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
	ServerSignature On
&lt;/VirtualHost&gt;
</code>

「ServerAdmin」にメールアドレス
「ServerAlias」に取得したドメイン
「DocumentRoot」にドキュメントルート
2つめの「Directory」にドキュメントルート
にするということです。
さらにこのアドレスからも「phpMyAdmin」に接続したければ以前の記事をもとにドキュメントルートに「phpMyAdmin」のシンボリックリンクを作成し、必要であればこのサイト設定にもBASIC認証の設定をつけてください。

続いてこの作成したサイト設定のシンボリックリンクを「/etc/apache2/sites-enabled」に「001-chibiegg-homeip」という名前で作成し、最後にapache2を再起動します。

<code>
# cd /etc/apache2/sites-enabled
# ln -s /etc/apache2/sites-available/chibiegg-homeip ./001-chibiegg-homeip
# /etc/init.d/apache2 restart
</code>

確認するために新しいサイトのドキュメントルートに以下のような「index.htm」をつくります。

<code>
  &lt;html&gt;
    &lt;body&gt;
      &lt;h1&gt;It works! on chibiegg.homeip.net&lt;/h1&gt;
    &lt;/body&gt;
  &lt;/html&gt;
</code>

確認のために「http://chibeigg.homeip.net/index.htm」(取得したドメイン)でブラウザから接続しましょう。

It works! on chibiegg.homeip.net

と出ればOK

MySQLの確認とphpMyAdminのインストール

すいません順番が前後していますが、

今回は「MySQL」の確認のついでに「phpMyAdmin」をインストールします。
phpMyAdminはブラウザ経由で「MySQL」の管理ができるツールです。
まずは「phpMyAdmin」をインストールします。

<code>
$ su
# apt-get install phpmyadmin
</code>

phpMyAdminは「/usr/share/phpmyadmin」にインストールされるのでこのフォルダーをApache2でブラウザ経由でみれるようにしましょう。
今回は「/usr/share/phpmyadmin」へのシンボリックリンクを「/var/www」に作成することで実現したいと思います。

<code>
# cd /var/www
/var/www# ln -s /usr/share/phpmyadmin ./
</code>

では、ブラウザから「http://サーバーのIPアドレス/phpmyadmin」を開いてみましょう。以下のような画面がでれば「phpMyAdmin」のインストールは成功です。
phpMyAdminログイン画面
ユーザー名は「root」
パスワードは前回設定したMySQLのrootのパスワード
を入力しログインします。
ここでエラーがなくログインできれば「MySQL」のインストールも成功です。
このままでは「phpMyAdmin」のログイン画面まで誰でも開くことができてしまいます。これを防ぐためにログイン前にもパスワードを設定しましょう。以下のようなWebサーバーのBASIC認証を使用します。
BASIC認証の例
まずはBASIC認証に必要なユーザー名とパスワードのリスト(.htpasswd)を「/var」(どこでも構いません)に作ります。以下の例では新しく.htpasswdを作成しhogehogeというユーザーを作るということです。

<code>
# cd /ver
/var# htpasswd -c .htpasswd hogehoge
New password: ここにパスワードを入力(実際は表示されない)
Re-type new password: もう一度入力(実際は表示されない)
</code>

「New password」「Re-type new password」を入力するときはキーを押しても表示されませんが入力されていますので注意。
二回目以降ユーザーを登録する場合は[-c]オプションを外して以下のように。

<code>
# cd /ver
/var# htpasswd .htpasswd hogehoge2
New password: ここにパスワードを入力(実際は表示されない)
Re-type new password: もう一度入力(実際は表示されない)
</code>

次にこのパスワードを使って「phpMyAdmin」のアドレスに「BASIC認証」をかけましょう。そのためにはApache2のサイト設定を変更します。
「/etc/apache2/sites-available/default」を編集します。

<code>
# vi /etc/apache2/sites-available/default
</code>

以下のものをどこかの「」の後にでも追記します。

<code>
        &lt;Directory "/var/www/phpmyadmin"&gt;
                AuthType Basic
                AuthName "phpMyAdmin"
                AuthUserFile /var/.htpasswd
                Require user hogehoge
        &lt;/Directory&gt;
</code>

「/var/.htpasswd」と「hogehoge」のところは適時変更してください。
これによって

実ディレクトリの「/var/www/phpmyadmin」への接続には「BASIC認証」が必要で「/var/.htpasswd」のユーザー「hogehoge」がログインできます。

ということになります。

複数のユーザー名でログインできるようにするには
「Require user hogehoge hogehoge2」のようにスペースでユーザーを区切ってください。

さらに設定を有効にするためにApache2を再起動します。

<code>
# /etc/init.d/apache2 restart
</code>

もう一度phpMyAdminを開くと
BASIC認証の例
のように認証を求められログインできれば成功です。

WordPressでサムネイル作成の有効化とサイズ変更

WordPressには標準で画像をアップデートするときにサムネイルを作成してくれますがなぜか「GD」という画像編集機能がインストールされていなかったのでインストールします。

<code>
$ su
# apt-get install php4-gd
# /etc/init.d/apache2 restart
</code>

これで投稿画面にあるアップロードから画像をアップロードするとサムネイルが作成されるようになりました。

次にサムネイルのサイズを変更しようともいます。
標準では128×96のうち小さい方にあわせられるようになっているが、ちょっと小さいので400×300にしようとおもいます。これはソースの関係上4:3がいいです。
編集するファイルは「WordPressフォルダ/wp_admin/inline-uploading.php」です。
90行目ぐらいに以下のような記述があります。

<code>
	if ( $imagedata['width'] * $imagedata['height'] &lt; 3 * 1024 * 1024 ) {
		if ( $imagedata['width'] &gt; 128 &amp;&amp; $imagedata['width'] &gt;= $imagedata['height'] * 4 / 3 )
			$thumb = wp_create_thumbnail($file, 128);
		elseif ( $imagedata['height'] &gt; 96 )
			$thumb = wp_create_thumbnail($file, 96);

		if ( @file_exists($thumb) ) {
			$newdata = $imagedata;
			$newdata['thumb'] = basename($thumb);
			update_post_meta($id, '_wp_attachment_metadata', $newdata, $imagedata);
		} else {
			$error = $thumb;
		}
	}
</code>

この中の「128」と「96」をすべて以下のように「400」と「300」に変更しましょう。

<code>
	if ( $imagedata['width'] * $imagedata['height'] &lt; 3 * 1024 * 1024 ) {
		if ( $imagedata['width'] &gt; 400 &amp;&amp; $imagedata['width'] &gt;= $imagedata['height'] * 4 / 3 )
			$thumb = wp_create_thumbnail($file, 400);
		elseif ( $imagedata['height'] &gt; 300 )
			$thumb = wp_create_thumbnail($file, 300);

		if ( @file_exists($thumb) ) {
			$newdata = $imagedata;
			$newdata['thumb'] = basename($thumb);
			update_post_meta($id, '_wp_attachment_metadata', $newdata, $imagedata);
		} else {
			$error = $thumb;
		}
	}
</code>

これでサムネイルのサイズも変更できます。

netatalk のバージョン固定

前回に引き続きまだnetatalkの話ですが。
このままだと、「apt-get upgrade」をしてしまうとせっかく修正したnetatalkを標準のもので上書きされてしまいます。
それでは困るのでnetatalkをバージョンアップの対象から外してみましょう。
今回は「/etc/apt/preferences」に設定を追記します。
例によってsuでroot権限を利用します。

<code>
$ su
# vi /etc/apt/preferences
</code>

これで「/etc/apt/preferences」を開くあるいは新規作成します。
具体的には

<code>
Package: netatalk
Pin: version 2.0.3-3
Pin-Priority: 900
</code>

のように追記することによって実現できます。
簡単に説明をするとこれはパッケージ「netatalk」をバージョン「2.0.3-3」に優先度「900」で固定(Pin)するということです。
バージョンは前々回インストールしたときに確認したバージョンより古い物にしておきます。
なぜかというと現行と同じバージョン(前々回の記事に合わせると2.0.3-4)にしても試してみるとうまくいかなかったためです。
優先度については下記の参考にさせていただいたページに詳しく書かれていますが今回900にした理由だけを引用させていただくと

101 以上の値は、そのパッケージがインストールされるべきであることを示しています。よくあるのは、あるパッケージのインストール済バージョンがより進んだバージョンにのみアップグレードされる場合です。100 以上 1000 以下のあらゆる値は、この典型的な動作をすることを示しています。このような値を持つパッケージは、利用可能であっても古いバージョンにはダウングレードされません。

ということです。

とりあえずこのように設定して変更を保存します。
最後に本当に上書きされないのか確認をしてみます。
apt-getの[-s]オプションを使用してテストをします。このオプションはシミュレーションのみを行い実際には何もしないようにするものです。

<code>
# apt-get update
# apt-get -s upgrade
</code>

を実行して。
「以下のパッケージはアップグレードされます:netatalk」
と出なければ成功です。
次から安心して「apt-get upgrade」ができます。

今回参考にさせていただいたページ

http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.ja.html#s-update
http://debian.fam.cx/?AptGet#content_1_23

netatalk OpenSSL(LeopardでAFP)設定編

さて今回はnetatalkの設定をしてみようと思います。
今回設定するのは「/etc/netatalk」にある「AppleVolumes.default」
基本的な設定方法は

[共有ディレクトリの絶対パス] [“共有名”] [オプション]
共有名は “”ダブルクォートで囲むことが推奨されています。

ということです。

例えば簡単な設定例を

/home/hogehoge "hogehoge's home"

とすると「/home/hogehoge」を「hogehoge’s home」という名前で共有できます。

それではオプションについてみてみましょう。

参考ページを確認すると

allow
   特定のユーザー、グループを許可します。
   例 deny:taro,hanako,@crezero
deny
   特定のユーザー、グループを禁止します。
   例 deny:taro,hanako,@crezero
rolist
   特定のユーザー、グループに読み込みのみを許可します。
   例 rolist:taro,hanako,@crezero
rwlist
   特定のユーザーに読み込み、書き込みのみを許可します。
   例 rwlist:taro,hanako,@crezero
veto
   /tmp などトップディレクトリに作成される "lost+found"フォルダをNetatalkで否表示にするには、vetoオプションを使います。
   例 veto:/lost+found/

のオプションがあるようです。
ユーザー名ではなくグループ名を指定する場合は名前の前に@をつけます。
例:「@group」

例えば「/home/hogehoge」を「hogehoge’s home」としてグループ「group」ユーザー「hogehoge」に許可する場合は

/home/hogehoge "hogehoge's home" allow:@group,hogehoge

となります。

今回参考にさせていただいたページ
http://safe-linux.homeip.net/local/linux-netatalk-04.html

netatalk OpenSSL(LeopardでAFP)

Debianのインストールについてまだ書いていませんがちょっと大変だったnetatalkのOpenSSLを使用したMacOSX Leopardとのファイル共有を設定したいと思います。
今回は以下に記載した「Bugとの闘争」さんのページを参考にさせていただきました。(今回はIntel系のパソコンなので「PowerPC」ではなく「i386」に変更します。)

標準のクリアテキストパスワードのnetatalkではLeopardで接続できないらしく「暗号化されたパスワードで認証できるように」しようと思います。

suでrootになっておきます

$ su
# apt-get install libssl-dev
# apt-get build-dep netatalk
# mkdir /tmp/afp
# cd /tmp/afp

/tmp/afp# apt-get source netatalk
/tmp/afp# apt-get install cracklib-runtime
/tmp/afp# apt-get install cracklib2-dev

ここでlsでバージョンを調べておきます

/tmp/afp# ls
netatalk-2.0.3	netatalk_2.0.3-4.diff.gz  netatalk_2.0.3-4.dsc	netatalk_2.0.3.orig.tar.gz

この場合「netatalk-2.0.3」を今後使用します。

/tmp/afp# cd /tmp/afp/netatalk-2.0.3/debian
/tmp/afp/netatalk-2.0.3/debian# DEB_BUILD_OPTIONS="ssl debuild"
/tmp/afp/netatalk-2.0.3/debian# echo $DEB_BUILD_OPTIONS

これで「ssl debuild」が返ってくればOK

/tmp/afp/netatalk-2.0.3/debian# export DEB_BUILD_OPTIONS
/tmp/afp/netatalk-2.0.3/debian# cd ../
/tmp/afp/netatalk-2.0.3# dpkg-buildpackage -r

ちょっと時間がかかります。
一応既存のファイルの削除をしておきます。

/tmp/afp/netatalk-2.0.3# dpkg -r netatalk
/tmp/afp/netatalk-2.0.3# cd ../

ここでインストールする「deb」ファイルを確認します。

/tmp/afp# ls
netatalk-2.0.3  netatalk_2.0.3-4.dsc  netatalk_2.0.3-4_i386.deb
netatalk_2.0.3-4.diff.gz  netatalk_2.0.3-4_i386.changes  netatalk_2.0.3.orig.tar.gz

ということで「netatalk_2.0.3-4_i386.deb」です。

/tmp/afp# dpkg -i netatalk_2.0.3-4_i386.deb

「Starting AppleTalk services (this will take a while):」が表示されてしばらくすると、「atalkd papd afpd cnid_metad.」が出て起動できました。

設定はまた次回。

今回参考にさせていただいたホームページ
http://grid8.blogspot.com/2007/11/netatalk-openssl.html

Apache2 + PHP + MySQLのインストール

今回はサーバらしくWebサーバーのインストールをしたいとおもいます。
今回は「apache2」とよく使う「PHP4」「MySQL」もインストールします。

まずは「Apache2」から

<code>
$ su
# apt-get install apache2
</code>

続いて「PHP4」「MySQLServer」

<code>
# apt-get install php4 php4-dev
# apt-get install mysql-server
# apt-get install libapache2-mod-php4
</code>

これでインストールは完了。
このままでは「MySQL」 のrootパスワードが空なのでrootパスワードを設定します。この「root」ユーザーはDebianの「root」ユーザーとは関係ありません。(同じパスワードにしてもいいですが。)

<code>
# /usr/bin/mysqladmin -u root password '設定するパスワード'
</code>

としておきましょう。

ではそれぞれ確認をしていきます。
サーバー自身なら「http://localhost/」あるいはLANにつながっているコンピューターのブラウザから「http://サーバーのIPアドレス/」
に繋いでみましょう。
自動的に「http://サーバーのIPアドレス/apache2-default/」にリダイレクトされて

It works!

と出れば「Apache2」のインストールは成功しています。

次に「PHP4」の確認をしましょう。
Apache2では標準で「/var/www」をドキュメントルートとしています。
ドキュメントルートとは「http://サーバーのIPアドレス/」と接続されたときにこのフォルダーを示すということです。
つまり「http://サーバーのIPアドレス/index.htm」は「/var/www/index.htm」を示すということです。
「PHP4」の確認をするために実際に何か「php」のスクリプトを「/var/www」に作ってみましょう。

<code>
# vi /var/www/test.php
</code>

として新しく「test.php」を作成し

<code>
  &lt;html&gt;
  &lt;head&gt;
  &lt;title&gt;php information&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
  &lt;?php phpinfo(); ?&gt;
  &lt;/body&gt;
  &lt;/html&gt;
</code>

と記述して保存します。
先ほどと同じようにブラウザから「http://サーバーのIPアドレス/test.php」へ接続し、PHPの情報が表示されれば成功です。
phpinfoの一例

では「MySQL」の確認は「phpMyAdmin」のインストールとともに次回にしたいと思います。

Debianでサーバー

いままでWindows XPでサーバーをたてる実験をいろいろやっていたのですが、今回本格的にホームページなどを作るために一からサーバーの構築をすることにしました。
やはり、GUIの設定は便利ではあったのですが、Windowsは重いので友達にLinuxのDebianを勧められました。OSのインストールも無事に終わりいろいろと設定できたのでDebianで運用していくことにします。

今後備忘録も兼ねてこの出張版にインストールや設定・管理の記録も載せていこうと思います。