さくらのVPS(CentOS7)にopencart 3.0をインストールする


さくらのVPS(1G)にOpenCartをインストールします。
今回はOSにCentOS 7.1 を入れました。

# セキュリティ設定等

さくらVPSでCentos7を建てた時に最低限やること
https://qiita.com/masaki_iwahara/items/3eb0a251a57063381cf1


# opencartのインストール要件を確認する

公式ドキュメントにあるように、以下の環境が必要です。
http://docs.opencart.com/requirements/


- Web Server (Apache推奨)
- PHP 5.4以上
- Database (MySQL推奨)

他に、PHPライブラリ/モジュールとして以下が必要です。

- Curl
- ZIP
- Zlib
- GD Library
- Mcrypt
- Mbstrings
- Xml

# LAMP環境を構築する

- 「サーバーってなに？」～初心者でもよくわかる！VPSによるWebサーバー構築講座(1)  http://knowledge.sakura.ad.jp/beginner/2691/

あたりを参考に、LAMP環境を構築します。

- CentOS7には、mariaDBというデータベースサーバがデフォルトで入っているので、mariaDBを削除して、MySQLをインストールします。

```
# yum remove mariadb*
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -Uvh mysql-community-release-el7-5.noarch.rpm
# yum --enablerepo=mysql56-community install mysql-community-server
# systemctl start mysqld
# mysql_secure_installation 
```

- Opencartインストール後にmysqlのWarningが出る場合は、php-mysql の代わりにphp-mysqlnd をインストールします。

```
Warning: mysqli::mysqli(): Headers and client library minor version mismatch. Headers:50550 Library:50637 in /var/www/html/system/library/db/mysqli.php on line 7 
```

```
# yum remove php-mysql
# yum install php-mysqlnd
# systemctl restart httpd
```



- apacheでSSLを使うために、mod_sslをインストールします。

```
# yum install mod_ssl
```

# opencartのダウンロード、展開、サーバにアップロードをする

サーバ上から直接GitHubにつないで、最新バージョン(2017年9月時点では3.0.2.0)のzipファイルをダウンロードして、展開します。

```
$ cd ~
$ wget https://github.com/opencart/opencart/archive/3.0.2.0.zip
$ mv 3.0.2.0.zip opencart-3.0.2.0.zip
```

展開して出てきたファイルを、配置します。

```
# cd /var/www/
# unzip /home/myname/opencart-2.3.0.2.zip
# mv html html.bak
# mv opencart-3.0.2.0/upload .
# mv upload html
```

# configファイルのコピー、ディレクトリのパーミッションを設定する

```
# cd /var/www/html
# cp config-dist.php config.php
# chown apache:apache config.php
# cp admin/config-dist.php admin/config.php
# chown apache:apache admin/config.php

# chown apache:apache image image/cache image/catalog
# chown apache:apache system/storage/cache system/storage/logs
# chown apache:apache system/storage/download system/storage/upload
# chown apache:apache system/storage/modification
# chown apache:apache system/storage/session system/storage/vendor

```

# データベースを作成する

phpMyAdminなどから、データベースとデータベースユーザを作成します。
データベース名：oc3020
ユーザ名：ocuser
パスワード：mypassword
としました。

コマンドラインから作成する場合は以下です。

```
# mysql -u root -p
mysql> CREATE DATABASE oc3020;
mysql> GRANT ALL ON oc3020.* TO ocuser@localhost;
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR ocuser@localhost = password('mypassword');
mysql> quit
```

# ブラウザからインストール画面を開いてインストールする

## (1/4)License agreement

ライセンスを確認して、CONTINUEをクリックします。
![1-License_agreement.png](https://qiita-image-store.s3.amazonaws.com/0/142577/c7343993-33cf-8bce-32f8-ca92357cc2cb.png "1-License_agreement.png")


## (2/4)Pre-Installation

全て緑色のチェックマーク、あるいは緑色の文字でWritableとなっているのを確認して、
CONTINUEをクリックします。
![2-Pre-Installation.png](https://qiita-image-store.s3.amazonaws.com/0/142577/2026354c-0391-2434-48c0-a2125f08d271.png "2-Pre-Installation.png")


## (3/4)Configuration

1.データベースへの接続設定
（Usernameはデータベースユーザ名なので注意してください）
DBDriver：MySQLi
Hostname：localhost
Username：ocuser
Password：mypassword
Database：oc3020
Port：3306
Prefix：oc_

2.管理者情報を設定

Username：admin
Password：adminpassword
E-Mail：test@example.com

CONTINUEをクリックします。
![3-Configuration.png](https://qiita-image-store.s3.amazonaws.com/0/142577/d2aaf2ca-2ed6-3151-ee7f-c5cfedf3bed8.png "3-Configuration.png")


## (4/4)Installation complete

入力内容に誤りが無ければ、インストールが行われます。
![4-Installation_complete.png](https://qiita-image-store.s3.amazonaws.com/0/142577/8059f133-dde1-cda6-60ab-3fe9fb35d96d.png "4-Installation_complete.png")


# installフォルダを削除する

```
# rm -r /var/www/html/install/
```

#  storage フォルダを、外部からアクセスできない場所に移動する

storageフォルダには、ログやセッション情報などが含まれていますので、外部からアクセスできない場所に移動します。
(これを行わないと、管理者画面でnotificationが表示されます)

- フォルダの移動

```
# mv /var/www/html/system/storage /var/www/storage
```

- 設定ファイルの変更(ショップ画面用)

```
/var/www/html/config.php を開いて、

define('DIR_STORAGE', DIR_SYSTEM . 'storage/');
を
define('DIR_STORAGE', '/var/www/storage/');
に変更します。
```

- 設定ファイルの変更(管理者画面用)

```
/var/www/html/admin/config.php を開いて、

define('DIR_STORAGE', DIR_SYSTEM . 'storage/');
を
define('DIR_STORAGE', '/var/www/storage/');
に変更します。
```


# ショップ画面、管理者画面にアクセスする

- ショップ画面は、 http://ホスト名/ でアクセスできます。

- 管理者画面は、 http://ホスト名/admin/ でアクセスできます。

(ショップ画面)
![Your Store.png](https://qiita-image-store.s3.amazonaws.com/0/142577/9ba880f1-a001-8971-c8b9-37b936a1fff0.png "Your Store.png")

(管理者画面)
![Dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/142577/50b298aa-41ec-2837-3be4-f18f44ce2592.png "Dashboard.png")


以上です。