どうも今日は今一つ気分が落ち着かない感じでした。うまく寝れていない感じもするので、ゆっくり休みます。
さて、バイト先でCentOS 7にYii2の環境を構築する機会があったので、メモを残しておきます。
CentOS 7での環境構築
CentOS 7だから特別な手順があるわけではありません。 パッケージマネージャがaptではなくyumだったり、apache2のパッケージ名がhttpdだったりする位で、やることは一緒です。
ubuntuと一番違うのはphpの新しめのバージョンが最初から入っているかどうか位かな。 phpをゼロから入れたのは初めてなので、ちょっと躓いたところがあります。
mysqlのインストール
mysqlはCentOSの公式にはないので、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に以下のような設定を追加して事なきを得ました。
こちらはrewriteが動いていないと気付くまでに少し時間がかかりました。
こうやってメモを残しておけば、次に同じことで躓くこともなくなるはず。