Web無料相談会2018冬
Web無料相談会2018冬
2015.11.10

さくらVPSにLAMP環境をインストールする方法をまとめてみました。

Jack

こんにちは。ディレクターのJackです。
すっかり秋ですね。焼き芋が食べたいです。

さて、本日はさくらVPSにLAMP環境をインストールする方法をご紹介します。普段はディレクション業務をしているのですが、空いた時間にサーバサイドエンジニアの業務もしているんです。

LAMP環境とは、OSにLinux、WebサーバにApache、データベースにMySQL、プログラミング言語にPHPを利用したWebアプリケーションの開発環境のこと。とある案件でさくらVPS上への環境構築が必要になったので、その方法をまとめていきます。

目次

  1. SSHの設定をする
    • 秘密鍵と公開鍵を生成する
    • sshd_configファイルを編集する
  2. LAMP環境の構築
    • MySQLのインストール
    • Apacheのインストール
    • PHPのインストール
  3. Apacheの設定作業
    • 実行ユーザとグループの作成
    • 起動スクリプトの作成
    • 起動スクリプトを編集
    • httpd.confの修正
    • serviceコマンドで起動と停止の設定
  4. さいごに
  5. 参考文献

SSHの設定をする

デフォルトのさくらVPSですと、公開鍵認証を用いていないため、下記のようにrootでログインができてしまいます。

$ ssh root@hostname

これはセキュリティ上、かなり危険ですよね。

秘密鍵と公開鍵を生成する

公開鍵認証に利用する秘密鍵と公開鍵の生成に関しては、ssh-keygenコマンドを利用して作成しましょう。

$ ssh-keygen -t rsa

公開鍵の登録作業

接続先サーバの「~/.ssh/authorized_keys」に先ほど生成した公開鍵を登録してください。公開鍵を接続先サーバへアップロード後、catコマンドを利用し登録作業をおこないましょう。

$ cat id_rsa.pub >> authorized_keys

sshd_configファイルを編集する

次にsshd_configファイルを編集します。

vimでsshd_configファイルを開き、「パスワード認証の禁止」と「rootによるログインの拒否」の設定をしましょう。

$ vim /etc/ssh/sshd_config

PermitRootLoginをyesからnoへ変更

PermitRootLogin no

PasswordAuthenticationをyesからnoへ変更

PasswordAuthentication no

sshdの再起動

続いて、sshdを再起動してください。これで公開鍵認証でのリモートログインが可能になります。

$ /etc/init.d/sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

LAMP環境の構築

さて、本題のLAMP環境の構築をしていきましょう。

MySQLのインストール

最新版のMySQLをインストールする方法を記載します。

RPMファイルのダウンロード

下記URLより最新のRPMファイルをダウンロードします。
http://dev.mysql.com/downloads/repo/yum/

wgetで取得するには下記コマンドを入力してください。

$ wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm

yumリポジトリへの登録作業

ダウンロードが完了したら、rpmコマンドを利用し、yumへリポジトリ登録をおこないます。

$ rpm -ihv mysql57-community-release-el6-7.noarch.rpm
$ yum repolist # リポジトリが登録されているか確認

yum repolist でリポジトリが登録されているかを確認しましょう。

インストール作業

リポジトリが登録されていることが確認できたら、yumコマンドでインストール作業をおこないます。

$ yum -y install mysql-server mysql-devel

これでインストールが完了しました。

MySQLを起動してみる

さっそく起動してみましょう。起動するには下記コマンドを入力します。

$ /etc/init.d/mysqld start

初回起動時にDBの初期化作業が実行されます。その際に初期パスワードも自動生成されますので、下記コマンドで初期パスワードの確認をする必要があります。

$ sudo grep password /var/log/mysqld.log

mysqld.logに下記のようにパスワードが表示されます。
(※下記に表示されているパスワードはダミーです)

2015-10-25T04:49:08.967076Z 1 [Note] A temporary password is generated for root@localhost: KmE1h;FeHgTd

「KmE1h;FeHgTd」というパスワードが生成されているのが分かります。

パスワードの確認ができたら、MySQLサーバへ接続し、パスワードを変更しましょう。

$ mysql -u root -p

パスワードを変更するにはALTER USER文を利用します。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

パスワード再設定時の制約は下記となりますので、注意しましょう。

  • 大文字、小文字、数字、記号のすべてが含まれている
  • 長さが8文字以上

Apacheのインストール

次に、Apacheをソースからビルドする手順を記載します。

ソースコードの入手

wgetコマンドにて最新のソースコードを取得してください。

$ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//httpd/httpd-2.4.17.tar.gz
$ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-1.5.2.tar.gz
$ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-util-1.5.4.tar.gz

ダウンロードしたソースコードを解凍します。

$ tar -zxvf httpd-2.4.17.tar.gz 
$ tar -zxvf apr-1.5.2.tar.gz 
$ tar -zxvf apr-util-1.5.4.tar.gz

APRのインストール

APRをインストールします。APRは「OSの違いを吸収し、どのような環境でもApacheを動かすようにしてくれるライブラリ」のことです。

インストールするには解凍したディレクトリへ移動し、下記コマンドを入力してください。

$ cd apr-1.5.2 
$ ./configure
$ make
$ make install

APR-utilのインストール

APRのインストールと同様に、解凍したディレクトリへ移動し、下記コマンドを入力してください。

./configureを起動する際に、「--with-apr=/usr/local/apr」を指定するのを忘れないでください。

$ cd ../apr-util-1.5.4
$ ./configure --with-apr=/usr/local/apr
$ make
$ make install

PCREとOpenSSLのインストール

続いて、Apacheのソースビルドに必要ですので、PCREとOpenSSLのインストール作業をおこないます。

$ yum -y install pcre-devel
$ yum -y install openssl-devel

Apacheのインストール

最後にApacheをインストールします。下記コマンドでソースからビルドをおこないます。少し時間がかかるので気長に待ちましょう。

$ cd ../httpd-2.4.17
$ ./configure --enable-so --enable-rewrite --enable-ssl --enable-mods-shared=all
$ make
$ make install

PHPのインストール

次に、PHPをソースからビルドする方法をご紹介します。

ソースをダウンロード

下記コマンドを実行し、最新のソースコードを入手してください。

$ wget http://jp2.php.net/get/php-5.6.14.tar.gz/from/this/mirror -O php-5.6.14.tar.gz
$ tar -zxvf php-5.6.14.tar.gz

関連パッケージのインストール作業

下記コマンドを実行し、関連パッケージのインストール作業を実施してください。

$ yum -y install libxml2-devel
$ yum -y install libjpeg-devel
$ yum -y install libpng-devel

PHPをソースからビルドする

解凍したディレクトリへ移動し、下記コマンドを入力することにより、最新のPHPがインストールされます。

$ cd php-5.6.14
$ ./configure --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --enable-pdo --with-gd --with-png-dir=/usr/local --with-jpeg-dir=/usr/local --with-mysql
$ make
$ make install

Apacheの設定作業

実行ユーザとグループの作成

初期インストール時は、起動ユーザはdaemonとなっているのでapache専用の実行用のユーザとグループを作成します。

下記コマンドをインストールし、ユーザとグループを作成します。

$ groupadd apache
$ useradd -g apache apache

起動スクリプトの作成

起動スクリプトの雛形をコピーし、各環境の設定に編集します。

$ sudo cp /usr/local/src/httpd-2.4.17/build/rpm/httpd.init /etc/init.d/httpd

起動スクリプトを編集

vimでコピーした起動スクリプトを開き、編集してください。

$ vim /etc/init.d/httpd

変更箇所は下記となります。

  • httpd
  • pidfile
  • lockfile
  • CONFFILE
#httpd=${HTTPD-/usr/sbin/httpd}
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
#pidfile=${PIDFILE-/var/run/${prog}.pid}
pidfile=${PIDFILE-/usr/local/apache2/logs/${prog}.pid}
#lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
lockfile=${LOCKFILE-/usr/local/apache2/logs/${prog}}
RETVAL=0

# check for 1.3 configuration
check13 () {
        #CONFFILE=/etc/httpd/conf/httpd.conf
        CONFFILE=/usr/local/apache2/conf/httpd.conf
        GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|"
        GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|"
        GONE="${GONE}AccessConfig|ResourceConfig)"
        if grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then
                echo    
                echo 1>&2 " Apache 1.3 configuration directives found"
                echo 1>&2 " please read @docdir@/migration.html"
                failure "Apache 1.3 config directives test"
                echo    
                exit 1  
        fi      
}

httpd.confの修正

サーバの実行ユーザとグループを変更

先ほど作成したユーザ名「apache」とグループ名「apache」を指定します。

#User daemon
#Group daemon
User apache
Group apache

MIMEタイプの追加

<IfModule mime_module>
    AddType application/x-httpd-php .php
</IfModule>

DirectoryIndexの設定

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>

mod_rewriteの設定

LoadModule rewrite_module modules/mod_rewrite.so

serviceコマンドで起動と停止の設定

下記コマンドを入力し、serviceコマンドで起動と停止ができるように設定します。

$ chkconfig --add httpd
$ chkconfig httpd on
$ chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

さいごに

いかがでしたか。今回はLAMP環境をソースからビルドする方法をご紹介しました。

yumでインストールするのはとても簡単で便利ですが、依存パッケージなども自動でインストールされてしまうので少し気持ち悪いですよね。

どのミドルウェアをどのディレクトリにインストールしたのかをはっきりとさせたい人には、ソースからのビルドは欠かせません。

また、yumでインストールする場合は、ミドルウェアのバージョンが低いため、セキュリティに問題がある場合も多く、ソースからのビルドが有効かと思います。

さて、そろそろディレクション業務に戻ります!
本日のエンジニアワークはここまで!

参考文献