作成開始 : 平成25年01月31日(木) 最終更新 : 平成25年02月11日(月)

Vine Linux 6.0 SSH,Vino, Samba, Apache2 + PHP5 インストール・設定のまとめ


Vine Linux 6.0 をインストールしたのに伴い、Samba, Apache2 + PHP5 のインストール・設定についてまとめてみました。
残念ながらインストール過程の画像とかないので、結果で記載します。
実行は全て一般ユーザから必要に応じて root ユーザに移行して行いました。

実装したPCは相変わらず超低スペックなやつです。


 ↑
夜撮影したのでフラッシュの映り込みはごめんしてください。

1.SSH の設定

私は Windows端末から FreeBSDとかUNIXに接続してコマンド操作する時に「Tera Term + TTSSH」を使っています。
本当は「秘密鍵」や「公開鍵」を作成してセキュリティ強化すればいいと思いますが、自分の場合インターネットからSSH使って接続する気はない(ポート22はルータで閉じています)ので SSH バージョン1 で使っています。

これらの環境設定は /etc/ssh/sshd_config にあります。
# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2 -----------------> ここを Protocol 2,1にします。
ファイアウォールを有効にしている場合は「SSH」を許可してあげる必要があります。
「システム」→「システム管理」→「セキュリティレベルとファイアウォールの設定」で設定します。
そして、SSH を再起動します。「アプリケーション」→「アクセサリ」→「端末」として GNOME端末からコマンド実行します。
/etc/rc.d/init.d/sshd restart
GUIなら「システム」→「システム管理」→「サービス」で再起動します。
そして、クライアントPCから接続してみます。最初は鍵の受入操作あります。ここで「Known hostリスト」に追加すると以降は受入操作しなくても接続できます。

2.Vino の設定

「システム」→「設定」→「インターネットとネットワーク」→「リモートデスクトップ」で使えるように設定します。
インストールされていない時は、「システム」→「システム管理」→「Synaptic パッケージマネージャ」で vino で検索しインストール指定して適用しインストールします。
色々できますけど、私は以下のようにしました。
ファイアウォールを有効にしている場合は「ポート:5900」を許可してあげる必要があります。
「システム」→「システム管理」→「セキュリティレベルとファイアウォールの設定」で設定します。

 ↑
Windows 7の「Urtra VNCビューワ」から接続したところです。
いい感じに使えますね。
でも、難点は Vine Linux 側で ユーザでログインしないと vino server に接続できないことですね。
VNCサーバーだと違うんでしょうけど・・・・まぁ、一回だけのログインだからいいや。・・・なぁーんてことを前にも書いたね。

3.Sambaのインストールと設定

「システム」→「システム管理」→「Synaptic パッケージマネージャ」で起動します。そして samba を検索します。
表示されたパッケージから samba, samba-swat をマークし右クリックでインストール指定すると、inetd と samba が依存関係により追加されるようになります。
「要求された変更追加」で「マーク」をクリックします。すると「Synaptic」のパッケージ情報部(?)がかわり「適用」「プロパティ」がクリック可能になります。
「Synaptic」のパッケージ情報部(?)の「適用」をクリックすると「以下の変更を適用しますか?」となるので「適用」をクリックします。
すると「ファイルのダウンロード」が始まります。そして「変更の適用」に移ります。「変更の適用」が終了すると「Synaptic」のパッケージ情報部(?)が次のようになります。
OSインストール時に「グラフィカルブラウザ」を選択すれば、samba-swat をインストールで「アプリケーション」→「システムツール」に「Sambaの設定」があらわれます。
今回は「グラフィカルブラウザ」を選択しなかったのであらわれませんでした。
ここまでだけでは次回起動時に samba が自動起動しないので「システム」→「システム管理」→「サービス」を起動し、「nmb」「smb」をマークし「有効」にして「開始」します。
「swat」については、「有効」にします。
swat は要求に応じて xinetd サービスによって起動されます。
セキュリティを有効にしている場合は、「システム」→「システム管理」→「セキュリティレベルとファイアウォールの設定」を起動して、「信頼できるサービス」の中から Samba にチェックを入れて OK をクリック。そして、追加のswat ポート:901を登録します。
最後に /etc/hosts.allow に以下を追記します。
swat: localhost 127.0.0.1
swat: 192.168. ALLOW
また、/etc/xinetd.d/swat を以下のように編集し、LAN内にある他のPCからアクセスできるようにします。
そして、他のパソコンから http://hostname_or_ip:901 で接続します。
するとユーザー名とパスワードの入力が求められますのでそれぞれ入力しOKをクリックします。
これで Webベースの設定画面が表示されます。
後はGLOBALS, SHARESとかで設定します。ここが色々と設定するところがあるので、Helpとか見ながら設定しましょう。
私のところは、自宅内LANでのみ使用なので、共有は USERとかDOMAINとかでなくSHAREにしてゲストもOKにしています。
見られて悪いファイルも無いのでパスワードも設定していません。
VIEW で見た一覧は ここ です。完全表示したものです。

4.apache2 と php のインストール、設定

「システム」→「システム管理」→「Synaptic パッケージマネージャ」で起動します。そして apache2 を検索します。
表示されたパッケージから apache2, php5-apach2 をマークし右クリックでインストール指定すると、php5 と php5-pear が依存関係により追加されるようになります。
(mod_sslは必要無かったので選択しませんでした。
「要求された変更追加」で「マーク」をクリックします。すると「Synaptic」のパッケージ情報部(?)がかわり「適用」「プロパティ」がクリック可能になります。
「Synaptic」のパッケージ情報部(?)の「適用」をクリックすると「以下の変更を適用しますか?」となるので「適用」をクリックします。
すると「ファイルのダウンロード」が始まります。そして「変更の適用」に移ります。「変更の適用」が終了すると「Synaptic」のパッケージ情報部(?)が次のようになります。
とりあえず動作確認のため /etc/apache2/conf/httpd.conf を編集します。編集したところだけ以下に記載します。
クライアントに返信するサーバ応答ヘッダに含める情報を制御する。(ディフォルトは ServerTokens OS)
  ↓
ServerTokens Prod
管理者のメールアドレス(ディフォルトは root@localhost)
  ↓
ServerAdmin master@takaq1.plala.jp
自分のドメイン名を指定(ディフォルトはリマーク)
  ↓
ServerName takaq1.plala.jp
SSIとCGIを有効にする。(ディフォルトは Options FollowSymLinks)
  ↓
Options Includes ExecCGI FollowSymLinks 
.htaccessの有効化する。(ディフォルトは AllowOverride None)
 ↓
AllowOverride All
Perl CGIを動くようにする。(ディフォルトは #AddHandler cgi-script .cgi)
  ↓
AddHandler cgi-script .cgi .pl
とりあえずここまでにしておいて動くかどうか見てみましょう。
ここまでだけでは次回起動時に apache2 が自動起動しないので「システム」→「システム管理」→「サービス」を起動し、「apache2」をマークし「有効」を押します。有効になったら「開始」を押します。
正常に動作すると下図のようになりますが、最初は起動状態になりませんでした。
「端末」からコマンドで起動すると以下メッセージで起動に失敗してしまいます。
[root@lavie conf]# /etc/rc.d/init.d/apache2 start
Apache2 HTTP Serverを起動中: [Sat Feb 02 20:31:03 2013] [warn] module php5_module is already loaded, skipping
[Sat Feb 02 20:31:03 2013] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
Pre-configuration failed
[ 失敗 ]
・・・で調べてみると「apache2のMPM(Multi Processing Module)がVineLinuxの場合、デフォルトでworkerモデルというものになっているためです。」とのことです。
次のようにして prefork モデルにすることができます。
[root@lavie conf]# /sbin/update-alternatives --config apache2

2 プログラムがあり 'apache2' を提供します。

選択 コマンド
-----------------------------------------------
+ 1 /usr/sbin/apache2.worker
* 2 /usr/sbin/apache2.prefork

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
[root@lavie conf]#
確認のためもう一回実行してみました。
[root@lavie conf]# /sbin/update-alternatives --config apache2

2 プログラムがあり 'apache2' を提供します。

選択 コマンド
-----------------------------------------------
1 /usr/sbin/apache2.worker
*+ 2 /usr/sbin/apache2.prefork
なるほど、変わってますね。
では、起動してみましょう。
[root@lavie conf]# /etc/rc.d/init.d/apache2 start
Apache2 HTTP Serverを起動中: [ OK ]
おぉ、無事起動しました。
セキュリティを有効にしている場合は、「システム」→「システム管理」→「セキュリティレベルとファイアウォールの設定」を起動して、「信頼できるサービス」の中から WWW にチェックを入れて OK をクリック。
そして、http://hostname or IP Addres で標準のトップページが表示されるか確認します。
うまく表示されたらドキュメントルートなどを設定して、さらにディレクティブでセキュリティを確保します。
また、ログ形式や出力場所、エラー時のファイルなども設定します。
apache2 を再起動した後、再度 http://hostname or IP Addres で設定どおりの表示となるか確認します。
次はphpの設定をします。設定は /etc/php5/php.ini です。
その末尾に以下の記述があります。
どうやら、基本的なところはこれを使うようです。サイト固有部分を他のディレクティブに書くようです。
また、Apache2 の httpd.conf に以下を追記します。
AddType application/x-httpd-php .php

DirectoryIndex に index.php を追加してもよいでしょう。

LoadModule php5_module modules/libphp5.so については、追記する必要がありません。
 追記して Apache2 を再起動すると「すでにロードしてあるよ・・・」みたいなのを表示しました。

※悪意を持ってアップロード (あるいは作成) された exploit.php.jpg のようなファイルが PHP として実行されてしまわないように以下を追記しましょう。

<FilesMatch "\.ph(p[2-6]?|tml)$">
          SetHandler application/x-httpd-php
</FilesMatch>


※また、拡張子 .phps のファイルを PHP ソースファイルとして扱うには、これを追加します。

<FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
</FilesMatch>


(上記の「※」は PHP: Apache 2.0 (Unixシステム用) - Manualより引用しています。

設定が終わったら Apache2 を再起動します。
以下を記述したファイルをエディタで作成し test.php とかというファイル名で保存します。
<?php
  phpinfo();
?>
そしてブラウザから http://serverIP/test.php でPHPの設定情報が表示されたらOKです。
設定内容が思惑どおりになっていることを確認します。
Apache2 のログローテートについては Vine4でApache2を試す を参照ください。

5.ProFTPD

Perl スクリプトを設置しようとして、Windows PC から Vine Linux の samba共有へスクリプトをコピーしたら、ファイル中にコントロールコードが入ってしまいスクリプトを実行するとエラー500になってしまったので、FTPサーバーである Proftpd をインストールしました。(OSインストール時に選択しなかったので・・・)
Windows PC にて FreeBSD <--> Linux とか FreeBSD同士だとちゃんとコピーするのにね。
「システム」→「システム管理」→「Synaptic パッケージマネージャ」で起動します。そして proftpd を検索します。
表示されたパッケージから proftpd をマークし右クリックでインストール指定します。
「要求された変更追加」で「マーク」をクリックします。すると「Synaptic」のパッケージ情報部(?)がかわり「適用」「プロパティ」がクリック可能になります。
「Synaptic」のパッケージ情報部(?)の「適用」をクリックすると「以下の変更を適用しますか?」となるので「適用」をクリックします。
すると「ファイルのダウンロード」が始まります。そして「変更の適用」に移ります。「変更の適用」が終了すると「Synaptic」のパッケージ情報部(?)が次のようになります。
ここまでだけでは次回起動時に proftpd が自動起動しないので「システム」→「システム管理」→「サービス」を起動し、「proftpd」をマークし「有効」を押します。有効になったら「開始」を押します。
セキュリティを有効にしている場合は、「システム」→「システム管理」→「セキュリティレベルとファイアウォールの設定」を起動して、「信頼できるサービス」の中から FTP にチェックを入れて OK をクリック。
とりあえず、この状態で接続してみます。

 ↑
できましたね。
後は /etc/proftpd.conf を設定します。
私はとりあえず、次の設定を変更、追加しました。これ以外の説明は ProFTPD を使ってみる を参照ください。
ServerName "takaq1.plala.jp FTP Server"  # サーバーの名前です。ログインした時に表示されます。
DefaultRoot       ~  # ユーザーのディレクトリだけをアクセス可能にする (DefaultServerのすぐ下あたりに追加, 「~」はチルダです)

以下はファイルの最後あたりに追加
# 接続時にDNSを引かない・・・・接続が早くなります。
UseReverseDNS off
IdentLookups off
ExtendedLog /var/log/proftpd.log  # ログを保存する。
# Rootログインをしない
RootLogin off
# ディレクトリを表示する時の ls コマンドのオプションを指定する。
# .(ドット)で始まるファイル(.htaccessなど)を常に表示するようにするために、"-a"を指定します。
ListOptions "-a"
そして、ProFTPDを再起動して接続確認してみます。

 ↑
接続早くなったし、環境が変わりました。
xinetd用の設定ファイルを用意して、xinetdから起動したいとも思いますが、とりあえず動いたのでここまでとします。
検索すると設定方法は結構ヒットします。
・・・と思いましたが、xinetd から起動するようにしてみました。
(1) ProFTPDの停止
これまでの設定で standalone で動いていたのを停止します。(いきなりxinetdにする場合はこれ不要ですね)
「システム」→「システム管理」→「サービス」を起動し、「proftpd」をマークし「停止」をクリックして停止させます。
(2) ServerType の変更
/etc/proftpd.conf の ServerType を inetd にします。

ServerType inetd
(3) /etc/xinetd.d/proftp の作成
ProFTPDをxinetd 経由で自動起動させるように/etc/xinetd.d/proftp を作成します。
service ftp
{
disable = no
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/proftpd
}
これを保存した時点で、「システム」→「システム管理」→「サービス」を起動し「proftp」をマークしてみると xinetd から起動されるというものに変わっていました。
そしたら、xinetd を再起動します。コマンドなら # /etc/init.d/xinetd restart ですが、せっかくなので GUI でします。

  ↑
xinetd をマークして「再開始」です。
そして、クライアントPCから接続確認します。

 ↑
うん、いい感じですね。
21番ポートがLISTENになっていることを確認します。
接続すると・・・
standalone では、proftpd が常駐することになります。対して、inetd モードでは、アクセスがあったときに proftpd が起動するようになります。 なので、接続が無いと proftpd のプロセスはなくなります。
【平成25年02月06日(水) 追記】
日本語ファイルが文字化けしてファイル名が切れるような形になっていたので、調べてみた。設定ファイル /etc/proftpd.conf を見てみると以下の記述が。
CharsetLocal UTF-8
CharsetRemote UTF-8
これをコメントアウトして /etc/rc.d/init.d/xinet restart すると、通常通り、日本語ファイルも正常にアップできました。
【平成25年02月11日(月) 追記】
anonymous FTP の利用ができないようにしてみました。
ftp://lavie とすると以下をブラウザに表示します。
「表示」 -> 「エクスプローラで開く」とするとセキュテイ警告を表示します。「許可する」をクリック
anonymous FTP でのアクセスフォルダが見えてきます。
・・・で /etc/proftpd.conf にある anonymous FTP に関するディレクティブを全て「#」でリマークし /etc/rc.d/init.d/xinet restart してアクセスしてみると、セキュリティ警告の後に以下を表示してユーザID、パスワードの入力を求めるようになります。
それぞれ入力して「ログオン」をクリックすると自分のログイン・ディレクトリを表示しファイル操作ができるようになります。

戻る

サイトトップへ