concrete5 の開発サーバーの構築メモ


コンクリートファイブジャパン株式会社で、concrete5 開発環境を立ち上げるためのメモです。

## 1. ヒヤリング

- ドメイン名
- EC2 インスタンスのタイプが t2.micro 以上が必要化
- HDD 容量が 10GB 以上必要か
- 希望 OS は? 無ければ Amazon Linux 2 を希望
- Nginx / Apache か
    - Nginx を希望 (.htaccess が使えなくなります)
- PHP バージョンは？
    - 無ければ concrete5 対応の最新版を希望
    - PHP-fpm として希望
- MariaDB か MySQL か
    - Amazon Linux 2 であれば MariaDB 希望
    - Amazon Linux であれば MySQL 希望
- 希望デプロイ方法は?
    - SFTP
    - Git 手動 Pull
    - Git 自動 デプロイ
    - Deployer デプロイ

## 2. サーバーの構築

concrete5社の Ansible, CloudFormation を使って作成。

### Nginx / Apache の SSH 鍵を作成

Deployer が Git ファイルを取得できるように、Apache/Nginx ユーザーの公開鍵をサーバーで作成します。

下記のコマンドを使って SSH 公開鍵を取得し、GitHub, Bitbucket, Backlog などで SSH 公開鍵登録を行ってください。

### Nginx ユーザーの場合

```
$ sudo -u nginx ssh-keygen -t rsa -b 4096 -C "nginx@example.com"
$ sudo cat /var/lib/nginx/.ssh/id_rsa.pub
```

### Apache ユーザーの場合

```
$ sudo -u apache ssh-keygen -t rsa -b 4096 -C "apache@example.com"
$ sudo cat /var/lib/apache/.ssh/id_rsa.pub
```


## 3. Git の作成
1. concrete5 Git を作成
    1. application/block/.gitkeep (空ファイルを作成)
    1. application/bootstrap/*
    2. application/config/
    2. application/config/app.php
    3. application/config/concrete.php
    3. application/files/index.html
    3. application/themes/.gitkeep  (空ファイルを作成)
    3. packages/.gitkeep  (空ファイルを作成)
    4. その他 application 内のフォルダは適宜作成。ローカルでも c5 環境を立てる場合は他のすべての空フォルダの作成が必要。
2. [gitignore concrete5](https://github.com/concrete5cojp/concrete5-gitignore/blob/master/.gitignore) のテンプレートを挿入

## 1. Deployer 設定

チーム全体向けの設定。弊社オリジナルの Deployer パッケージを制作し、デプロイに使っています。

1. Deployer のテンプレートをダウンロード
1. Deploy.php を設定
    1. repository に Git URL を挿入
    1. new_style は 1 
1. concrete5 バージョンを確認
    1. 新しい concrete5 バージョンが出た場合は concrete5_downloads を追記
1. 共有ファイル・ディレクトリを設定

### 共有ファイル・ディレクトリの設定例

```
// Writable dirs by web server 
set('shared_dirs', [
    'application/config',
    'application/files',
    'application/languages',
]);

set('shared_files',[
    //'.htaccess', // /Nginx に直接記述
    '.htpasswd',
    'index.php',
    'sitemap.xml',
    'robots.txt',
]);


### concrete5_download の設定例

```
set('concrete5_downloads', [
    '5.7.5.13'=>'http://www.concrete5.org/download_file/-/view/93075/8497/',
    '8.0.0'=>'http://www.concrete5.org/download_file/-/view/92663/8497/',
    '8.0.1'=>'http://www.concrete5.org/download_file/-/view/92834/8497/',
    '8.0.2'=>'http://www.concrete5.org/download_file/-/view/92910/8497/',
    '8.0.3'=>'http://www.concrete5.org/download_file/-/view/93074/8497/',
    '8.1.0'=>'http://www.concrete5.org/download_file/-/view/93797/8497/',
    '8.2.0'=>'http://www.concrete5.org/download_file/-/view/96765/8497/',
    '8.2.1'=>'http://www.concrete5.org/download_file/-/view/96959/8497/',
    '8.3.0'=>'http://www.concrete5.org/download_file/-/view/99806/8497/',
    '8.3.1'=>'http://www.concrete5.org/download_file/-/view/99963/8497/',
    '8.3.2'=>'http://www.concrete5.org/download_file/-/view/100595/8497/',
    '8.4.0'=>'http://www.concrete5.org/download_file/-/view/104344/',
    '8.4.2'=>'http://www.concrete5.org/download_file/-/view/105477/',
    '8.4.3'=>'http://www.concrete5.org/download_file/-/view/107738/',
    '8.4.4'=>'http://www.concrete5.org/download_file/-/view/108181/'
]);

set('concrete5_latest', '8.4.4');
```