Ubuntu 16.04でのElastic Compute ServiceインスタンスへのPyroCMSのインストール

このチュートリアルでは、**Alibaba Cloud ECSインスタンス**に**PyroCMS**をインストールして設定します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/install-pyrocms-on-alibaba-cloud_595227)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
- Alibaba Cloud [Elastic Compute Service (ECS)](https://www.alibabacloud.com/ja/product/ecs)を有効にし、有効な支払い方法を確認する必要があります。新規ユーザーの場合は、新規アカウントで[300ドル～1200ドル相当のAlibaba Cloudクレジットを獲得](https://www.alibabacloud.com/ja/referral?referralCode=ffxt3q)できます。ECSインスタンスのセットアップ方法がわからない場合は、[このチュートリアル](https://www.alibabacloud.com/blog/3-ways-to-set-up-a-linux-server-on-alibaba-cloud_572384?spm=a2c65.11461447.0.0.64e14571MpknAS)または[クイックスタートガイド](https://www.alibabacloud.com/help/ja/doc-detail/25422.htm)を参照してください。ECSインスタンスは、少なくとも2GBのRAMと2コアプロセッサを搭載している必要があります。
- Alibaba Cloudから登録された[ドメイン名](https://www.alibabacloud.com/ja/domain)。すでにAlibaba Cloudまたは他のホストからドメインを登録している場合は、そのドメインネームサーバーレコードを更新することができます。
- ドメイン名は、あなたのAlibaba Cloud ECSのIPアドレスを指している必要があります。
- Alibaba CloudのVNCコンソールまたはPCにインストールされているSSHクライアントにアクセスします。
- サーバーのホスト名を設定し、root権限を持つユーザーを作成します。

#環境の設定
###サーバーの設定
パッケージのインストールを進める前に、以下のコマンドを実行してUbuntuシステムをアップデートしてください。このコマンドを実行するには、root ではないユーザーから sudo 権限でログインすることを忘れないでください。

```
# sudo apt update && sudo apt upgrade
```


#PHPのインストール
PyroCMS には PHP 7.0 以降が必要です。このチュートリアルでは、PHP 7.2をインストールします。そのためには、以下の手順を実行します。

まず、Pythonのソフトウェアプロパティとソフトウェアプロパティコモンをインストールします。そのためには、以下のコマンドを実行します。

```
# sudo apt-get install software-properties-common python-software-properties 
```

新しいバージョンのPHP用のリポジトリを追加します。

```
# sudo add-apt-repository ppa:ondrej/php
```

そして、利用可能なリポジトリを更新するためにシステムを更新します。

```
# sudo apt update
```

PHP 7.2をインストールするには、以下のコマンドを実行します。

```
# sudo apt install -y php7.2
```


###必要な PHP 拡張モジュールのインストール
PyroCMS は以下の PHP 拡張機能が必要です。

1、php7.2-cli
2、php7.2-fpm
3、php7.2-mysql
4、php7.2-curl
5、php7.2-sqlite3
6、php7.2-GD
7、php7.2-mbstring
8、php7.2-dom

上記のPHPの拡張機能をインストールするには、以下のコマンドを実行します。

```
# sudo apt-get -y install php7.2-cli php7.2-fpm php7.2-dom php7.2-mbstring php7.2-mysql php7.2-curl php7.2-sqlite3 php7.2-gd 
```

上記の拡張機能のインストールを行うと、apache2が自動的にインストールされますので、つまり手動でインストールする必要はありません。

以下のコマンドを実行して、インストールされているPHPのバージョンを確認します。

```
# php -version
```

###MariaDBのインストール
PyroCMS は MySQL、PostgreSQL、MSSQL、Redis、SQLite をサポートしています。このチュートリアルでは、MySQLにMariaDBサーバを使用します。デフォルトでは、Ubuntuのリポジトリには古いバージョンのMariaDBがインストールされています。新しいバージョンのMariaDBを使用するには、UbuntuシステムにMariaDBリポジトリを追加する必要があります。そのためには、以下の手順に従ってください。

以下のコマンドを実行してキーを確認します。

```
# sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
```

以下のコマンドを実行してリポジトリを追加します。

```
# sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.nodesdirect.com/mariadb/repo/10.2/ubuntu xenial main’
```

以下のコマンドを実行してアップデートします。

```
# sudo apt update
```

以下のコマンドを実行してMariaDBをインストールします。

```
# sudo apt install -y mariadb-server
```

再起動後に自動的に起動できるように、MariaDBサーバーを起動して有効にします。

```
# sudo systemctl start mariadb
# sudo systemctl enable mariadb
```


以下のコマンドを実行して、MariaDBサーバのセキュリティを強化し、rootユーザにパスワードを設定します。

```
# sudo mysql_secure_installation
```

以下のコマンドを使用して、rootユーザーとしてMySQLシェルに接続し、パスワードを入力します。

```
# sudo mysql -u root -p
```

以下のMySQLクエリをMariaDBサーバで実行します。

```
CREATE DATABASE pyro CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'aareez'@'localhost' IDENTIFIED BY '654321Ab';
GRANT ALL PRIVILEGES ON pyro.* TO 'aareez'@'localhost';
FLUSH PRIVILEGES;
EXIT; 
```

###Unzipのインストール
圧縮されたzipフォルダを解凍するために使用するunzipをインストールする必要があります。unzipをインストールするには、以下のコマンドを実行します。

```
# sudo apt-get install unzip -y
```

###Curlのインストール
curlをインストールするには、以下のコマンドを実行します。

```
# sudo apt-get install curl -y
```

###Git のインストール
gitをインストールするには、以下のコマンドを実行します。

```
# sudo apt-get install git -y
```


###composerのインストール
composerをインストールして設定するには、以下のコマンドを実行します。

```
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
# php composer-setup.php
# php -r "unlink('composer-setup.php');"
# sudo mv composer.phar /usr/local/bin/composer
```

composerのバージョンを確認するコマンドを実行することで、composerが正常にインストールされているかどうかを確認することができます。

```
# composer -v
```


#PyroCMSのインストールと設定
PyroCMSをインストールするには、以下の手順に従います。

コマンドで /var/www/html に移動します。

```
# cd /var/www/html
```

var/www/html ディレクトリの所有者を aareez に変更します。

```
# sudo chown -R aareez:aareez /var/www/html
```

以下のコマンドでindex.htmlファイルを削除します。

```
# sudo rm index.html
```

PyroCMSの最新の安定版をダウンロードするには、以下のコマンドを実行してください。

```
# composer create-project pyrocms/pyrocms
```


www-data に /var/www/html の所有権を与え、apache サーバが必要なファイルにアクセスできるようにします。

```
# sudo chown -R www-data:www-data /var/www/html
```

###Apache サーバの設定
以下のコマンドを実行して、PyroCMS用のバーチャルホスト設定ファイルを作成します。その後、nanoテキストエディタでファイルが開きます。

```
# sudo nano /etc/apache2/sites-available/pyro.conf
```

以下のコードをコピーしてPyroCMSして保存します。

```
<VirtualHost *:80> 
    ServerAdmin admin@xyz.com
    ServerName softpedia.xyz
    DocumentRoot /var/www/html/pyrocms/public
    DirectoryIndex index.php index.htm index.html
   <Directory /var/www/html>
        Options +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
 ErrorLog ${APACHE_LOG_DIR}/PyroCMS_error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/PyroCMS_access.log combined
</VirtualHost>
```

以下のコマンドを実行してデフォルトサイトを無効にします。

```
# sudo a2dissite 000-default.conf
```

新しく作成したバーチャルホストを有効にする必要があります。そのためには、以下のコマンドを実行します。

```
# sudo a2ensite pyro
```

これでrewrite modを有効にする必要があります。apache2ディレクトリの設定ファイルを編集するか、以下のコマンドを実行してください。

```
# sudo a2enmod rewrite
```

ここで、SSLエンジンを有効にする必要があります。apache2ディレクトリの設定ファイルを編集するか、以下のコマンドを実行してください。

```
# sudo a2enmod ssl
```

ここで、以下のコマンドを実行して変更を適用し、設定をロードするために apache サーバを再起動する必要があります。


```
# sudo service apache2 restart
```

これで、ドメイン名やECSのIPアドレスからPyroCMSにアクセスできるようになりました。私の場合は `http://softpedia.xyz`でアクセスしています。

以下のチェックボックスにチェックを入れると、この規約に同意したことになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/a6e2e73d-f90d-87d4-5b25-5e0895688f9d.png)

###データベースの設定
データベースを設定するために、以下のフォームに情報を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/509ef665-4c37-e794-cc5f-498e4db1e38f.png)


###管理者アカウントの設定
PyroCMS の管理画面にアクセスするには、管理者アカウントが必要です。管理者アカウントを作成するには、以下のフォームに情報を入力してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/86493773-3f39-b534-3824-38f7875c5f3c.png)

###基本的な設定
PyroCMS の名前、プライマリドメイン名、言語、タイムゾーンを設定する必要があります。これを行うには、以下のフォームに情報を入力して、インストールボタンをクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/0ca70ae3-e626-e4ee-0021-5bc6bcf31ce7.png)


インストール中は以下のような画面が表示されます。インストールには数分かかる場合があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/55f70965-2d89-f72d-d29d-1a4dbed4b526.png)

正常にインストールが完了したら、ログインをクリックして管理パネルにアクセスし、サイトを表示して、あなたのウェブサイトに移動することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/da3b9a54-ada1-58a5-93d1-a0724a52b9f2.png)


ログインをクリックすると、以下のような画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/874d2831-4eff-bb3b-36b3-b0944031f527.png)


管理パネルへのログインに成功すると、以下のようなダッシュボードが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/ecb03c7c-0716-a149-180c-e7d7a6ed7e56.png)


###SSL証明書のインストール
Let's Encrypt with Certbotを使ってSSL証明書をインストールします。そのためには、以下の手順を実行します。

パッケージを更新します。

```
# sudo apt-get update
```
software-properties-commonをインストールします。

```
# sudo apt-get install software-properties-common.
```

以下のコマンドを実行して、サートボットのリポジトリを追加します。

```
# sudo add-apt-repository ppa:certbot/certbot
```

追加された certbot リポジトリを読み込むようにパッケージを更新します。

```
# sudo apt-get update
```

SSL証明書発行前にapacheを停止します。

```
# sudo systemctl stop apache2
```

以下のコマンドを実行して、python-certbot-apacheをインストールします。

```
# sudo apt-get install python-certbot-apache
```

以下のコマンドを実行して、Let's Encrypt SSLを発行してもらいます。

```
# sudo certbot --apache -d softpedia.xyz
```

オプション2を選択してリンクをhttpsにリダイレクトし、SSLのバーチャルホスト設定を更新します。apacheサーバを再起動します。

```
# sudo systemctl start apache2
```


`https<span>://your_domain_name</span>.tld`からアクセスできます。

#ファイアウォールとポートの設定
ファイアウォールを有効にしている場合は、クラウドサーバーの Alibaba Cloud セキュリティグループで、ポート 80/tcp と 443/tcp の例外を追加するルールを定義する必要があります。ECSインスタンスの作成時にこれらのポートを有効にすることができますが、これらのポートのブロックを解除し忘れた場合は、このガイドの手順に従ってください。[セキュリティグループのルールを設定する](https://www.alibabacloud.com/help/doc-detail/25471.htm?spm=a2c65.11461447.0.0.64e14571GOl0Vs)

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*