ConoHaでPHP7.1のLAMP環境を作る。例えばDrupal8用に。
ConoHaではPHP7.1が入っているイメージが無さそうなので*1、自分で用意します。
土台になりそうな以下の3つのイメージの構成を確認してみましょう。
- アプリケーション-LAMP(PHP)
- OS-CnetOS
- アプリケーション-Drupal
一見、素のCentOSから組み上げたほうが良さそうなんですが、実は LAMP(PHP) イメージがオススメです。
なお、Drupalイメージがリストにあるのは、練習用の Drupal8 サーバーを建てようとしたことが今回のキッカケであったからです。
LAMP(PHP)イメージをオススメする理由
LAMP(PHP)イメージをオススメする理由は、パーティションと LVM の設定が他のイメージと違って良い感じになっているからです。
2017/03/05時点でのそれぞれのイメージの構成を下記に載せておきます。
比べてみると、LAMPイメージだけLinuxっぽいパーティション切りがされていて、LVM Volume の設定もされています。
いい感じです。
アプリケーション-LAMP(PHP)の構成
- イメージ選択 : アプリケーション
- アプリケーション : LAMP(PHP)
- バージョン : latest-64bit
# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 49746196 1567164 48179032 4% / devtmpfs 498184 0 498184 0% /dev tmpfs 508384 0 508384 0% /dev/shm tmpfs 508384 13092 495292 3% /run tmpfs 508384 0 508384 0% /sys/fs/cgroup /dev/vda1 508588 213192 295396 42% /boot tmpfs 101680 0 101680 0% /run/user/0 # lvmdiskscan /dev/centos/root [ 47.46 GiB] /dev/vda1 [ 500.00 MiB] /dev/centos/swap [ 2.00 GiB] /dev/vda2 [ 49.51 GiB] LVM physical volume 2 disks 1 partition 0 LVM physical volume whole disks 1 LVM physical volume # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom sr1 11:1 1 482K 0 rom vda 252:0 0 50G 0 disk ├vda1 252:1 0 500M 0 part /boot └vda2 252:2 0 49.5G 0 part ├centos-root 253:0 0 47.5G 0 lvm / └centos-swap 253:1 0 2G 0 lvm [SWAP] # lvscan ACTIVE '/dev/centos/swap' [2.00 GiB] inherit ACTIVE '/dev/centos/root' [47.46 GiB] inherit # swapon -s Filename Type Size Used Priority /dev/dm-1 partition 2097148 0 -1 # php -v PHP 5.6.27 (cli) (built: Oct 14 2016 17:31:51) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
OS-CentOSの構成
- イメージ選択 : OS
- OS : CnetOS
- バージョン : 7.3(64bit)
# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda2 51471820 3719660 45429272 8% / devtmpfs 498824 0 498824 0% /dev tmpfs 508200 0 508200 0% /dev/shm tmpfs 508200 13048 495152 3% /run tmpfs 508200 0 508200 0% /sys/fs/cgroup tmpfs 101640 0 101640 0% /run/user/0 # lvmdiskscan /dev/vda1 [ 2.00 MiB] /dev/vda2 [ 50.00 GiB] 0 disks 2 partitions 0 LVM physical volume whole disks 0 LVM physical volumes # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom sr1 11:1 1 482K 0 rom vda 253:0 0 50G 0 disk ├vda1 253:1 0 2M 0 part └vda2 253:2 0 50G 0 part / # swapon -s Filename Type Size Used Priority /var/spool/swap/swapfile file 2097148 0 -1
アプリケーション-Drupalの構成
- イメージ選択 : アプリケーション
- アプリケーション : Drupal
- バージョン : 8.2-64bit
# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda2 51471820 4149532 44999400 9% / devtmpfs 498512 0 498512 0% /dev tmpfs 508200 0 508200 0% /dev/shm tmpfs 508200 13068 495132 3% /run tmpfs 508200 0 508200 0% /sys/fs/cgroup tmpfs 101640 0 101640 0% /run/user/0 # lvmdiskscan /dev/vda1 [ 2.00 MiB] /dev/vda2 [ 50.00 GiB] 0 disks 2 partitions 0 LVM physical volume whole disks 0 LVM physical volumes # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom sr1 11:1 1 482K 0 rom vda 253:0 0 50G 0 disk ├vda1 253:1 0 2M 0 part └vda2 253:2 0 50G 0 part / # swapon -s Filename Type Size Used Priority /var/spool/swap/swapfile file 2097148 0 -1 # php -v PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/uploadprogress.so' - /usr/lib64/php/modules/uploadprogress.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP 5.6.29 (cli) (built: Dec 9 2016 07:40:09) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
LVMの設定したり、/boot を新たにパーティション切りしたり、かなり難しそうなので、今回はLAMPイメージをベースに作業をすることにします。
php5.6の削除
アプリケーション-LAMP(PHP)-latest-64bit イメージでサーバーを建て、SSH経由rootログインしたところから始めます。
まずは、phpのインストールされている内容を確認。
# yum list installed | grep php* php56u.x86_64 5.6.27-1.ius.centos7 @ius php56u-cli.x86_64 5.6.27-1.ius.centos7 @ius php56u-common.x86_64 5.6.27-1.ius.centos7 @ius php56u-devel.x86_64 5.6.27-1.ius.centos7 @ius php56u-gd.x86_64 5.6.27-1.ius.centos7 @ius php56u-imap.x86_64 5.6.27-1.ius.centos7 @ius php56u-mbstring.x86_64 5.6.27-1.ius.centos7 @ius php56u-mcrypt.x86_64 5.6.27-1.ius.centos7 @ius php56u-mysqlnd.x86_64 5.6.27-1.ius.centos7 @ius php56u-pdo.x86_64 5.6.27-1.ius.centos7 @ius php56u-pear.noarch 1:1.10.1-4.ius.centos7 @ius php56u-pecl-jsonc.x86_64 1.3.10-2.ius.centos7 @ius php56u-pecl-jsonc-devel.x86_64 1.3.10-2.ius.centos7 @ius php56u-process.x86_64 5.6.27-1.ius.centos7 @ius php56u-xml.x86_64 5.6.27-1.ius.centos7 @ius xz.x86_64 5.1.2-12alpha.el7 @anaconda xz-libs.x86_64 5.1.2-12alpha.el7 @anaconda
ius版がインストールされています。他にもiusからインストールしているものが無いかも確認します。
# yum list installed | grep @ius php56u.x86_64 5.6.27-1.ius.centos7 @ius php56u-cli.x86_64 5.6.27-1.ius.centos7 @ius php56u-common.x86_64 5.6.27-1.ius.centos7 @ius php56u-devel.x86_64 5.6.27-1.ius.centos7 @ius php56u-gd.x86_64 5.6.27-1.ius.centos7 @ius php56u-imap.x86_64 5.6.27-1.ius.centos7 @ius php56u-mbstring.x86_64 5.6.27-1.ius.centos7 @ius php56u-mcrypt.x86_64 5.6.27-1.ius.centos7 @ius php56u-mysqlnd.x86_64 5.6.27-1.ius.centos7 @ius php56u-pdo.x86_64 5.6.27-1.ius.centos7 @ius php56u-pear.noarch 1:1.10.1-4.ius.centos7 @ius php56u-pecl-jsonc.x86_64 1.3.10-2.ius.centos7 @ius php56u-pecl-jsonc-devel.x86_64 1.3.10-2.ius.centos7 @ius php56u-process.x86_64 5.6.27-1.ius.centos7 @ius php56u-xml.x86_64 5.6.27-1.ius.centos7 @ius
ius からインストールされたパッケージは、php56u系のみでした。
php56uをまとめて削除します。
# yum remove php56u* Removing: php56u x86_64 5.6.27-1.ius.centos7 @ius 8.5 M php56u-cli x86_64 5.6.27-1.ius.centos7 @ius 13 M php56u-common x86_64 5.6.27-1.ius.centos7 @ius 8.1 M php56u-devel x86_64 5.6.27-1.ius.centos7 @ius 8.3 M php56u-gd x86_64 5.6.27-1.ius.centos7 @ius 814 k php56u-imap x86_64 5.6.27-1.ius.centos7 @ius 207 k php56u-mbstring x86_64 5.6.27-1.ius.centos7 @ius 2.7 M php56u-mcrypt x86_64 5.6.27-1.ius.centos7 @ius 97 k php56u-mysqlnd x86_64 5.6.27-1.ius.centos7 @ius 1.0 M php56u-pdo x86_64 5.6.27-1.ius.centos7 @ius 397 k php56u-pear noarch 1:1.10.1-4.ius.centos7 @ius 2.1 M php56u-pecl-jsonc x86_64 1.3.10-2.ius.centos7 @ius 188 k php56u-pecl-jsonc-devel x86_64 1.3.10-2.ius.centos7 @ius 123 k php56u-process x86_64 5.6.27-1.ius.centos7 @ius 187 k php56u-xml x86_64 5.6.27-1.ius.centos7 @ius 878 k
このあと、iusは使用せずに remi を使用するので、リポジトリの設定を、enabled=0 にしてしまいます。
# cd /etc/yum.repos.d #enabled=1となっているものを確認 # grep "enabled=1" * epel.repo:enabled=1 epel.repo:enabled=1 epel.repo:enabled=1 ius.repo:enabled=1 #ius.repoを書き換え(vimで書き換えた方が楽かも。) # sed -i 's/enabled=1/enabled=0/g' ius.repo
remi リポジトリの追加とシステム全体のアップデート
remiリポジトリを追加して、remi-php71 リポジトリを有効にします。
#remiリポジトリの追加 # yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm #だるいので、php71をenabledに変更 # vim remi-php71.repo [remi-php71] (中略) enabled=1 #ここを1に変更する (省略)
一応、このタイミングでシステム全体をアップデートした後にリブートします。
# yum update # reboot
再起動後にバージョン確認すると、CentOS 7.3にちゃんとアップデートされてます。
ついでに、念のため、yum のキャッシュなどをお掃除しておきます。
# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) # yum clean all
MariaDB(MySQL)セットアップとNginxのインストール
MySQLのセットアップは、mysql_secure_installation でさっくり終わらせます。
MariaDBのルートパスワードは、ログイン時に表示されるmotdに書かれているので、これでログインした上でパスワード変更します。
その他は、Enter連打(デフォルトでYesが設定されている。)で設定完了。
使うかどうかわかりませんが、一応、nginxもインストールしておきましょう。
リポジトリを手動で登録してから、yumでインストールします。
# vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 # yum install nginx
PHP7.1のインストール
PHP7.1をインストールします。関連パッケージは使いそうなものを適当に追加しています。
インストールが終わったら、apache を再起動して、phpinfo()*2を表示して動作確認します。
# yum install php php-mysqlnd php-pdo php-fpm php-devel php-gd php-mbstring php-mcrypt php-pear #Drupalのインストールをするなら以下もついでに入れておきます。 # yum install php-pecl-uploadprogress php-opcache # systemctl restart httpd
phpinfo は、ブラウザから、http://[サーバーのIPアドレス]/phpinfo.php を表示して確認します。
これで、LAMP(PHP7.1)環境の土台ができました。
この後は、接続用ユーザーの作成やSSH、ファイアーウォールなど通常しなければならない設定をします。
ご参考までに、以前に書いた Kusanagi のシリーズ記事に初期セットアップなどが載ってますので、その最初の記事のリンクを貼っておきます。
ConoHa で KUSANAGI がかなり良い。サーバーセットアップと初期設定
おまけ
/boot のディスクスペース開放
Kernelのアップデートがあるたびに、/boot のディスクスペースが無くなっていきますので、古いカーネルを削除してディスクスペースを確保します。
古いカーネルの削除には、yum-utils を使用すると便利です。
# yum install yum-utils #ディスクの使用状況 # df #最新のカーネル3つを残して他を削除する # package-cleanup --oldkernels --count=3 #ディスクの使用状況 # df
Drupal8のインストール
実は、自分的にはこれが本題だったんですが、Drupal8のインストールです。
Drush というツールを使用すると簡単です。
# yum install drush
次に、MariaDB に、Drupal8 用のユーザーとデータベースを作成します。
ユーザー名、パスワード、データベース名をメモしておきます。
公開ディレクトリの一つ上の階層に移動し、drush コマンドを使って Drupal8 をダウンロードします。
下記は /var/www/html/ が公開ディレクトリである場合の例です。
# cd /var/www # drush dl drupal --drupal-project-rename=html --yes
既に、html ディレクトリが存在する場合でも、それを上書きして Drupal8 のファイル群が設置されます。
あとは、ブラウザからサイトにアクセスし先ほどメモしたデータベースの情報などを順次入力していくと、セットアップが完了します。
また、Drupal8のインストールディレクトリ以下の、
sites/default/settings.php
というファイルを開いて、trusted_host_patterns に、自分のサイトのドメイン名とエイリアスを登録しておきましょう。
swap領域の追加 (2017/03/08 追記)
swap領域を追加したい場合、LVMでswapパーティションを増やせれば良いのですが、結論から言うと領域変更はできません。
swap領域を増やしたいときは、素直にswapファイルを作って領域を追加するのが正解です。もちろん、パーティション形式とファイル形式のスワップ領域は同時に利用することができます。
VLMで領域を減らすときは、rootをアンマウントする必要があります。ところが、CDなどの別メディアから起動できないVPSでは、稼働中のrootをアンマウントすることができません。
従って、root領域を減らすことができないので、swap領域を広げることもできないのです。
折角LVMになってるのに、最小構成では使い所が無いですね。有料オプションの追加ディスクを導入したときにはLVMが活躍する場面が有りそうです。
さはさりながら、試しに新しく1GBのサーバーをLAMPイメージで建ててrootをアンマウントせずに強引に領域調整してみたところ起動できなくなりました。
具体的には、lvresizeでrootを2GB減らし、swapを2GB増やしてみました。作業自体は問題なくできてその場ではちゃんと新しい領域を認識しうまく動いているように見えるのですが、シャットダウンして起動するとまったく無反応になってしまいます。
危険です。間違っても稼働中のサーバーではやらないほうが良いです。(笑)