GCP(f1-micro)のCentOS8にOpenLiteSpeedとEC-CUBE2.17をインストール

##はじめに

EC-CUBE2.17からComposerが必要と聞いて。
折角なのでCentOS8とOpenLiteSpeedを使ってみました。

##構築する環境
- Google Cloud Platform (f1-micro 無料枠)
- CentOS8
- OpenLiteSpeed1.5.10
- EC-CUBE2.17

##各種設定

###rootパスワード設定、変更

SSHログイン後

```
sudo passwd root
```

rootでログイン(パスワードを入力)

```
su -
```

###タイムゾーン変更

```
timedatectl set-timezone Asia/Tokyo
```

###Firewall

```
firewall-cmd --add-port=80/tcp --permanent --add-port=443/tcp --permanent --add-port=7080/tcp --permanent
firewall-cmd --reload
```

(port7080はOpenLiteSpeed管理用)

###SELinux無効化のちreboot
※本番環境では適宜設定下さい。

```
vi /etc/selinux/config
SELINUX=enforcing ----> SELINUX=disabled に変更。

:wq

reboot
```

##OpenLiteSpeed Install
参考: https://blog.apar.jp/linux/10079/

```
dnf -y install epel-release
rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm
dnf -y install openlitespeed
```
※ /usr/local/lswsに LiteSpeed Web Server がインストールされます。

###OpenLiteSpeed用php7.3 Install
```
dnf -y install lsphp73 lsphp73-devel lsphp73-pdo lsphp73-mbstring lsphp73-gd lsphp73-json lsphp73-pear lsphp73-pecl-apcu-devel zlib-devel lsphp73-xml lsphp73-mcrypt lsphp73-pgsql
```

####アカウント作成
```
/usr/local/lsws/admin/misc/admpass.sh
```

アカウントとパスを入力。

###起動・管理ページログイン

```
systemctl start lsws
chkconfig lsws on
```

https://IPaddress:7080

からログイン。
Virtual Hostには初期設定でSampleが用意されているので、今回はそちらを使用。

####php設定
Server Configuration > External Appの
「Command」を

```
$SERVER_ROOT/lsphp73/bin/lsphp
```

に変更。

####サーバ設定

Listener Default > Generalの
「Address Settings」のポートを8088 -> 80に変更。

Virtual Hosts > Summary > Exampleの
「Virtual Host Root」-> /var/www/html/

Virtual Host Example > Generalの
「Document Root」 → $VH_ROOT

Index Filesを変更
Use Server Index Files -> No
Index Files -> Not set
Auto Index -> Yes
Auto Index URI -> Not set

####サーバ再起動

管理ツール右上の再起動ボタンを押す。

####php7.3のversion確認
http://IPaddress
(httpsではなく)

phpinfo()でバージョン確認。

```
vi /var/www/html/index.php
phpinfo();
```
##Composer Install

コマンドライン用のphp7.3

```
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module install -y php:remi-7.3
```
Composer 

```
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
```

##EC-CUBE Install

```
cd /var/www/html/
wget https://github.com/EC-CUBE/ec-cube2/releases/download/eccube-2.17.0/eccube-2.17.0.tar.gz
tar -zxvf eccube-2.17.0.tar.gz
cd ec-cube2
composer install --no-dev --no-interaction -o
```

##PostgreSQL Install
参考: https://qiita.com/tomlla/items/9fa2feab1b9bd8749584

```
dnf install -y @postgresql:10
/usr/bin/postgresql-setup --initdb

systemctl start postgresql
systemctl enable postgresql
```

そのままではPeer認証のためにログイン出来ないため、md5に変更。

```
su postgres -c 'psql --username=postgres'
ALTER USER postgres with encrypted password 'test_password_here';
vi /var/lib/pgsql/data/pg_hba.conf
```

最下部のidentをmd5に変更して再起動。

```
systemctl restart postgresql
```

###ログイン、DB作成
```
psql -U postgres -h localhost -W
```
パスワードを入れてログイン後

```
create database testdb;

\q (ログアウト)
```

##EC-CUBE設定

http://IP/ec-cube2/html/install/
にアクセス。

>EC-CUBEのインストールを開始します。
>アクセス権のチェック
>必要なファイルのコピー
>ECサイトの設定

上記を適宜設定。
※DBのユーザは「postgres」

>データベースの設定
>サイト情報について

適宜入力。インストールが完了したら
http://IP/ec-cube2/html/
でサイト確認。
お疲れさまでした。

##注意

###phpモジュールが入っているのにインストール時にエラーが出る

lsphp73-pgsqlが入っているにもかかわらず
**[Error message: extension pgsql is not compiled into PHP]**
のようなエラーが出る場合は、サーバ自体をrebootする。

###.htaccessの制限

1.5.10時点でVirtual Host > RewriteからAuto Load from .htaccessを有効に出来るが、無償版のOpenLiteSpeedには機能に制限があるため、.htaccessにアクセス制限などを書いても無視されるっぽい。そのため詳細設定は管理画面から直接行う必要がある。
なので、EC-CUBE2.17の管理画面にアクセス制限をかけたい場合などは注意。
また、設定した.htaccessもウェブサーバの再起動を行わないとなかなか反映されないなど。