Ubuntu 9.04 ServerでFTPもできるプロバイダ仕様LAMPサーバ構築
 

クラウドな今、My LAMP Server 構築というのは、少々後ろ向きっぽいですが、とにかく Ubuntu 9.04 Server がでました!
私は Ubuntu Desktop でサーバ構築してしまっていますし、現在はC言語で FastCGI Only ですので、基本が On The Memory Original DataBase になってしまいましたので、LAMPは全く使いませんが、、、

ボッタクリのボラクルとも揶揄されるOracle社にSun Microsystems社が買収され、
  Javaはどうなっちゃうの?
 NetBeansはどうなっちゃうの?
 Eclipse(IBM)とJavaの関係はどうなっちゃうの?
 OpenOffice.orgはどうなっちゃうの?
 MySQLはどうなっちゃうの?
  LAMPスタックはどうなっちゃうの?
  Solarisはどうなっちゃうの?
 VirtualBoxはどうなっちゃうの?
などなど、心配が尽きません。
Sun Microsystems社は好きだった会社だけに残念の一言です。。。

けれど、高額なOracleに頼らなくても、無料で素晴らしいデータベースサーバは作れます。
ということで、今回は「がんばれMySQL」と追悼の意を込めて、プロバイダのように、たくさんのユーザが共存できるLAMPサーバ構築方法を伝授しま す。
私と同じ「貧乏な庶民」の皆さんも頑張ってLAMPサーバを構築して、MySQLを応援しましょう!

 

★ルータの設定
☆ルータ外部のアドレス変換の設定を行う(ルータのIPアドレスとアクセスしてきたポート番号をサーバのIPアドレスとポート番号に変換)
 ・SSH Server
 ・Web Server
 ・MySQL Server
 ・FTP Server
 などの各種サーバのアドレス変換テーブルを作成
☆ルータ内部のDHCP設定を調整する(サーバにDHCPアドレスがあたらないようにする)
 ・DHCPでもアクセスできますが、返って面倒なので固定IPにしてしまいましょう

 

★Ubuntu 9.04 LAMP Server の構築
☆LiveCDからSSH & LAMP Server インストール
☆DHCP環境の場合は、インストール時にネットワークケーブルははずし、DHCPの自動設定にならないように設定した方が楽に設定できる

    「Ubuntu9.04Server」のインストール画面にて「日本語」を選択しEnter
    「‾Ubuntuサーバーをインストール」を選択しEnter
    するとインストールが開始される
    keyboard選択画面で「Japan」を選択しEnter
    Keyboard layoutも「Japan」を選択しEnter
    CapsLockの選択画面で「CapsLock」を選択しEnter
    すると各種インストールが行われる
    しばらくして、ネットワークの自動設定が開始されたら「キャンセル」でEnterを選択すると「ネットワークの自動設定に失敗しました」と表示さ れる
    「続ける」でEnter
    「ネットワークの設定方法」を「ネットワークを手動で設定」でEnter
    「IPアドレス」を任意に設定しEnter
    「ネットマスク」を任意に設定しEnter
    「ゲートウェイ」を任意に設定しEnter
    「ネームサーバアドレス」を任意に設定しEnter
    「ホスト名」を任意に設定しEnter
    「ドメイン名」を任意に設定しEnter
    すると各種インストールが行われる
    しばらくすると、ディスクのパーティショニングの設定画面になる
    「パーティショニングの方法」を任意に設定しEnter
    「パーティショニングするディスクの選択」を任意に設定しEnter
    「ディスクに変更を書き込みますか?」と聞かれるので「はい」に変更しEnter
    「新しいユーザの本名(フルネーム)」にアルファベットでフルネームを入力しEnter
    「あなたのアカウントのユーザ名」に任意のユーザ名(短い方が後々楽)を入力しEnter
    「新しいユーザのパスワードを選んでください」に任意のパスワードを入力しEnter
    「確認のため、再度パスワードを入力してください」に再度パスワードを入力しEnter
    ここで、パスワードが8文字未満の場合、警告が表示され「脆弱なパスワードを使いますか?」と聞かれるので任意の対応をする
    「ホームディレクトリを暗号化しますか?」と聞かれるので「いいえ」を選択しEnter(ここで「はい」を選択するとWebServerで困るこ とになる)
    「HTTPプロキシの情報(なければ空)」と聞かれるので任意に設定しEnter
    するとしばらくaptの設定が行われ、その後「ソフトウェアの選択とインストール」の画面が出る
    「このシステムのアップグレードをどのように管理しますか?」と聞かれるので「セキュリティアップデートを自動的にインストールする」を選択し Enter
    しばらくすると「ソフトウェアの選択」画面が出る
    矢印キーとスペースキーで「LAMP Server」と「OpenSSH Server」を選択しEnter
    「MySQLの”root”ユーザに対する新しいパスワード」を聞いてくるので、任意のパスワードを入れEnter
    再入力を求められるので、再度パスワードを入れEnter
    するとしばらくの間インストールが続き「インストールの完了」画面が出るので、「続ける」でEnter
    すると再起動するので、ユーザ名、パスワードを入力しログインのテストをする
    テストが完了したら「sudo shutdown -h now」と入力しEnterを押し、その後パスワードを入力しで終了する
 

★初期設定(アップデートとアップグレード)
☆パッケージ管理システムのダウンロード可能サイトリストの更新
sudo apt-get update
☆インストール済みパッケージの更新
sudo apt-get upgrade

 

★アクセス&編集方法
☆UTF-8の日本語表示や、通常利用のセキュアな遠隔操作のためにも、直接よりはputtyなどのSSHクライアントでアクセスしましょう
☆エディタを nano にしてありますが、 vi でも Emacs でも、お好みでどうぞ

 

★ネットワーク設定
☆IPアドレスの設定(変更が必要なとき)
赤字のエリアは各自の環境に合わせて設定
ファイル名:/etc/network/interfaces
編集方法:sudo nano /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.xxx
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.1.xxx
dns-search xxxxxxxx

☆ネットワークインターフェースの終了・起動
sudo ifdown eth0
sudo ifup eth0

 

★FTP Server 設定
Windows対策でFTPもインストールしていますが、セキュアを考えると本来はFTPよりもscp等のSSH経由でのアップロードをすべきなのです。
FTPやPOP、telnet、HTTP等では、ひら文(暗号化していないテキスト)でIDやパスワード等を送信してしまいます。
ということは、簡単に盗聴されてしまう訳です。
インターネット上に置いてある、レンタルサーバのメールなどは、POPS等に対応していない場合、IDもパスワードも内容も全てインターネット上で大公開 状態なのです。
通常のプロバイダメールでも、POPS等に対応していなければ、そのプロバイダのLAN内では盗聴可能です。
また、Webメールでも同様のことが言えます。
ほとんどのWebメールが「全く暗号化していない」もしくは「IDとパスワードのみ暗号化」という状況で、私の知る限り唯一GoogleのGmailの み、IDもパスワードも内容も全てSSL暗号化できるので、唯一安心なメールシステムといえます。(ただ、その情報もGoogleにはばれています が、、、)
要は公開してはならない情報はFTP、POP、telnet、HTTP等の非暗号化プロトコルでは送信しないことが原則です。
話をFTP系に戻しますと、Linux to Linuxならばscpがお勧めで、クライアント側にSSHクライアント、サーバ側にSSHサーバを入れておけば、
scp ファイル名 ユーザ名@サーバ名:ファイル転送先パス
例)scp filename username@servername(ip address):/home/username
でいとも簡単にSSH経由のセキュア転送ができます。
☆FTPのインストール
sudo apt-get install proftpd

☆FTPの設定
赤字のusernameは全エリアアクセス権限を持つユーザ 名
チルダ「‾」と「!」の間にスペースがありますので、ご注意を
ファイル名:/etc/proftpd/proftpd.conf
編集方法:sudo nano /etc/proftpd/proftpd.conf

# DefaultRoot                ‾

DefaultRoot                   ‾ !username

FTP再起動
sudo /etc/init.d/proftpd restart

 

★Web Server 設定
☆Apache2の設定
赤字のエリアは各自の希望に合わせて設定
fastcgiを動作させたいときは、更に拡張子を追加する等の変更が必要
ファイル名:/etc/apache2/sites-available/default
編集方法:sudo nano /etc/apache2/sites-available/default

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /home/
        <Directory /home/*/>
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/*/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                AddHandler cgi-script .cgi .pl .py
                Options ExecCGI
        </Directory>

        ScriptAlias /cgi-bin/ /home/*/
        <Directory "/home/*">
                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>

☆Apache2再起動
sudo /etc/init.d/apache2 reload

 

★MySQL Server 設定
☆日本語を利用できるように、UTF-8の設定
ファイル名:/etc/mysql/my.cnf
編集方法:sudo nano /etc/mysql/my.cnf

[mysqld]のエリアに下記コードを追記
default-character-set = utf8
skip-character-set-client-handshake

[mysqldump]のエリアに下記コードを追記
default-character-set = utf8

[mysql]のエリアに下記コードを追記
default-character-set = utf8

☆MySQLの再起動
sudo /etc/init.d/mysql reload

 

★ユーザ設定
赤字のusernameは操作対象のユーザ名
ユーザの追加
sudo useradd -d /home/username -m username

ユーザの削除
sudo userdel -r username

ユーザパスワードの変更
sudo passwd username

 

★スクリプトアップロードの注意事項
PHP、Perlは文字コードにほとんど問題ないのですが、PythonのみあらかじめUTF-8N(LF)コードでスクリプトを製作しアップしなければ 動作しません。
もちろん、Ubuntu自体がUTF-8ですので、全てUTF-8で統一がベストです。
スクリプトではありませんが、CのCGIを作成するときのコードも当然UTF-8です。

 

★その他注意事項
やっぱりセキュアというからには、本来自分で、SELinux等様々なセキュア対策を講じる必要があります。
その点、ディストリとして標準でかなりセキュアな設定のCentOSが日本人に好まれるのが良くわかります。
更にCentOSはインストールもかなり楽で素晴らしいOSです。
が、自宅にある余ったマシンでサーバ構築する私としては、ハード対応に少し残念さがあります。
ということで、ハードを選ばず、劇的に導入の楽な Ubuntu Server な訳ですが、Ubuntuは特に初心者の方も多いと思いますので、良く理解しセキュアな環境ができるようになるまでは、サーバマシン及びサーバを踏み台に してアクセスできるマシンには、漏洩して困るような情報は入れないでください。
 

 

ここでの文章、画像、検証結果などは全てDreamHopeに著作権があります。リ ンクに関してはTopLink、DeepLinkともに構いませんが、全部・一部の「学術論文等許諾の不必要な引用」以外の引用に関しては禁止します。

Copyright (C) 2009 DreamHope All Rights Reserved .  Access: