こんにちは。ディレクターのJackです。
すっかり秋ですね。焼き芋が食べたいです。
さて、本日はさくらVPSにLAMP環境をインストールする方法をご紹介します。普段はディレクション業務をしているのですが、空いた時間にサーバサイドエンジニアの業務もしているんです。
LAMP環境とは、OSにLinux、WebサーバにApache、データベースにMySQL、プログラミング言語にPHPを利用したWebアプリケーションの開発環境のこと。とある案件でさくらVPS上への環境構築が必要になったので、その方法をまとめていきます。
目次
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でインストールする場合は、ミドルウェアのバージョンが低いため、セキュリティに問題がある場合も多く、ソースからのビルドが有効かと思います。
さて、そろそろディレクション業務に戻ります!
本日のエンジニアワークはここまで!参考文献
- MySQL 5.7 Reference Manual - http://dev.mysql.com/doc/refman/5.7/en/
- Apache HTTP サーバ バージョン 2.4 ドキュメント - https://httpd.apache.org/docs/2.4/install.html
- PHP マニュアル - http://php.net/manual/ja/
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。