WEBサーバーをコンパイルする

ソースからコンパイルする方法

少し、昔話をします。
私がはじめて買ったパソコンは、東芝製のDynaBookです。

DynaBookというと、多分、こんなノートパソコンを思い浮かべる方が多いと思います。

いえいえ、もっと古いものです。
「ノートパソコン」というジャンルを確立したパイオニア機、J-3100SSです。

画面はカラーなんてとんでもなく、白青の2色でしたし、分厚いし、記憶装置はフロッピーでハードディスクもありません。
ただし、ハードRAMという、本体搭載メモリの一部をディスクのように使える機能がありました。
マイナーチェンジ機にはメガバイト単位ですが、ハードディスクも載りました。

現代のコンピュータは、電源を入れたらそのまま起動しますが、その頃のコンピュータは電源を入れても「no system disc」と表示されるだけです。
OS (オペレーティングシステム)は自分でインストールする必要がありました。

それに比べると、現代のパソコンは、買った時にはOSであるWindowsはおろか、使用するアプリケーションまでインストールされているのが殆どです。

良い時代になったものですね。

さて、そんな事情もあるのか、OSのインストールから始める必要のあるLinuxはどうもとっつきにくい印象があるようです。
それでも、私からすると随分簡単になったように思いますが…

サーバー構築の記事でもご紹介しましたが、ディスクを入れるだけですし、ファイルサーバーや、データベースサーバーも、非常に簡単にインストールできます。

# yum -y install httpd

WEBサーバーのインストールは、これだけです。

ただ、このyumは、パッケージを管理するアプリケーションで、そのパッケージにはOSの種別などによっていろいろ条件がありますので、必ずしも希望通りにいくとは限りません。

良い例が、CentOS で、バージョン6と7があります。
7の方がもちろん最新で、これを使うのが望ましいです。上のコマンドは、CentOS7ならあっさりと動きます。

しかし、必ず最新型のサーバー機が利用できるとは限りません。どうしても古いサーバー機を使わなくてはならない事もあり、機械の相性では7が動かない事があります。
致し方無いので、6を使用すると、今度は yum の条件があり、上のコマンドを使うと、WEBサーバーとしてバージョンの古いものをインストールしてしまいます。

そうした場合、ソースファイルというプログラムの原本を入手して、自分のコンピュータでプログラムに変換して使用する方法があります。

例として、WEBサーバーとPHPを、Centos6.10のos環境に、コンパイルでインストールしてみましょう。

まず、WEBサーバーのApacheをコンパイルするのに、APR (Apache Portable Runtime) が必要なので、これを先にコンパイルしてインストールします。

http://apr.apache.org/で必要なファイルを調べます。インストール時点では、APRが1.6.5で、 APR-util  は1.6.1でした。

wgetでソースファイルをダウンロードし、./configure でmake用ファイルを作成、makeでコンパイルを実行し、make install でインストールします。

# wget http://ftp.riken.jp/net/apache//apr/apr-1.6.5.tar.gz
# tar -xvzf apr-1.6.5.tar.gz
# ./configure --prefix=/opt/apr/apr-1.6.5
# make
# make install

次に APR-util  も必要なのでインストールします。
これもやり方は同様です。

# wget http://ftp.riken.jp/net/apache//apr/apr-util-1.6.1.tar.gz
# tar -xvzf apr-util-1.6.1.tar.gz
# cd apr-util-1.6.1
# ./configure --prefix=/opt/apr/apr-1.6.5
# make
# make install

両方、正常にインストールできたら、Apacheのソースをダウンロードし、コンパイルしてインストールします。
記事の時点では、2.4.38が最新でした。

# wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.4.38.tar.gz
# tar -xvzf httpd-2.4.38.tar.gz
# cd httpd-2.4.38
# ./configure --with-apr=/opt/apr/apr-1.6.5/ --with-apr-util=/opt/apr-util/apr-util-1.6.1/
 # make
 # make install

これで、/usr/local/apache2/ にApacheがインストールされました。

/usr/local/apache2/bin/apachectl start

でApacheが起動します。

/usr/local/apache2/htdocs にindex.html が存在しないので、このような表示になります。

WEBサーバーとして稼働したので、プログラムであるPHPもコンパイルで導入しましょう。
理由は、やはりCentos6の場合、yumではうまくPHP7が入らないためです。

プログラムのソースファイルを取得します。

# wget http://jp2.php.net/get/php-7.2.15.tar.gz/from/this/mirror

記事を書いた時点では mirror でファイルが作成されますが、展開すれば大丈夫です。

# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql --with-mysql-sock=/var/lib/mysql/mysql.sock -with-mysqli
# make
# make install

これにより、ApacheでPHPを実行するモジュールが作成されています。
また、–with-pdo-mysqlの部分で、データベースと接続するPODを構成しています。

-with-mysqliも、後述のphpMyAdminなどで使用するモジュールなので、構築しておきます。

余談ですが、一度configure、make、make installを行っても、後から項目を付け足して再コンパイルすれば、希望通りになります。
今回の例では、一度

./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache2/bin/apxs

の部分だけでコンパイルし、その後、上記のmysql部分を付け足して再コンパイルしましたが、

とエラーが出て、
後述のphpMyAdminで、-with-mysqliをさらに付け足してコンパイルしても正常でした。

PODの構成には、mysql.sockの位置を確認する必要があります。
今回のサーバーは、

の記事で使用したサーバーですので、既にmariaDBがインストールされています。
このためfindコマンドで調べると、 mysql.sock の場所が出てきます。

# find / -name "mysql.sock"
/var/lib/mysql/mysql.sock

もし、まだデータベースをインストールしていない場合は、上記の記事を参照すると、データベースがインストールできるとおもいます。

コンパイルとインストールが終わったら、念のため、apacheのPHPソケットがあるか、確認してみます。

# ls /usr/local/apache2/modules/libphp7.so
/usr/local/apache2/modules/libphp7.so

また、httpd.conf には、モジュールのロードが追加されています。

<IfModule mod_php7.c>
  AddType application/x-httpd-php .php
</IfModule>

PHPファイルの実行を、httpd.confに追加します。

# vi /usr/local/apache2/conf/httpd.conf

LoadModule php7_module        modules/libphp7.so
# /usr/local/apache2/bin/apachectl stop
# /usr/local/apache2/bin/apachectl start

Apache WEBサーバーを再起動します。

# vi /var/www/html/test.php ← PHPテスト用ページ作成
<?php
  phpinfo();
?>

viエディタでphpプログラムが動作する簡単なファイルを作成し、
http://[IPアドレス] /test.php で呼び出します。

PHPが無事に呼び出せたので、インストールは成功です。

念のためphpMyAdminをインストールして、確かめてみます。
うまく行っていれば、PHPが動き、データベースにも接続できる事が確認できます。

に行き、 phpMyAdminの最新バージョンと、そのtarファイルのURLをコピーしてきて、サーバーのコンソールからwgetで取得します。

# wget https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.tar.gz
# tar xvzf phpMyAdmin-4.8.5-all-languages.tar.gz
# mv /usr/local/src/phpMyAdmin-4.8.5-all-languages /usr/local/apache2/htdocs/phpmyadmin

phpMyAdminの圧縮ファイルは、既に実行出来る状態なので、tarで展開したら、apacheのドキュメントルートである、htdocs内に移動します。
ついでに、名前も長くて面倒なので、 phpmyadmin とします。

このように、ソースからインストールする事ができれば、サーバーの活用幅が拡がります。

例えば、VPSを借りるのは何となくイヤなので、自分のサーバーを公開して、WEBサイトを立ち上げたい場合などに使用できます。

御社の公開サーバーに、如何でしょうか?

コメントを残す

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