Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

開発者向けインストールの内容を補足+α #110

Merged
merged 2 commits into from
Jun 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions _data/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ docs:
- title: 開発者向けインストール方法
url: /quickstart_install
output: web, pdf
- title: パーミッションの設定について(共通事項)
url: /permission
output: web, pdf
- title: コマンドラインインターフェイス
url: /quickstart_cli
output: web, pdf
Expand Down
223 changes: 41 additions & 182 deletions _pages/quickstart/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,211 +19,58 @@ description: EC-CUBE 4系のインストールについての説明です。
1. [Dockerを使用してインストールする](#dockerを使用してインストールする)
1. [Docker Composeを使用してインストールする](#docker-composeを使用してインストールする)

## パーミッションの設定について(共通事項)
#### パーミッションの設定について(共通事項)

EC-CUBE の便利な機能のいくつかは、Webサーバがファイルに書き込みできることに基づいています。
しかし、アプリケーションがファイルに書き込み権限を持つことは危険です。
セキュリティの観点からベストなのは、パーミッションを可能な限り制限して特定のディレクトリ・ファイルのみに書き込み権限を与えることです。
以下のパーミッション設定に関してはどのインストール方法でも共通になります。
インストールした際の[パーミッションの設定について](/permission)も合わせてお読みください。
セキュリティの観点から、パーミッションは可能な限り制限して特定のディレクトリ・ファイルのみに書き込み権限を与えることをおすすめいたします。

### Webサーバの書き込み権限

EC-CUBEの全ての機能を利用するためには以下のディレクトリ・ファイルにWebサーバからの書き込み権限が必要です。

```
[eccube_root/]
├──[app/]
│ ├──[Plugin/]
│ ├──[PluginData/]
│ ├──[proxy/]
│ └──[template/]
├──[html/]
├──[var/]
├──[vendor/]
├──[composer.json]
└──[composer.lock]
```

その他のディレクトリ・ファイルには読み取り権限が必要です。

#### eccube_root/

EC-CUBEのルートディレクトリにWebサーバの書き込み権限が必要です。
ルートディレクトリ配下には `.env` ファイルや `.maintenance` ファイル等が配置されます。
**ルートディレクトリ配下は別の推奨権限がありますので一括権限変更しないようにご注意ください。**

#### app/

ディレクトリにWebサーバの書き込み権限が必要です。
配下のディレクトリにWebサーバの書き込み権限が必要なためです。

#### app/Plugin/

ディレクトリにWebサーバの書き込み権限が必要です。
プラグインのソースコードが配置されます。

#### app/PluginData/

ディレクトリにWebサーバの書き込み権限が必要です。
プラグインのデータが配置されます。

#### app/proxy/

ディレクトリ配下にWebサーバの書き込み権限が必要です。
Entity拡張で生成されるproxyファイルが配置されます。

#### app/template/

ディレクトリ配下にWebサーバの書き込み権限が必要です。
テンプレートファイルが配置されます。

#### html/

ディレクトリ配下にWebサーバの書き込み権限が必要です。
cssファイルやjsファイル等が配置されます。

#### var/

ディレクトリ配下にWebサーバの書き込み権限が必要です。
キャッシュやログなどの一時ファイルが配置されます。

#### vendor/

ディレクトリ配下にWebサーバの書き込み権限が必要です。
プラグインインストール時にライブラリがインストールされ、クラスマップが更新されます。

#### composer.json / composer.lock

ファイルにWebサーバの書き込み権限が必要です。
プラグインインストール時に更新されます。

#### パーミッションの設定例

権限が必要なロールはサーバの仕様によって異なります。
例えば共有サーバ等の場合、ファイルを設置するFTPユーザとWebサーバの実行ユーザが異なる場合があります。
この場合、WebサーバはOtherでの権限でアクセスすることになりますので、EC-CUBEの機能を利用するためにはOtherに対して適切に書き込み権限を設定する必要があります。

| ディレクトリ・ファイル | Webサーバに必要な権限 | 設定例 |
|--------------------|----------|-------|
| eccube_root/ <br> app/ <br> app/Plugin/ <br> app/PluginData/ <br> app/proxy/ <br> app/template/ <br> html/ <br> var/ <br> vendor/ | 読み取り、書き込み | 707( `rwx---rwx` ) |
| その他のディレクトリ | 読み取り | 705( `rwx---r-x` ) |
| composer.json <br> composer.lock | 読み取り、書き込み | 606( `rw----rw-` ) |
| その他のファイル | 読み取り | 604( `rw----r--` ) |

#### 本体のバージョンアップについて

アップデートプラグインにてEC-CUBE本体をバージョンアップする場合は全ファイルにWebサーバからの書き込み権限が必要になります。
バージョンアップの際は一時的にWebサーバの書き込み権限を付与していただき、アップデート後は推奨のパーミッション設定に戻してください。

#### bin/consoleについて

EC-CUBEのコマンドを利用する場合は `bin/console` に実行権限を付与してください。
---

### 本番環境でのパーミッション設定
### 1.コマンドラインからインストールする

前項ではEC-CUBEの全ての機能を利用するためのWebサーバの書き込み権限について記載いたしました。
本番環境ではさらにパーミッションを制限することで、よりセキュリティリスクを下げることができます。
ただしパーミッションの制限を強くすると一部機能が制限され、利便性が落ちてしまいます。
それぞれのファイル・ディレクトリの役割と制限内容を理解した上でパーミッションの設定をお願いします。
**開発環境としておすすめの方法です。**
こちらはGitHub上にある最新のEC-CUBE4をインストールする方法になります。
※ 公式サイトのパッケージ版とは違いますので、ご注意ください。

以下のディレクトリ・ファイルにはセキュリティの観点からWebサーバの書き込み権限を付与しないほうが安全です。
1.EC-CUBEをインストールしたいディレクトリへ移動

```shell
cd ディレクトリのアドレス指定(もしくはディレクトリをドラック&ドロップ)
```
[eccube_root/]
├──[app/]
│ ├──[Plugin/]
│ ├──[proxy/]
│ └──[template/]
├──[vendor/]
├──[.env]
├──[.htaccess]
├──[composer.json]
└──[composer.lock]
```

上記のディレクトリ・ファイルのWebサーバの書き込み権限を制限した場合には以下の機能が制限されます。

- コンテンツ管理
- ページ管理
- ブロック管理
- メンテナンス管理
- 設定
- 店舗設定
- 特定商取引法設定
- 利用規約設定
- メール設定
- システム設定
- セキュリティ管理
- オーナーズストア
- プラグイン
- プラグイン一覧
- テンプレート
- テンプレート一覧
- アップロード
- 設定

#### .env と .htaccess

`.env` はEC-CUBEのインストール時に作成され、EC-CUBEの重要な設定が記載されています。
また、 `.htaccess` にはWebサーバの設定や環境変数等の重要な設定が記載されています。
共に重要な設定が記載されたファイルですので、Webサーバからの読み取り権限と書き込み権限のみに制限したほうが安全です。
ファイルの所有者をWebサーバのユーザに設定し、 `400(rw-------)` のパーミッションを設定してください。
本番環境の `.env` ファイルの利用については[本番環境での .env ファイルの利用について](#本番環境での .env ファイルの利用について)も合わせてご覧ください。

#### var/

キャッシュやログ等のEC-CUBEの稼働に必要なファイルが設置されます。
EC-CUBEが稼働するためにはWebサーバの書き込み権限が必要です。

#### app/PluginData/

プラグインのデータを配置するためのディレクトリです。
`app/PluginData/` を利用しているかどうかはプラグインによって異なります。
`app/PluginData/` を利用するプラグインがインストールされている場合にはWebサーバの書き込み権限が必要です。

#### html/

商品等の画像等をアップロードした際に `html/` に配置されます。
Webサーバからの書き込み権限を制限すると以下の機能が制限されます。
※ 上記ディレクトリ内に ec-cube ディレクトリが生成されます。

- 商品管理
- 商品登録
- 商品画像
- コンテンツ管理
- ファイル管理
- 設定
- 店舗設定
- 支払方法設定
- ロゴ画像
2.ディレクトリ移動後にcomposer.pherファイルを生成
リンク先の [Composer のインストール](https://getcomposer.org/download/){:target="_blank"} の最初に登場するpreタグで囲まれているコマンドを実行しcomposer.pherファイルを生成します。

### コマンドラインからインストールする

**開発環境としておすすめの方法です。**

前提として、 [Composer のインストール](https://getcomposer.org/download/){:target="_blank"} が必要です。
3.composer.pherが入っているディレクトリにコマンドラインで移動していることを確認し、以下のコマンドを実行します。

```shell
php composer.phar create-project ec-cube/ec-cube ec-cube "4.0.x-dev" --keep-vcs
```

+ 初期状態では SQLite3 を使用します
※ 初期状態では SQLite3 を使用します。
※ MacのOSによってはphp-intlが入っておらず、エラーとなるケースがあります。homebrewなどで新しいPHPをインストールし、再度お試しください。

ec-cube ディレクトリに移動し、 `bin/console server:run` コマンドを実行すると、ビルトインウェブサーバが起動します。

4.ec-cube ディレクトリが生成されますので、`cd ec-cube`で移動し、
`bin/console server:run` コマンドを実行すると、ビルトインウェブサーバが起動します。

```shell
cd ec-cube
bin/console server:run
```

[http://127.0.0.1:8000/admin](http://127.0.0.1:8000/admin) にアクセスし、 EC-CUBE の管理ログイン画面が表示されればインストール成功です。
5.[http://127.0.0.1:8000/admin](http://127.0.0.1:8000/admin) にアクセスし、 EC-CUBE の管理ログイン画面が表示されればインストール成功です。
以下の ID/Password にてログインしてください。

`ID: admin PW: password`

*ビルトインウェブサーバを終了する場合は `Ctrl+C` を押してください*



#### データベースの種類を変更したい場合

インストール後、 `bin/console eccube:install` コマンドを実行し、 `Database Url` を以下のように設定してください。
Expand Down Expand Up @@ -257,24 +104,34 @@ bin/console eccube:fixtures:load
- *`bin/console eccube:install` コマンドでは、これらのコマンドを内部的に実行しています。*
- Symfony と Windows 環境の相性があまり良くないため、動作が大変遅くなる可能性があります。 [Dockerを使用したインストール](https://doc4.ec-cube.net/quickstart_install#docker%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) をおすすめします。

### ComposerからWebインストーラでインストールする
---

### 2.ComposerからWebインストーラでインストールする

前提として、 [Composer のインストール](https://getcomposer.org/download/){:target="_blank"} が必要です。
こちらは、[コマンドラインからインストールする](#コマンドラインからインストールする)とほぼ同じやり方になります。
違いとしては、実行するとEC-CUBEのインストール画面が立ち上がります。EC-CUBEのインストール画面から始めたい方におすすめです。

[コマンドラインからインストールする](#コマンドラインからインストールする)にて、3.の工程の部分を以下のコマンドで実行してください。

```shell
php composer.phar create-project --no-scripts ec-cube/ec-cube ec-cube "4.0.x-dev" --keep-vcs
```

ec-cube ディレクトリに移動し、 `bin/console server:run` コマンドを実行すると、ビルトインウェブサーバが起動します。
ec-cube ディレクトリが生成されますので、`cd ec-cube`で移動し、
`bin/console server:run` コマンドを実行すると、ビルトインウェブサーバが起動します。

```shell
cd ec-cube
bin/console server:run
```

[http://127.0.0.1:8000/](http://127.0.0.1:8000/){:target="_blank"} にアクセスすると、 Webインストーラが表示されますので、指示にしたがってインストールしてください。
[http://127.0.0.1:8000/](http://127.0.0.1:8000/){:target="_blank"} にアクセスすると、 EC-CUBEのインストール画面が立ち上がりますので、指示にしたがってインストールしてください。

*ビルトインウェブサーバを終了する場合は `Ctrl+C` を押してください*

### Dockerを使用してインストールする
---

### 3.Dockerを使用してインストールする

前提として、 [Docker Desktop のインストール](https://hub.docker.com){:target="_blank"} が必要です。

Expand Down Expand Up @@ -336,7 +193,9 @@ docker run --name container_mysql -e MYSQL_ROOT_PASSWORD=password -d -p 3306:33
docker run --name ec-cube -p "8080:80" -p "4430:443" --link container_mysql:db eccube4-php-apache
```

### Docker Composeを使用してインストールする
---

### 4.Docker Composeを使用してインストールする
**開発環境として関連サービス(DB、メールデバッグ環境等)も含め手軽に一括構築したい場合におすすめの方法です**

前提として、 [Docker Desktop のインストール](https://hub.docker.com){:target="_blank"} が必要です。
Expand Down