ネコでもわかる!さくらのVPS講座 ~第四回「phpとMariaDBをインストールしよう」
初心者がVPS(Virtual Private Server)をWebサーバーとして構築し、WordPressのサイトを運用できるようになるまでの「ネコでもわかる!」連載の第4回目です。
第1回目から読みたい方はこちらからどうぞ。
前回(第3回目)は「Apacheをインストールしよう」というテーマで、httpサーバーApacheのインストールと、Linuxの権限(パーミッション)、ドメイン取得の手順を説明しました。
今回はプログラミング言語phpと、データベースMariaDBのインストールについて説明します。
対象サーバーは、さくらのVPS CentOS7 x86_64です。
- phpをインストールする
- MariaDBをインストールする
1. phpをインストールする
前回httpサーバーApacheをインストールしたので、静的なhtmlファイルはブラウザで表示できるようになっています。
しかし、まだphpはインストールされていないので、phpプログラムが含まれる動的なコンテンツファイルは正しく表示できません。
試しに、以下のphpファイルをアップロードしてブラウザで確認してみます。
/var/www/html/の下に、index.phpとしてサーバーにアップロードします。
phpで"Hello World! php"と表示するプログラムです。
<html> <body> <?php echo "Hello World! php" ?> </body> </html>
上記コードのダブルクォーテーションやスペースは半角であることに注意してください。全角だとエラーになります。
この状態で
http://xxx.xxx.xxx.xxx/index.php (xxx.xxx.xxx.xxxはあなたのVPSのIPアドレスまたはドメイン名)
にアクセスしても”Hello World! php”は表示されず真っ白な画面が表示されるのみです。phpがインストールされていないのでうまく表示できないのです。
そこでphpをインストールします。
CentOS7標準のphpはバージョン5.4ですが、現在はphp7.4がリリースされています(さらにphp8もリリースされています)。手順は若干増えてしまいますが、ここではCentOS標準のphp5.4ではなくphp7.4をインストールする手順を説明します。
php7.4はCentOS公式リポジトリ(アプリケーションの配布元サーバー)には置かれていません。phpの最新アプリケーションパッケージを置いているremiという別のリポジトリ(またはレポジトリとも言います)から取得します。VPS上でそのための設定を先に行います。
なお、remiを使えるようにするためには、本来ならばEPEL(イーペル)という別のリポジトリを先に使用可能にしておかなければならないのですが、さくらのVPSは初めからEPELリポジトリが使用可能になっていますのでEPELは設定不要です。
もし、EPELを自らの手で使用可能にする必要がある方はこちらを参考にしてください。
[CentOS7]EPELリポジトリの簡単な追加方法 | Zero Configuration
CentOS公式リポジトリ、EPELリポジトリ、remiリポジトリの3つが代表的なリポジトリです。他にも私設のリポジトリが数多く存在しますが、上記の3つのリポジトリがあればWebサーバー構築に必要なパッケージは揃えられます。
では、remi用の設定パッケージをインストールします。
suコマンドでrootユーザーになってから操作してください。
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
これでremiレポジトリが使えるようになりました。
次に、phpのインストールです。
php本体だけでなく、phpの拡張パッケージも合わせて導入するのでコマンドが長くなっていますが、以下をコピペして実行してください。
# yum install --enablerepo=remi,remi-php74 php php-devel php-mbstring php-mysqlnd php-pdo php-gd
--enablerepo=remi,remi-php74 の部分は、remiとremi-php74のリポジトリの使用を有効にするためのyumコマンドのオプションです。
インストールに関するメッセージが表示されたあと、最後に以下のように聞かれますので、yとリターンを押してください。
Total download size: 11 M
Installed size: 47 M
Is this ok [y/d/N]: y
また、このあと以下のように尋ねられた場合もyで続けてください。
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Importing GPG key 0x00F97F56:
Userid : "Remi Collet "
Fingerprint: 1ee0 4cce 88a4 ae4a a29a 5df5 004e 6f47 00f9 7f56
Package : remi-release-7.3-1.el7.remi.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Is this ok [y/N]: y
最後に Complete! と表示されれば完了です。
そしてsystemctlコマンドでhttpdを再起動すると、phpが有効になります。
前回の記事でhttpdを起動した時は'start'でしたが、今回は再起動なので'restart'とします。
# systemctl restart httpd
ここで、再び http://xxx.xxx.xxx.xxx/index.php にブラウザでアクセスしてみてください。
"Hello World! php" が正しく表示されましたでしょうか?
phpのインストールはこれで完了ですが、あとあとのことを考えてphpの設定を少し変更しておきます。
phpの設定ファイルphp.iniを編集します。
# cd /etc # cp php.ini php.ini.old # vim php.ini
php.iniファイルは/etc/の下にあります。
cdコマンドで/etc ディレクトリに移動し、編集ミスがあったときにすぐに戻せるようにcpコマンドでphp.iniのバックアップをとっておき、vimコマンドでphp.iniを編集します。
(vimコマンドについては連載第2回目で説明していますので、vimの使い方を忘れてしまった場合は再度読み返してみてください。)
編集箇所は2ヶ所です。ファイルアップロード上限に関する項目です。
post_max_size = 8M ・・・ upload_max_filesize = 2M
となっている設定を、それぞれ
post_max_size = 128M ・・・ upload_max_filesize = 128M
に変更します。上限のサイズを大きく設定することで、WordPressで大きな画像ファイルをアップロードするときにエラーにならないようにします。
では実際に設定変更してみます。
もし、vimエディタで編集中に誤操作などで意図しない文字が入ってしまったり思い通りにいかない場合は
[esc]キー のあと :q! コマンドでエディタを強制終了し、編集前の状態に戻ってください。
php.iniはたくさんの設定が記載されていますので、目的の設定箇所を探すのに時間がかかります。
ここは、検索をうまく使ってすばやく目的の場所を見つけましょう。
まず、'post_max_size' 文字列でphp.ini内を検索し、編集すべき箇所まで移動します。
vimで '/' をタイプしてください。検索モードになり、画面の一番下にフォーカスが移りますので、検索語句"post_max_size"を入力してEnterキーを押します。
すると、一瞬で設定箇所にジャンプできますので、そこで設定値を変更してください。
"upload_max_filesize"についても同様に、検索を使うと早いです。
vimの検索の使い方などについては、以下に少し説明があるので困ったら参考にしてみてください。
[参考]viエディタの使い方
設定を変更したら、:wqでvimを終了して、httpdサーバーを再起動します。
設定はhttpdサーバー再起動後に有効になります。
# systemctl restart httpd
2. MariaDBをインストールする
WordPressを使うためには、WebサーバーソフトウェアのApacheやphpに加えて、データベースをインストールする必要があります。
CentOS6ではデータベースアプリケーションとしてMySQLが用意されていましたが、CentOS7ではMariaDBが標準となりましたので、本記事ではMariaDBをインストールする手順をご紹介します。
MariaDBもApacheのインストールと同様、yumコマンドを使ってインストールします。
rootユーザーで作業してください。
# yum install mariadb-server
インストールしてOKかどうか聞かれますので、'y'キーとEnterキーを押して確定させてください。
Total download size: 21 M
Installed size: 107 M
Is this ok [y/d/N]: y
表示メッセージの最後に'Complete!'と表示されれば成功です。
次に、MariaDBを起動します。
サーバー再起動時にMariaDBを自動的に起動する設定もあわせて行います。
httpサーバーのインストールをしたときの手順を思い出してください。
# systemctl enable mariadb # systemctl start mariadb
次に、MariaDBにログインするためのパスワードを設定します。
パスワードの設定や、初期設定を簡単に行ってくれるmysql_secure_installationというコマンドがあるのでこれを利用します。
MariaDBはMySQLから派生したアプリケーションなので、mysqlコマンドがそのまま使えるようになっています。
ですので、MariaDBをインストールしてもコマンドはmysqlになることを覚えておきましょう。
# mysql_secure_installation
実行すると英語のメッセージがいっぱい表示されますが、おじけず進んでください。
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none):
「現在のMariaDB rootユーザーのパスワードを入力してください」という意味の質問待ちになりますので、ここで何も入力せずEnterキーを押してください。
MariaDBにもrootユーザーが存在します。これはOSのrootユーザーとは別のものであり、最初はパスワードに何も設定されていません。よってここでの質問には何も入力せずEnterキーを押します。
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
次に、「rootのパスワードを設定しますか?」と聞かれますので、’Y‘を入力してEnterキーを押します。
New password:
New passwordを聞かれますので、新しいMySQL rootのパスワードを設定してください。
ここはOSのrootと同じパスワードを使うのではなく、別の文字列にすることをおすすめします。
パスワードをうまく決められない場合は、第2回目の連載で紹介したパスワードジェネレータが便利です。
そしてパスワードを入力すると、
Re-enter new password:
と確認のためもう一度パスワードの入力を求められますので入力してください。
その後、いくつかの質問が続きます。この先はすべて'Y'で答えておけばよいです。
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
これでMariaDBの初期設定が完了しました。
ここまでできたら、MariaDBにログインできるかどうかを確認してみます。
# mysql -u root -p
-u root -pというオプションがついていますが、これはそのままmysqlコマンドと一緒に覚えてください。
「パスワードを使ってrootユーザーでMariaDBにログインする」という意味になります。
Enter password: と聞かれるので、先ほど設定したMariaDB rootユーザーのパスワードを入力してください。
Enter password:
そうすると、Welcomeメッセージが表示されて、最後に
MariaDB [(none)]>
と出てMariaDBコマンドの入力待ちになります。
ここまで来るとうまくMariaDBに接続できています。
DBにログインするには、まずVPSにLinuxユーザーとしてログイン済みでなければなりません。つまり、DBにログインするには、
「Linuxユーザーとしてログイン後、DBユーザーとしてログインする」
という2回のログイン操作が必要になります。
また、VPSの外から直接DBにログインすることはできません。
'show databases;'と入力してみてください。'MariaDB [(none)]>'の部分は最初から表示されていた部分なのでこれは入力しないでください。
行末の';'(セミコロン)も必要です。
MariaDB [(none)]> show databases;
このコマンドは「データベースを一覧表示する」コマンドです。
以下のように表示されると思います。
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.00 sec)
information_schema, mysql, persormance_schemaという3つのデータベースが最初から存在することが分かります。
「データベース」という名称は、「データベースアプリケーションそのもの」にも使われますし、「データを保存するテーブルの集合をまとめた単位」にも使われますので混同しないようにしてください。
MariaDBそのものも、「データベース」と呼ばれます。
WordPressのインストール時には、wordpressデータベースを1つ作ることになります。
これで、設定したパスワードでrootでMariaDBにログインできることが確認できました。
ログアウトは'exit'コマンドで行えます。
MariaDB [(none)]> exit
もし、コマンドを打ち間違えたりしてうまく終了できなくなった場合はControlキーを押しながらcキー(Ctrl-C)を押すとMariaDBからログアウトできます。
ここまでで、phpとMariaDBがインストールできました。
次回(第5回目)の記事の公開まで自分のサーバーを触る予定が無い方は、前回と同様、外部からの余計な攻撃にさらされないようにサーバーを停止しておきましょう。
サーバー停止コマンドは以下です。
# shutdown -h now
第4回目は以上です。第5回目をお楽しみに。
(イラスト:オガ(ブログ))