無料で爆速CMSをインターネット公開する方法：Bluemix + Pico

# はじめに
この記事は、いかにお金をかけず、簡単に、自ドメインのサーバーを立ち上げ、Webサイトをインターネット公開するか考えて実践した記録です。 ※ 2018.08.お盆休み

# なにをするか？
1. 無料でドメインを指定できるWebサーバーを立ち上げる
2. 無料のCMSをインストールする

**以上！**

# どうやって実現するか？
## Bluemix：IBM Cloudライト・アカウント
- WebサーバーにはBluemixのCloud Foundryを採用
- 1-ClickでWebサーバーの公開が可能
- 任意のサブドメインを指定可能

**アカウントの制限事項**
> - 10日間 開発なしでアプリを自動停止
> - 30日間 活動なしでサービスの自動削除
>
> などなど

👇👇👇　詳細はこちら　👇👇👇
https://www.ibm.com/cloud-computing/jp/ja/bluemix/lite-account/

## Pico
エンジニア、マークダウン、デプロイで記事投稿、CUIラブなCMSといえばこれ。

<img width="834" alt="Pico.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/b8e96706-caf0-824e-dd72-7a86fc419680.png">

> **Pico 2.0
> アホみたいに単純で、ありえへん速さ、DBいらずのCMS
> Webがカンタンに作れる orz**

コマンドラインでカンタンにデプロイできるCloudFoundとの相性も抜群なので、CMSはこれに決定。

# 手順
### 1. IBM Cloudライト・アカウントの作成
ここは割愛。他の記事をご参考ください👇👇👇
[文系にもわかるIBM Cloudライトアカウント登録方法](https://qiita.com/HOSOHIRO/items/da5ff86b3004dfc3b028)

### 2.  IBM CloudのCLIインストール
コマンドでアプリの起動、停止、設定変更、ログ確認、デプロイができるツールをインストール。
[スタンドアロン IBM Cloud CLI のインストール
](https://console.bluemix.net/docs/cli/reference/ibmcloud/download_cli.html#install_use)

### 3. アプリのインスタンスを作成
いろんなやり方がありますが、ここでは画面（GUI）からやってみます。
1. 管理画面（ダッシュボード）にアクセス。リソースの作成。
https://console.bluemix.net/dashboard/apps

<img width="1269" alt="3-1_dashboard.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/65e6321e-8f56-41fd-5067-01036b64ed4f.png">

2.  Cloud Foundry: PHPを指定、インスタンスを作成。

<img width="1034" alt="3-2_CF_PHP.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/d75b40c0-89d4-2831-7d87-f4ca354d9708.png">

<img width="1236" alt="3-2_CF_Create.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/db8a315b-759b-2060-8297-741f11c521b6.png">

<img width="724" alt="3-2_CF_complete.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/801a445a-1726-d8fc-e2ac-0d702a629da9.png">

### 4. 最新のPicoをデプロイ
1.Picoをダウンロード・解凍
今回は[ここ](https://github.com/picocms/Pico/releases/tag/v2.0.1)からv2.0.1をダウンロード。

<img width="473" alt="4-1_download.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/6bbb5088-69ca-aeae-eb56-9dc817543df2.png">


2.ローカルの適当なフォルダに解凍

<img width="563" alt="4-2_unarchive.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/aece4733-e5be-2173-5de7-e4d5dccf5995.png">

3.トップディレクトリにmanifest.ymlを作成。

```manifest.yml
---
applications:
 - name: pico-hello 
   random-route: true
   memory: 128M
```

<img width="196" alt="4-3_manifest2.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/78a974aa-28ea-4be6-472c-d429243d6f8a.png">


4.pico用のoption設定を追加

```..bp-config¥options.json
{
    "COMPOSER_VENDOR_DIR": "{BUILD_DIR}/{WEBDIR}/vendor"
}
```
※トップディレクトリに.bp-configフォルダを作成し、その中にoption.jsonを配置してください。
<img width="188" alt="4-4_option.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/f492c6d5-4da9-31b4-b95f-981f684f9b74.png">

5.さぁ、デプロイ
- コマンドプロント(Terminal）を起動し、アプリのトップディレクトリを移動。

<img width="682" alt="5-1_home.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/0f106aac-07bf-1fb9-279b-5dd3d9a32651.png">

    1. IBM Cloud アカウントにログインし、API エンドポイントを選択します。
        > ibmcloud login

    2. Cloud Foundry の組織およびスペースをターゲットにします。
        > ibmcloud target --cf

    3. アプリケーションを IBM Cloud にプッシュします。
        > ibmcloud cf push

### 5. サイトが公開されたことを確認
https://pico-hello.au-syd.mybluemix.net/
<img width="825" alt="6-1_site.png" src="https://qiita-image-store.s3.amazonaws.com/0/64241/822105f0-d0ac-c9f0-5494-fd298a36f846.png">

# 考察
> いかにお金をかけず、簡単に、自ドメインのサーバーを立ち上げ、Webサイトをインターネット公開するか

**この目標は達成できたと思ふ。満足。(^ ^)**

CUIらぶと言いながら、GUIでインスタンスを作成しているところの矛盾は改善したい。
わかりやすさ優先（言い訳）。

# 想定質問と回答
Q. AWSでもできるのでは？
A. できます、けど、全ての要件を満たす場合（デプロイだけでなく、コンテンツのメンテナンス）、こっちが最速。

Q. PicoよりWordpressの方がカンタンでは？
A. Picoの方がセットアップはカンタン、公開ディレクトリにモジュール配置するだけなので。

Q. Wordperssの方がプラグインやテーマが豊富に用意されているて、便利では？
A. そんなものには興味がありません

Q. 公開した後、どうカスタマイズすれば良いですか？
A. こちらからどうぞ。http://picocms.org/docs/
デザインをいじりたい場合はこちら。
https://twig.symfony.com/

Q. デプロイしたらエラーが出ました。
A. ログを調べてください。
https://console.bluemix.net/docs/cli/reference/ibmcloud/cf_index.html#cf_logs