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