VineLinux6.2でWebサーバを構築する覚書

VineLinux6.2でWebサーバを構築する覚書

社内で使っているWebサーバがそろそろ入れ替えかな、という話になり、だったら!だったらわたしにやらせてくださいー!と、今までほとんどWindowsしか触ったことのないわたしが、Linuxをさわってみた記録というかメモというか。


目次

  1. はじめに
  2. マシンにVineLinuxをインストール
  3. ログイン・システム更新
  4. Apache2(Webサーバ)の構築
  5. ProFTPd(FTPサーバ)の構築
  6. PHPのインストール
  7. Samba(ファイルサーバ)の構築
  8. 日本語入力可能にする
  9. MySQL(データベースサーバ)の構築
  10. phpMyAdminでDB操作
  11. あとがき

ひとつの記事にまとめてしまったことを後悔するほど長いです…_(:3 」∠)_

1.はじめに

ローカルネットワーク内で使うWebサーバを構築するのが目的です。FTPでファイル送ったり、LAN内のWindowsサーバを読み込んだり、PHPやMySQLを入れてWordPressが動くようにしていきます。

現時点(2014年5月)で最新のVineLinux6.2、32bit(そちらのほうが互換性がいいんじゃないか、と上司sの薦めにて)をインストールした、わたし個人の環境で起きたことをメモっていきます。

Linuxは学生時代にちょこっとだけ触ったものの、ほぼ初めてな気持ちでやっておりますので、コマンドラインで出来る操作も、フォルダを開いて、該当ファイルをテキストエディタで編集して、みたいなことも多々やっておりますので、同じく初めての方などのご参考になれたらと思います。

2.マシンにVineLinuxをインストール

マシンを用意

社内のPCをWinXPからWin7へ入れ替えした際、もともとXPが入っていて余ったの(スペックはそこそこいいやつ)をひとつもらいました。Linuxインストールの際にHDD初期化してくれるとのことで、XPが入ったままのものをスタンバイ。

メディアの準備

こちらの公式サイトから、VineLinux6.2/32bit のISOイメージファイルをDL。容量大きいのでけっこう時間かかります。それをDVDに焼きました。(USBメモリでもいけるみたいですね。)

インストール

手順はこちらがすっごく分かりやすいです。

用意したディスクをマシンに入れて、再起動するとインストールメニューが表示されるので、「Install – default」を選択して、インストール開始。

個人的な備忘録としては、インストールの種類は「すべて」にしました。使うマシンにWinXPが残っていたので自動パーティションでドライブの初期化を行い、ネットワーク設定で社内で割り振った固定IP・ゲートウェイ・DNSなどをそれぞれ設定。ファイアウォールは有効で、使う目的のWebサーバ(HTTP,HTTPS)とファイル転送(FTP)を許可。リモートログイン(SSH)もあったほうが便利だったかも。

あとはRoot(管理者権限)パスワードと一般アカウントのユーザ名(フルネームは空欄でもOKだった)とパスワードをそれぞれ設定。

3.ログイン・システム更新

そのままではrootログイン出来ない

よっしゃインストール終わったぜー!再起動後のログイン画面で、一般アカウントのユーザ名が表示されてるけど、とりあえずrootで入りたい。「その他」を選んで、ユーザ名を「root」にし、rootパスワードを入れて…

ログインできない。

こちらによると、どうもデフォルトではrootログインできないとのこと。そうだったのか…。参考に従い、先ほど設定した一般アカウントでログイン。

140510-01

デスクトップに出ている [コンピュータ] というアイコンをクリックし、 [ファイルシステム] → etc → pam.d 内の gdm というファイルを編集する。

頭が[ / ]で始まるパスは、[コンピュータ] → [ファイルシステム] の部分なのですね。

さて、この gdm というファイル。管理者権限がないと編集できないファイルらしいので、右クリック、[管理者として開く] を選択して、rootパス…。

怒られた…orz

ここでハマる。まだ何も出来てないところでハマる。最終的には何故か一般アカウントのパスワードで通るという良くわからないことに…。どこのサイトを見てもここはrootパスのはずなのに未だに謎…。しかしとりあえず通ったので次に進む。

/etc/pam.d/gdmの編集

管理者として開けたので、2行目の頭に # をつけてコメントアウト。

#auth required pam_succeed_if.so user != root quiet

保存して再起動すると、[その他] からrootでログインできるようになりました!

システム更新

やっとrootで入れたところで、まずはシステムの更新をしてみる。

先ほども参考にさせて頂いたこちらのサイトの一番下の通りにやってみようと…、うん、えっと、あのコードを打ち込む黒い画面(コマンドライン端末)はどこから…?

140510-02

調べました。ここをクリックすると出てきます!もしくは左上の [アプリケーション] → [アクセサリ] → [端末] でも。

apt-get update
apt-get upgrade

こちらを1行ずつEnterを押すと実行されます。

隠しファイルを表示しておく

ファイルを編集するとバックアップファイルなどが自動で作成されるんですが、デフォルトだと見えない設定です。個人的には見えてるほうが分かりやすいので、出しておきます。(デスクトップ画面上のタスクバー内の)システム → 設定 → ユーザ向け → ファイル管理 をクリックして、

140510-03

ここにチェック。

4.Apache2(Webサーバ)の構築

ではまずWebサーバといえば有名なApacheから。Apache2というものが既にインストールされているはず。

こちらを参考にさせていただきました

コマンドライン端末にて起動

/etc/rc.d/init.d/apache2 start

Apache2を起動してみる。

chkconfig apache2 on

Linux起動時に自動的にapache2が起動するように設定。

動作確認

デフォルトでは /var/www/html がドキュメントフォルダとのことなので、この中に index.html ファイルを作ってみる。右クリック → ドキュメントの生成 → 空のファイル にて、ファイル名を index.html にして、テキストエディタで中身を編集。

<html>
<head></head>
<body>test</body>
</html>

中身は適当に、こんな感じ。で、ブラウザで見てみる…。ブラウザはどこだw

140510-04

ここだった。で、このLinuxのIPを http://192.168.xx.xx/ と叩いてみると…、

でたー!(*゚Д゚*)

たったこれだけなのにすごいなぁ!LAN内のWindowsマシンのブラウザからでも見れました。

設定ファイルの編集

設定ファイル /etc/apache2/conf/httpd.conf をテキストエディタで開いてみる。だいたいデフォルトで良いような予感…とりあえずPHPは使いたいので390行目あたりの

DirectoryIndex index.html index.html.var

を、

DirectoryIndex index.html index.htm index.shtml index.php index.cgi

へ変更しておく。

/etc/rc.d/init.d/apache2 restart

書き換えた場合は要再起動。

5.ProFTPd(FTPサーバ)の構築

今度は、LAN内のWinマシンからFTPソフトを使ってファイルをアップロードできるようにしたい。

こちらを参考にさせていただきました

コマンドライン端末にて起動

今回も既にインストールされているので、

service proftpd start

起動して、

chkconfig proftpd on

Linux起動時に自動的に起動するように設定。

chown -R ユーザ名:グループ名 /var/www/html

rootではFTPサーバーにログインできないので、一般ユーザに権限を与える。グループ名は、(デスクトップ画面上のタスクバー内の)システム → システム管理 → ユーザーとグループから確認できる。

rootは拒否リストに入ってるからログインできないんですね。

別マシンからFTPソフトで動作確認

LAN内のWin7マシンにFFFTPを入れて、上記の一般ユーザでログイン。無事ファイルのやりとりができました!

6.PHPのインストール

WordPressも目的のひとつではありますが、それ以外にもPHPを使って動的なページを組みたいので、PHPは不可欠。

コマンドライン端末にてインストール

apt-get install php5 php5-apache php5-mysql

インストールはこれで終了。Linuxでのソフトインストールって未だに慣れなくてドキドキするw

ApacheのMPMを切り替え

どうもこのままでは動かないらしい。

Apacheは2.0から、起動時にMPM(Multi-Processing Modules)という基本モジュールが選択できるように設計されています。

とのことで、workerモードではPHP拡張機能が使えないらしく、PHPを動かすサーバではpreforkを選択するのが望ましいと。なるほど…、では切り替えを。コマンドライン端末にて、

update-alternatives --config apache2

と、入力すると

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

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

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

デフォルトではworkerになってるので、preforkにするために、「2」を押してEnter。

/etc/rc.d/init.d/apache2 restart

そしてApacheを再起動。

動作確認

ドキュメントルート(デフォルトでは /var/www/html )に test.php というファイルを作成、中身は

<?php phpinfo(); ?>

とだけ。ブラウザから http://自身のIP/test.php を見てみて、

140510-05

こういう画面が現れたら成功!PHP動いたー(*´∀`*)

日本語の文字化けを直す

設定ファイル /etc/php5/php.ini をテキストエディタで開いて見てみる。各セクションにそれぞれ設定項目があるみたいだけど、末尾の [VINE] というところでまとめて書くことも出来る、という感じでしょうか。

[Vine]
date.timezone=Asia/Tokyo
output_buffering = Off
expose_php = Off
memory_limit = 32M
variables_order = "GPCS"
default_charset = UTF-8
extension_dir = /usr/lib/php5
allow_url_include = Off
sendmail_path = /usr/sbin/sendmail -t -i
session.save_path = "/var/php5/session"
session.use_only_cookies = On
session.use_strict_mode = On
session.entropy_file = /dev/urandom
session.entropy_length = 32
session.hash_function = 1
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = pass
mbstring.encoding_translation = On
max_input_time = 30
max_input_nesting_level = 64
max_input_vars = 1000
mysql.default_port = 3306
mysql.default_socket = /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock
pdo_mysql.default_socket= /var/lib/mysql/mysql.sock

デフォルトでこんな感じ。これが、ひっじょーーーに、ハマりました…。かなりあれこれ試したんですが、最終的にとりあえず日本語の文字化けを直すだけなら、わたしの環境ではこのハイライト部分を、

;default_charset = UTF-8

「;」をつけてコメントアウトする。という…。。

/etc/rc.d/init.d/apache2 restart

コマンドラインにてApacheを再起動(そうしないと反映されない)すると、日本語表示ができました。

ううむ、こちらを見るに、

default_charsetとは 出力時にHTTPヘッダとして送信する文字コード名 のこと。
(中略)
ただし、自動でやってくれる機能を除去したので、手動でheader関数でContent-typeを打ち込むこと。それからHTMLにはmetaで文字コードを指定する。(xhtmlなら先頭行も)

とのことなので、php.ini で default_charset を指定しない場合は手動で指定してやれば大丈夫、かな。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>タイトル</title>
</head>
<body>
<p>サンプルテキスト</p>
</body>
</html>

一応、わたしの環境ではこんな感じで header.php などに分割して include して、化けずに動いてます。php.ini は他にも開発環境のために設定したほうが良いところもあるかもしれないので、随時勉強してかなきゃ。

文字化けにハマって試しにいろいろコメントアウトしすぎて後で更に詰まったのですが、phpMyAdminを使う場合は最後の *.default_socket と書いてある3行が必要です。(後述します。)

7.Samba(ファイルサーバ)の構築

同じLAN内にあるWindowsファイルサーバの検索を、PHPを使ってブラウザで行いたいという野望があります。調べてみると、Sambaというもので共有フォルダをLinuxにマウントすれば良いとのこと。で、Sambaも既にインストール済とのこと。すごいな!(たぶん、一番最初のLinuxのインストール時に「すべて」を選んだからですよね。)

こちらを参考にさせていただきました

ユーザ登録

Linuxの一般アカウントと同じユーザ名とパスワードで登録してみます。コマンドラインにて、

smbpasswd -a ユーザ名

パスワードを2回要求されるので、それぞれ入力。

サービスを起動

smb というサービスの他に、nmb という名前からIPアドレスをたどってくれる名前解決サービスもあるらしいです。IPのみで指定するなら smb だけでも良いみたいですが、今後のことも考えて両方起動しておきます。

/etc/rc.d/init.d/smb start
/etc/rc.d/init.d/nmb start

コマンドラインから、起動。

chkconfig smb on
chkconfig nmb on

例のごとく、Linux起動時に自動的にサービス起動するように設定。

/etc/samba/smb.conf を編集

今回、ワークグループ名がデフォルトのWORKGROUPじゃなかったので、設定ファイルをテキストエディタで開いて、90行目あたりの

workgroup = WORKGROUP

というところを修正。

/etc/rc.d/init.d/smb reload
/etc/rc.d/init.d/smb restart

コマンドラインにて、設定を読み込み直して、再起動。

マウントポイントを作っておく

Linux上のどこにマウントするか決めて、そこにマウント用のディレクトリを作ります。 /mnt の下に作るのが一般的なのかなーと思ったので、今回は /mnt/win というディレクトリにしてみました。

コマンドラインからも出来ると思いますが、わたしはWin操作みたいな感覚で、ディレクトリを開いて右クリックから [フォルダの生成] で作りました。

コマンドラインからマウントする

mount.cifs //192.168.xx.xx/フォルダ名 /mnt/win -o username=***,password=***

マウントしたい対象のWindowsファイルサーバのIP/フォルダ名と、Linuxのマウントポイントを指定して、オプションにはWinファイルサーバへアクセスする為のユーザ名とパスワードを入れます。何も返答がなければ成功。/mnt/win の中を見てみると入ってる!すごい!

mount.cifs //192.168.xx.xx/フォルダ名 /mnt/win -ro username=***,password=***

ちなみに、読み取り専用でマウントするにはオプションを -o じゃなくて -ro で。

umount /mnt/win

アンマウント(マウント解除)は、マウントポイントを指定してこのように。

こちらを参考にさせていただきました

Linux起動時に自動でマウントさせる

手動では出来たので、今度は自動的にいつもマウントしておきたい。起動時の自動マウントは、/etc/fstab を編集するとのこと。

テキストエディタで開いて、最終行に追記。

//192.168.xx.xx/フォルダ名 /mnt/win cifs username=***,password=***,ro 0 0

マウント対象、マウントポイント、オプション、の順番。今回は読み取り専用にしたかったのでオプションに ro も入れとく。最後の 0 0 は、dumpとfsckチェックの有無だそうで、両方 0 (不要)にしておきました。

動作確認のため再起動してディレクトリを見てみたら、マウントされてる!できたーヽ(*´∀`)ノ

8.日本語入力可能にする

よし、今度はこっちのフォルダをマウントしちゃうぞー!と、Win側の日本語フォルダをマウントしようとしたら、日本語が打てない…!ここまできて初めて気がつく。Linuxは…ソフトをインストールしてやらないと日本語入力できないんですね…!

こちらを参考にさせていただきました
apt-get install anthy scim-anthy scim anthy-el

コマンドラインからインストール後、/etc/X11/xinit/xinitrc.d/ というディレクトリ上で右クリック → ドキュメントの生成 → 空のファイル にて、ファイル名を scim にして、テキストエディタで中身を編集。

scim -d &

と書いて、scimを有効に。

chmod 755 /etc/X11/xinit/xinitrc.d/scim

コマンドラインにて実行権限を変更。

今度は /etc/bashrc というファイルをテキストエディタで開いて、最後の行に

XMODIFIERS=@im=SCIM
GTK_IM_MODULE=scim
export XMODIFIERS GTK_IM_MODULE
export USE_XOPENIM=t

と追記。これでいいのかな…?でも何も変わらないぞ…?と、ごねごね。途中で気がつく。( ゚д゚)ハッ! こういうときは再起動かッ…!

再起動後、コマンドラインを開いて、[半角/全角] キー( [Ctrl+Space] でもいいみたい)を押してみたら

140510-06

右下にこんなものが現れた!なにこのAnthyの王冠アイコン!かわいい!!そして日本語入力できた!

興奮のあまり妄想を繰り広げた様子がこちらになります。クリスタ(進撃の巨人)みたいなの。結婚したい。それは置いといて、これで日本語フォルダもマウントできるようになりました!

9.MySQL(データベースサーバ)の構築

お次はDB!WordPressも入れたいし、それ以外でもPHPと連携させていろいろ作りたいです!

こちらを参考にさせていただきました
apt-get install MySQL-server MySQL-client

コマンドラインから、インストール。

mysql -u root

Mysqlに接続して、

mysql> select user,host,password from mysql.user;

ユーザ情報を表示してみると、

+------+-----------------------+----------+
| user | host                  | password |
+------+-----------------------+----------+
| root | localhost             |          |
| root | xxxxxxxxx.xxxxxxxxxxx |          |
| root | 127.0.0.1             |          |
|      | localhost             |          |
|      | xxxxxxxxx.xxxxxxxxxxx |          |
+------+-----------------------+----------+
5 rows in set (0.00 sec)

こういうのが出ます。xxxのところは、インストール時に設定したホスト名が出ました。パスワードが設定されていないので、設定します。

mysql> set password for root@localhost=password('***');
mysql> set password for root@xxxxxxxxx.xxxxxxxxxxxt=password('***');
mysql> set password for root@127.0.0.1=password('***');
mysql> delete from mysql.user where user='';

1行ずつ実行していきます。rootのパスワード(3つとも同じ)を打って、匿名ユーザも削除。これでもう一度ユーザ情報を表示するコマンドを打ってみると、ちゃんと設定されているはず。

mysql> exit 

終わったらMysqlを切断しておく。

10.phpMyAdminでDB操作

MySQLは入ったものの、使い慣れてるphpMyAdminで操作したい…!

インストール

まず、こちらから最新verをDL、zipファイルを右クリック → [展開] して、phpMyAdmin-4.1.13-all-languages というフォルダ(数字はバージョン)を phpmyadmin という名前へ変更。(zipファイルは削除。)

こいつをApache2のドキュメントフォルダ( /var/www/html )へフォルダごと移動して、ブラウザで http://自身のIP/phpmyadmin/ を叩く。

140510-07

おおー!よし、ではrootで、さっき設定したパスワードで…

#2002 MySQL サーバにログインできません

入れないorz どうやら /etc/php5/php.ini の設定っぽい。

mysql.default_socket = /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock
pdo_mysql.default_socket= /var/lib/mysql/mysql.sock

これがなきゃいけないみたいだけど…どっかで見たなこれ。と、思ったら、末尾の [VINE] にあった!PHP5をインストールしたときにいじり過ぎてコメントアウト(頭に「;」)してた!!ので、「;」を削除。

/etc/rc.d/init.d/apache2 restart

コマンドラインにてApacheを再起動したら、ログイン出来たー!

警告が出てるので直していく

「設定ファイルが秘密のパスフレーズ (blowfish_secret) を必要とするようになりました」

/var/www/html/phpmyadmin/config.sample.php をコピーして config.inc.php という名前にして、

$cfg['blowfish_secret'] = '***'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

17行目あたりのこの記述にパスワードを設定したら、phpMyAdminにログインし直せばOK。

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。
こちらを参考にさせていただきました

create_tables.sql というファイルが必要みたいなので探す。ところでこれに限った話じゃないのですが、環境やバージョンの違いなどで、参考サイトに載っている情報とファイルの場所が違うことが結構あるなぁと感じました。そんな名前のディレクトリないんだけど…!ってなったときは、

140510-08

右上のアイコンクリック → 欲しいファイル名を入れて、

140510-09

出てきたら右クリック → プロパティ

140510-10

ここで場所を確認すれば、わたしみたいなLinux初心者さんでも見つけられるかも!(アドレスが長くて「…」って省略になっちゃっているときは、ウィンドウの端っこ掴むと伸ばせました)

脱線しましたが、お目当てのファイルはphpMyAdminをインストールした場所の example というディレクトリの中(わたしの環境では /var/www/html/phpmyadmin/example/create_tables.sql )にあったので、ブラウザ上のphpMyAdminの [インポート] から、該当ファイルを実行。

さっき作成した /var/www/html/phpmyadmin/config.inc.php をテキストエディタで開いて、

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups;
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding;

この部分の頭の「//」を削除して、コメントアウトを解除。(ver4.1.13)

「mcrypt 拡張がありません。PHP の設定をチェックしてみてください。」
apt-get install php5-mcrypt

mcryptがないとのことなので、インストールして

/etc/init.d/apache2 restart

apacheを再起動すればOK。

一般ユーザを作っておく

無事phpMyAdminが使えるようになったら、ユーザがrootしかいないのも良くなさそうなので、一般ユーザを作っておく。今後WordPressなどDBを操作したいときの設定はこの一般ユーザを使う。

ちなみにWPを入れなくてもこの時点で、PHPからMySQLに読み書きするページは作れるようになりました。

11.あとがき

長くてすみません(;´Д`)!!!ここまで読んでくださった方がどれだけいるかわからないですが…w

今後としては、ひとつのディレクトリに画像ファイルを突っ込んだらそれを全部読み込んでギャラリー的なhtmlを出力してくれるPHPを書きたいと思ってます。(WordPressでやればいいかなーと思ったものの、わざわざDB使うほどでもないし、逆に管理がめんどくさくなりそうだなぁと。)

とはいえ、お知らせをブログ的に書きたいという要望があるためWordPressは入れるつもりなので、WPはそれに専念してもらって、テンプレも外部から読み込むようにしようかなと。そちらも記事に出来たらいいなと思ってます。

公開日:2014/05/10
更新日:2014/08/03

2件のコメント

  1. 高木強志 より:

    サーバー再構築で大変参考になりました。
    apache2起動とFTPサーバー構築を行いました。
    こんなに簡単だったのか^^
    ありがとうございます。
    これからcgi設定します。
    次はsambaに挑戦します。
    これからもよろしくお願いします。

    • *you より:

      高木さん、コメントありがとうございます。

      結構昔に書いたもので、現在とはいろいろバージョンとか違っちゃってるかと思うのですが、それでもお役に立てて光栄です! こんな記事自分以外に誰が読むんだと思っていましたがw 残しておいて良かったですー!(*´∀`*)


高木強志 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。