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

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

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

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

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

CentOS 7での環境構築

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

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

mysqlのインストール

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

$ sudo yum install http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
$ sudo yum 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.4をremiからインストールします。

$ sudo yum install epel-release
$ sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum install php74 php74-php php74-php-pdo php74-php-pdo_mysql php74-php-mbstring
$ sudo yum install php74-php-gd php74-php-pecl-zip php74-php-xml
$ sudo systemctl restart httpd.service

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

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

2022/12/19 追加: 記載をPHP7.4に変更して、増えたパッケージを追加

LibreOfficeのインストール

エクセルをPDFに変換するのに使用するのにLibreOfficeを使うので、インストールします。

$ sudo yum install libreoffice libreoffice-langpack-ja

フリーのフォント(M PLUS 1)を併せてインストールします。 M PLUS 1フォントは、本家(M+ FONTS)から、「google fonts」「M PLUS 1」と選んで、「Download Family」でダウンロードできるttfファイルを使用します。

$ sudo mkdir /usr/local/share/fonts
$ sudo cp -r M_PLUS_1/static /usr/local/share/fonts/mplus
$ sudo fc-cache /usr/local/share/fonts/mplus

躓いたところのメモ

躓いたのは以下の二つ。

「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が動いていないと気付くまでに少し時間がかかりました。

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