初期インストール
久しぶりのサーバー インストール。まえのように、ハードディスク2台に、RAID1 組んでインストール。廃盤になっちゃたけど がわたしの教科書。
途中のサーバー はなにもインストールせずに終了。まずはともあれ、vimとsshをいれる。
$ sudo apt-get install vim ssh
でもって、ネットワークを固定アドレスに変更
$ sudo vi /etc/network/interfaces
通常、LAN内のパソコンのIPアドレスは、ルーターによってその都度、IPアドレスが振られます。サーバー は、その場所を特定する必要が多いため、IPアドレスを固定に設定します。LAN内のIPアドレスは 192.168.99.・・・ という様になって、最後の数字が順番に振られます。他のパソコンと競合しないために、LAN内のパソコンなどの無線機器数+3~4程度の数字を設定したほうが良さそう。(最近無線機器が多いしね)
iface eth0 inet dhcp
ここを以下の様に直します。99 の部分は ご家庭のルーター設定に左右されます。また、一行めの最後の数字は同じルーター内にあるパソコンのそれぞれ振られる番号なので、パソコンの台数等により異なります。ルーターの設定等でご確認ね。
iface eth0 inet static
address 192.168.99.10
netmask 255.255.255.0
gateway 192.168.99.1
dns-nameservers 192.168.11.8 202.238.95.24 //一例ね。プロバイダーのDNSサーバーを並べて書くとか、LAN内のDNSサーバーを書くとか
dns-serch dns.so-net.ne.jp //so-net の場合だけど、これでよいか不明。この行なくても動くかもね。
ここの記述は、12.04からStatic(固定IP)の場合には、変わった模様。インターネットつながってるのに、apt-get できなくなって、慌てて調べたよ。。。 つづいて、ネットワーク再起動
$ sudo ifdown eth0
$ sudo ifup eth0
これで、ssh でリモート接続できる様になります。リモート側からは、
$ ssh felix@192.168.99.10
の様にアクセスします。(サーバー からキーボードとモニターを外せます。)
AMPP設定
Apacheを実行する最低限の権限を有するユーザーを設定
$ sudo adduser flabo
[password]
(名前、部屋番号、等を聴聞してきますので必要に応じて入力します。)
つづいて パッケージインストール
$ sudo apt-get install php5 libapache2-mod-php5 mysql-server php5-mysql php5-sqlite phpmyadmin postgresql php5-pgsql phppgadmin
Apacheの設定
ウェブページを設置する /virtual 以下のディレクトリを作成します。この /virtual は、最終的にはいくつかのウェブページの バーチャルホストになることを想定しています。
sudo mkdir /virtual
sudo mkdir /virtual/www
sudo mkdir /virtual/log
sudo mkdir /virtual/log/apache2
sudo chown -R flabo:flabo /virtual/*
wwwがapacheのルートになるので、flabo にオーナー変更。また、log は Apacheのログディレクトリになる
$ sudo vi /etc/apache2/sites-enabled/000-default
ここで、以下の様に設定
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /virtual/www/ //ルートに変更
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /virtual/www/> //ルートに変更
Options FollowSymLinks MultiViews //途中のIndexes を削除
AllowOverride None
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 ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
ログディレクトリが外部設定になってるね。
sudo vi /etc/apache2/envvars
で22行目あたりを
export APACHE_LOG_DIR=/virtual/log/apache2$SUFFIX
てな感じに書き直し。 後ろの $SUFFIX はなんのこっちゃ不明w
さらに独自の設定ファイルを作ります。
$ sudo vi /etc/apache2/conf.d/flabo.conf
で
User flabo
Group flabo
ServerName felix-labo.org:80
UseCanonicalName On
コンテンツを置く場所が /virtual/www/ で Apacheを起動するのが、そのファイルのオーナーであるflaboということになります。これで、この中のコンテンツの権限は、
$ chmod 700 -R /virtual/www
という様にユーザー以外は何もできないように設定することができます。レンタルサーバー では決してできない方法ですが、これで、flabo を乗っ取られる以外、内部のファイルを外から変更されることがなくなります。(もちろんrootをとられてしまえば別ですが・・・)加えて万が一flaboを乗っ取られたとしても、flaboは、他のどこにも属さないユーザーなので、重大な設定ファイルが書き換えられることはありません。(不便だからといって、flabo に sudo 権限を与えたりしない様にしましょう。)
テストしてみます。
$ su - flabo
$ cd /virtual/www
$ vi ./index.html
で適当に・・・
Hello felix-labo!
とでも打って
$ logout
$ sudo /etc/init.d/apache2 restart
これで
http://192.168.99.10
などでアクセスするとちゃんと表示されると思います。
php.iniの内容を書き換えます。主にセキュリティ上の観点です。
sudo vi /etc/php5/apache2/php.ini
書き換える内容は以下のとおりです。コメント化をはずすだけのものもあります。
(270行目付近)
memory_limit = -1
(476行目付近)
default_charset = "UTF-8"
(877行目付近)
date.timezone ="Asia/Tokyo" //timezone指定しないとエラーがでるときあり。
(1157行目付近)
mbstring.language = Japanese
(1167行目付近)
mbstring.internal_encoding = UTF-8
(1189行目付近)
mbstring.substitute_character = none;
反映するにはApacheリスタート
$ sudo /etc/init.d/apache2 restart
MySQL設定
実行ユーザーの設定を行います。まずはルートユーザーのパスワード設定から
$ mysql -u root -p
[password]
続いて、Webコンテンツ用のデータベース実行ユーザーを設定。
mysql> create database webkintai;
(他にも、作りたいDBがあれば、ここでつくります。)
mysql> create user flabo@localhost identified by 'pppppppq';
mysql> grant usage on *.* to flabo@localhost;
mysql> grant all on webkintai.* to flabo@localhost;
(他に作ったDBで権限をもたせたければ、ここで設定します。)
mysql> quit
簡単に解説をすると一行目でウェブページ用のデータベースを作成し、二行目で実行ユーザーを作ります。三行目で作ったユーザーに対するすべての権限を剥奪(usage)します。その後、Webkintai に対してだけすべての権限を付与します。
次に文字化け防止用に、my.cnf の設定を変更します。
$ sudo vi /etc/mysql/my.cnf
[mysqld]の最後に以下の2行を追加します。
character-set-server=utf8
skip-character-set-client-handshake
再起動して設定を有効にします
$ sudo /etc/init.d/mysql restart
phpmyadmin の設定
apt-get でいけるから なんにもするひつよう無し。 192.168.99.10/phpmyadmin の様にしてアクセス可能
phppgadmin の設定
ユーザーを追加します。phppgadmin は、postgreSQLの初期ユーザーpostgresを初期状態でログインできない様にしています。このポリシーに合わせて新たなスーパーユーザーを作成したいと思います。
$ sudo passwd postgres
(ここでパスワードを設定します。)
$ su - postgres
(以下で一般的に使用するユーザーを作ります。username を任意の名前にしてください)
postgres@mv1c3e:~$ createuser -P username
(ここでパスワード設定と権限設定をします。特にこだわらなければ、Y でよいと思います。)
$ logout
phpmyadminが、初期設定がフリーアクセスだったのに対し、phppgadminは初期設定で、自分自身しかアクセスできない様になっています。リモートアクセスは出きるようにしたいので、
$ sudo vi /etc/apache2/conf.d/phppgadmin
で、10行目付近を以下の様に変更
order deny,allow
deny from all
allow from 127.0.0.0/255.0.0.0 ::1/128
allow from 192.168.99 //追加
# allow from all //ここをコメントはずせば、どこからでもログイン可能
で再起動
$ sudo /etc/init.d/apache2 restart
これで晴れて /192.168.99.2/phppgadmin の様にアクセスできる様になります。
ドメイン・ネットワーク設定
サーバー/ネットワーク設定 を見てね
時刻あわせ ntp
$ sudo apt-get install ntp
$ sudo vi /etc/ntp.conf
で、 デフォルトのサーバー を日本のサーバー に変更
(18行目付近)
# more information.
#server 0.ubuntu.pool.ntp.org //コメント化
#server 1.ubuntu.pool.ntp.org //コメント化
#server 2.ubuntu.pool.ntp.org //コメント化
#server 3.ubuntu.pool.ntp.org //コメント化
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
# Use Ubuntu's ntp server as a fallback.
#server ntp.ubuntu.com //コメント化
リスタート
$ sudo /etc/init.d/ntp restart
時刻合わせ
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+ntp1.jst.mfeed. 210.173.160.56 2 u 51 64 377 13.435 -19.847 6.573
*ntp2.jst.mfeed. 210.173.160.56 2 u 41 64 377 13.552 -27.846 4.848
+ntp3.jst.mfeed. 210.173.176.4 2 u 45 64 377 13.893 -21.380 5.509
うむ。。。 あわない感じ。。。
CPU温度調査 sensors
$ sudo apt-get install lm-sensors
で、自動?設定
$ sudo sensors-detect
ひたすら ENTER ENTER って感じ進みます。
$ sensors
と打つと。。。
coretemp-isa-0000
Adapter: ISA adapter
Core 0: N/A (crit = +125.0°C)
Core 1: +43.0°C (crit = +125.0°C)
二つコアが温度表示されないのは。。。 まいっか。。