47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

技術メモ: CentOS 7にYii2の環境を構築する

どうも今日は今一つ気分が落ち着かない感じでした。うまく寝れていない感じもするので、ゆっくり休みます。

さて、バイト先でCentOS 7にYii2の環境を構築する機会があったので、メモを残しておきます。

CentOS 7での環境構築

CentOS 7だから特別な手順があるわけではありません。 パッケージマネージャがaptではなくyumだったり、apache2のパッケージ名がhttpdだったりする位で、やることは一緒です。

ubuntuと一番違うのはphpの新しめのバージョンが最初から入っているかどうか位かな。 phpをゼロから入れたのは初めてなので、ちょっと躓いたところがあります。

mysqlのインストール

mysqlCentOSの公式にはないので、mysqlの公式サイトからインストールします。

$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
$ sudo yum -y install mysql-community-server
$ sudo systemctl start mysqld.service
$ sudo systemctl enable mysqld.service

最後のsystemctlはサービス自動起動の設定です。

apache2 (httpd)

apache2 (httpd)は普通にインストールするだけです。

$ sudo yum install httpd
$ sudo systemctl start httpd.service
$ sudo systemctl enable httpd.service

phpの設定

公式だとバージョンが古い(php5.4)ので、(開発サーバで使っていたバージョンの)php7.2をremiからインストールします。

$ yum -y install epel-release
$ yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ yum -y install php72 php72-php
$ yum -y install php72-php-pdo php72-php-pdo_mysql
$ yum -y install php72-php-mbstring
$ sudo systemctl restart httpd.service

apache2を再起動しないとphpの設定変更が有効にならないのでそこは注意が必要です。

php72-php-pboというような指定が最初はわからず、ちょっと苦労しました。

躓いたところのメモ

躓いたのは以下の二つ。

「Class 'PDO' not found」のエラーとなる

phpでデータベースをアクセスするためのモジュールがpboですが、 php-pdoをバージョンごとのものを入れる必要があることに気づかず、「Class 'PDO' not found」のエラーに苦しみました。

最終的には、php72-php-pdo、php72-php-pdo_mysqlの二つのパッケージをインストールすることで、やっと解決しました。

こちらはかなり解決に時間がかかりました。

Yii2のprettyurlが使えない

AllowOverride Allを行っておらず、.htaccessで設定しているrewriteが動いていませんでした。

いつもapache2の設定でVirtualHostを使っていたのですが、今回はAliasだけしか使いませんでした。 VirtualHostで無意識にAllowOverride Allを行っていました。

/etc/httpd/conf.d/xxxx.confに以下のような設定を追加して事なきを得ました。

AllowOverride All

こちらはrewriteが動いていないと気付くまでに少し時間がかかりました。

こうやってメモを残しておけば、次に同じことで躓くこともなくなるはず。