Computer

CentOS 7にLAMPをインストールする手順

このページでは、ConoHa VPSのCentOS 7にLAMP環境を作る手順を紹介します。

サーバーの基本的な設定についてはこちらも参照してください。

VPSでCentOSをインストールしたらはじめにやっておきたいこと

VPSのインストールが完了したら、Webサーバーのインストール、データベースのインストールといろいろとやるべきことはあると思いますが、その前に最低限のセキュリティとこれから使うVPSを使いやすくするた ...

LAMP環境はWordPressを念頭においていますが、他のPHPのアプリケーションも動かせるようになります。

学習目的も兼ねているので、あえて手動でインストールをしていきます。

手っ取り早くWordPress環境が欲しいという方は、WordPressがプリインストールされているイメージを選択してインストールするのがよいかと思います。

手動でインストールするメリット

最近のVPSサービスは、WordPressをはじめとして人気のあるシステムは最初からインストールされた状態のイメージを提供しています。徹底的なチューニングが施されたKUSANAGIというイメージもあります。

KUSANAGIに関しては、nginx(Apacheも選択可)MySQL、PHPのあちこちにチューニングが入っているみたいです。僕も使ってみたいとは思ったのですが、今回はあえて手動でインストールした環境を使いました。

なぜかというと僕にとってLAMPを作るのが使うのが初めてだったからです。

「初めてだからこそカンタンに使えるものを選ぶじゃないの?」と思うかもしれません。

しかし僕は逆だと思っています。

仕事に関してはいつも

「とりあえず動けばいい」

「余計な知識は覚えなくていい」

的な考えを持っているのですが、この部分だけは少し違う考えを持っていて最初に少し苦労してでも全体像を理解した方がトータルで見れば安くつくと思っているのです。

僕の仕事は、比較的複雑な業務用システムのカスタマイズをすることなのですが、システムが複雑になればなるほどアーキテクチャというものを理解しておかないと余計に苦しむことが往々にしてあります。

手っ取り早く近道をしようとするといつもしっぺ返しをくらいました。そうしてたどり着いたのが「システム構築に関しては抜け道を探そうとせず正面突破したほうがいい」という結論だったのです、

設定を少しいじくったり、フロントエンドの見た目を少し変える程度であれば、アーキテクチャとか大げさな横文字を並べる必要もないでしょう。しかし変更箇所が広範囲に及んだり、バックエンドに近くなってくると、システムの仕組み的な理解していないとリスクが増します。いじくるほどにほころびが大きくなり、そしてほころびが限界に達した時点で対処不可能な状況に陥ってしまいます。

僕は扱う自社製品などの場合、まずは自分でインストールして動くところまで持っていくということをやっています。

最近のPCはメモリもたくさん積んでいるので、たいていのシステムは自分のパソコン上の仮想マシンにミニチュアを作ることができます。これまでビッグデータとかJava EE(恐ろしく肥大化したアプリケーションサーバーのことです)とかのシステムを自分のPC上の仮想マシンで構築してきました。仮想マシンにはスナップショットという便利な機能があり作業途中の状態を保存できるので、途中でわけがわからなくなったら何度でもやり直しができます。これによって時間のロスを気にする事なくいろいろ試すことができます。こういう作業を行ってみると本当にいろいろなことが見えてきます。

なにかをインストールをしようとするとたいていどこかでつまづきます。そしたらログをみて、どこで失敗したのか、どうして失敗したのか、何が足りなかったのかが見えてきます。

そうやって試行錯誤してシステムが最低限の動作をして、やっとカスタマイズができる状態にまで持っていきます。するとその頃にはそのシステムの全体的な姿がよく見えている(気がする)のです。設定ファイルの場所、ログファイルの場所、システム間のインテグレーションのポイントなどがわかっているので、問題が起きても今の自分ならなんとかできる気がするのです。

LAMPのインストール手順を見に来たのにこんなことを書かれてもアホかと思うかもしれませんが、正直なところ、LAMPのインストール手順はネットにいくらでも転がっています。手順だけを見たければqiita.comとかで検索した方が早いでしょう。でもこんなことをタラタラと書いてしまったのは、一度こういう習慣が身につくと後が本当にラクになると思うからです。自分で調べるクセがつけばもう怖いものなしです。そして最終的には自分が手を抜けるのです。

すいません、前置きがやたら長くなってしまいました・・・・

くだらないゴタクと思われたかもしれませんが、IT系というかこの手のエンジニア的な仕事をするにはこういうスタンスが大事かなと思っていたことなので、共感していただければ幸いですし、ぜひ引き続きLAMP環境をセットアップしてみてほしいと思います。

とはいえ、そこまで難しいものではないので拍子抜けするかもしれません。

もし修復不可能な状態になってしまったら、サーバーごと再インストールしてしまえばいいのです。

そこがVPSの最大のメリットですしね。

どうしても無理と思ったらWordPressがプリインストールされているイメージを使うという手も残されているので、リスクはほぼゼロです。

LAMPについて

LAMPとは、Linux、Apache、MySQL、PHPというシステムとサーバー環境の頭文字をとったもので、WordPressを動かすために必要な環境なのです。

最近ではApacheの代わりにnginx(エンジンエックス)というWebサーバーが人気です。nginxはApacheよりも早いんだとか。でも僕は使ったことがありません。僕はあまり新しいものに対して興味がなく、動けばいい派なので、今回もApacheでいきます。

性能面でnginxに遅れをとっているとはいえ、Apacheはかつての王者です。

またWordPressで言えば、nginxはまだ対応が不十分なところもあります。

たとえばキャッシュ系のプラグインとか、Webサーバーの振る舞いを直に操作するようなプラグインの中には、Apacheを前提に作られているものもあります。そういうところで面倒は避けたいので、まずは無難にApacheで行きます。あとで切り替えなければならない理由が出てきたら、そのときに切り替えることにしましょう。

そしてデータベースですが、いまはMySQLと並んでMariaDBというものがあります。MySQLがオラクルに買収されて開発方針の違いから二つに別れたそうです。基本的にはどちらを使っても同じです。僕はなんとなくMySQLを使っています。

以上の前提で作業を進めていきます。

Apacheのインストール

まずはApacheのインストールです。

以下のコマンドを入力します。

sudo yum install httpd

ちなみに、httpdはApacheのことです。Apache=httpd (最後のdはデーモンで、ざっくりいえばサーバーという意味です)というくらい、ApacheはWebサーバーの代名詞ともいえます。

 

============================================================================================================================================================================================================
Package Arch Version apepository Size
============================================================================================================================================================================================================
Installing:
httpd x86_64 2.4.6-67.el7.centos.6 updates 2.7 M
Installing for dependencies:
apr x86_64 1.4.8-3.el7_4.1 updates 103 k
apr-util x86_64 1.5.2-6.el7 base 92 k
httpd-tools x86_64 2.4.6-67.el7.centos.6 updates 88 k
mailcap noarch 2.1.41-2.el7 base 31 k

Transaction Summary
============================================================================================================================================================================================================
Install 1 Package (+4 Dependent packages)

Total download size: 3.0 M
Installed size: 10 M
Is this ok [y/d/N]:

こんな画面が出るので、y と入力すればApacheがインストールされます。

mod_sslのインストール

mod_sslとは、Apacheでssl (https)を使えるようにするためのモジュールです。

今は無料のSSL証明書(Let's Encrypt)が使えるので、この機会に入れておきましょう。

インストールするには以下のコマンドを実行します。

sudo yum install mod_ssl

Apacheの起動

Apacheとmod_sslがインストールできたところでApacheを起動してみましょう。

起動するには以下のコマンドです。

sudo systemctl start httpd

ついでに以下のコマンドを実行して、サーバー再起動時にもhttpdが自動的に起動するようにしておきます。

sudo systemctl enable httpd

httpdが起動したら、自分のサーバーにアクセスできるか確認してみましょう。

またドメイン名はないので、

http://111.222.333.444 (自分のサーバーのIPアドレスに置き換えてください)

という感じでIPアドレスで直にアクセスしてみます。

アクセスできない場合、ファイアウォール(iptables)が接続を拒否している可能性があります。

iptablesを設定

以下のコマンドで、httpとhttpsのポートへの接続を許可します。

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload

再度アクセスしてみてください。

こんな画面が出れば成功です。

これでもできない場合、

  • Apacheが起動していない
  • CentOS自体ではなく、もう一段外のVPS業者のファイアウォールで接続が拒否されている

可能性があります。

まずは、

netstat -an | grep 80

とやってみてください。

Apacheが起動していれば、こんな感じでport 80がLISTENしているはずです。

tcp6 0 0 :::80 :::* LISTEN

これがない場合、Apacheを起動してみてください。

ポート80がリッスンしているのに接続できない場合、VPSのネットワークレベルのファイアウォールの可能性があります。

ConoHa VPSの場合、Webコンソールからこんな設定ができるのです。

もしWebのところにチェックが入っていない場合、チェックしてみてください。

ここまででできましたか?

念のため、サーバーを丸ごと再起動して、再起動後も使えているかテストしてみましょう。

本来はこんな気軽にサーバーの再起動はするものではありませんが、まだユーザーは誰もいないので試しにやってみましょう。

再起動コマンドは

sudo shutdown -r now

です。SSH接続が切れますが、再起動後に再度SSHとやれば接続できます。

再起動後もhttp://111.222.333.444がアクセスできるか確認してみてください。

MySQLのインストール

次はMySQLです。デフォルトではCentOS 7はMariaDBを入れようとするのです。 しかもバージョン5.5.56とちょっとよくわからないバージョンなのです。

WordPressのシステム要件を見ると

To run WordPress we recommend your host supports:

  • PHP version 7.2 or greater
  • MySQL version 5.6 or greater OR MariaDB version 10.0 or greater
  • HTTPS support

引用:https://wordpress.org/about/requirements/

とあります。

MariaDB 10.0とか書いてありますが、ここに出てくる5.5.56とは違いますね。

初めて使う人には不安感しかないので、こういうところは統一しておいてほしいものですね。

というわけでMySQLをインストールします。現時点での最新版のMySQL(5.7)をインストールしましょう。

手順は

sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
sudo yum install mysql-community-server

これだけです。

MySQLも自動で起動するように設定しましょう。

sudo systemctl enable mysqld

続けて起動しましょう

sudo systemctl start mysqld

起動したかどうかを確認します。

netstat -an |grep LISTEN

とやると、

tcp6 0 0 :::3306 :::* LISTEN

ポート3306がリッスン状態になっているのがわかります。ポート3306はMySQLがデフォルトで使うポートです。

MySQLですが、初めて起動するときにランダムにパスワードを設定してしまいます。

そのパスワードを調べるには以下のコマンドを使います。

sudo cat /var/log/mysqld.log | grep "password"

すると、こんな感じで勝手に設定されたパスワードが確認できます。

[Note] A temporary password is generated for root@localhost: sdfsdfsdf

とりあえず、これを使ってMySQLにログインします。

以下のコマンドでMySQLクライアントを起動します。

mysql -u root -p

パスワードを聞かれるので、先ほど控えたパスワードを保存します。パスワードは後からでも変更できるので、いまはこのまま作業を進めます。

MySQLにrootとしてログインできたら以下のコマンドを実行します。

create database wpdb;
SET GLOBAL validate_password_length=4;
SET GLOBAL validate_password_policy=LOW;
grant all on wpdb.* to 'wp_dbuser'@'localhost' identified by 'password123!!!';

1行目はwpdb というデータベースを作っています。名前はなんでもいいのですがWordPress用のデータベースだとわかりやすい名前をつけました。

2行目と3行目は、MySQLのパスワードポリシーがかなり厳しいのでそれを少し緩めるためのおまじないです。

4行目ではwp_dbuser というユーザーを作って、パスワードをpassword123!!! に設定して、wpdb データベース内ですべての操作ができるようにしています。

WordPressにはこのユーザーを使わせます。データベースは空っぽの状態ですが、WordPressは初回実行時にテーブルとかを勝手に作るので空っぽのデータベースのままで大丈夫です。

PHPのインストール

MySQLの時と同様、PHPもデフォルトの状態でインストールしようとすると、かなり古いバージョン(5.4)がインストールされてしまいます。

最新のWordPressはPHP 7.2を推奨しているのでそれをインストールしましょう。

まずはPHP 7.2をインストールするための下準備をします。

sudo yum install epel-release
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install yum-utils
sudo yum-config-manager --enable remi-php72
sudo yum update

上でゴニョゴニョやっているのは、PHP 7.2のパッケージの置き場所とかを知っているレポジトリをインストールしています。

ここまでできたら以下のコマンドでPHPとWordPressが依存しているライブラリ(extension)をインストールします。

sudo yum install php php-fpm php-mysql php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

とりあえずこれだけ入れておけばWordPressは動くはずです。

PHPの世界はよくわらかないのですが、他にもいろんなライブラリがあり、たとえばパフォーマンスを向上するためのライブラリとかもあるのでそのうち使ってみるかもしれません。

php -v

と入力すると、インストールされているPHPのバージョンが出てくるはずです。

今回は長くなったのでここまでとします。

次回はApacheの設定を行おうと思います。

一つのApacheサーバーで複数ドメインのサイトを公開する方法

前回はCentOS 7上にLAMPをインストールしました。 今回はApacheに最低限の設定を行い、ウェブサイトを公開できる状態にしたいと思います。 Apacheの動作確認 Apacheをインストール ...

-Computer