Ubuntu 16.04でECSインスタンスにComposerをインストールして使用する方法

このチュートリアルでは、Ubuntu 16.04でインストールされた**Alibaba Cloud ECS**インスタンスに **Composer**をインストールして使用する方法を説明します。

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

[Alibaba Cloud Community Blog](https://www.alibabacloud.com/blog?spm=a2c65.11461447.0.0.4b9d58c9VtvrHf)の著者であるGhulam Qadir氏によるものです。

[Composer](https://getcomposer.org/?spm=a2c65.11461447.0.0.4b9d58c9AtZlfU)は[PHP](https://www.php.net/?spm=a2c65.11461447.0.0.4b9d58c9AtZlfU)のパッケージ依存関係管理ツールで、PHPベースのプロジェクトやアプリケーションを管理するために、あなたも他の開発者も同様に使用することができます。

PHPアプリケーションの中には、パッケージをインストールして動作させるために、システムにComposerがインストールされているかどうかを尋ねてくるものがあるのを、何度も見たことがあるでしょう。それくらい、今ではComposerが重要かつ一般的になっているのです。

つまり、PHPアプリケーションのインストールやアップデートを容易にするために、composerは頻繁に使用されているということです。Composerの依存関係ツールを使用することで、パッケージのインストールや管理を簡単に行うことができます。Composerは、[composer.json](https://stackoverflow.com/questions/22125283/how-to-run-composer-json?spm=a2c65.11461447.0.0.4b9d58c9AtZlfU)と呼ばれるJSONファイルで必要なパッケージのリストを管理するのに役立ちます。

Composerは、Alibaba Cloud Elastic Compute Service (ECS)インスタンスと互換性があり、うまく動作します。開発者である私は、Ubuntu 16.04がインストールされたAlibaba Cloud ECSインスタンスでComposerを使用することを好みます。Alibaba Elastic Compute (ECS) は柔軟性が高く、トラフィックが増えたらいつでもハードウェアリソースをアップグレードできます。

#前提条件
1、Alibaba Cloud [Elastic Compute Service (ECS)](https://www.alibabacloud.com/ja/product/ecs) インスタンスをお持ちです。ECSを初めてご利用になる方、または初めてECSをご利用になる方は、Alibaba Cloudアカウントで[無料クレジット](https://account.alibabacloud.com/register/intl_register.htm?spm=a2c65.11461447.0.0.4b9d58c9AtZlfU&biz_params=%7B%22intl%22%3A%22%7B%5C%22referralCode%5C%22%3A%5C%22ffxt3q%5C%22%7D%22%7D)を取得することができます。ECSインスタンスのセットアップ方法がわからない場合は、この[チュートリアル](https://www.alibabacloud.com/blog/3-ways-to-set-up-a-linux-server-on-alibaba-cloud_572384?spm=a2c65.11461447.0.0.4b9d58c9AtZlfU)を参照するか、[クイックスタートガイド](https://www.alibabacloud.com/help/ja/doc-detail/25422.htm)を確認してください。
2、サーバーのホスト名を設定する必要があります。
3、Alibaba CloudのVNCコンソールにアクセスするか、PCにインストールされているSSHクライアントを使用します。

#手順
次のセクションの手順に従って、Ubuntu バージョン 16.04 でインストールされた Alibaba Cloud ECS インスタンスに Composer をインストールして使用する方法を説明します。

###コンソールへのログオン
SSHクライアント([Putty](https://www.putty.org/?spm=a2c65.11461447.0.0.4b9d58c9bmcghQ) )またはAlibaba Cloudアカウントのダッシュボードで利用できるVNCコンソールからrootユーザ名とパスワードを入力してrootユーザとしてログオンします。

このチュートリアルを始める前に、もう一度言いますが、以下のものが必要です。

- Alibaba Cloud ECSインスタンスがUbuntuバージョン16.04でインストールされており、少なくとも2GBのRAMがあり、プライベートネットワークが有効になっており、rootユーザではないことです。これは、Ubuntu 16.04で設定された初期ECSインスタンスサーバーに従うことで設定できます。

###依存関係のインストール
Composer をダウンロードしてインストールする前に、サーバーにすべての依存関係がインストールされていることを 確認する必要があります。

まず、次の 2 つのコマンドを実行して、パッケージマネージャのキャッシュを更新します。

```
# sudo apt-get update

# sudo apt-get upgrade
```

次に、依存関係（curl、php-cli、php-mbstring、git、unzip）をインストールしなければなりません。以下のコマンドですべてインストールできます。

```
sudo apt-get install curl php-cli php-mbstring git unzip
```

###PHPのインストール
Composer には [PHP のバージョン 5.3.0](https://www.php.net/releases/5_3_0.php?spm=a2c65.11461447.0.0.4b9d58c9bmcghQ) 以降が必要です。UbuntuにPHPをインストールするには、`sudo apt-get install php`コマンドを実行します。または、次のコマンドを使用してPHPの特定のバージョンをインストールすることもできます: `sudo apt-get install `php7.2。7.1 や 7.3 など、他のバージョンをインストールする場合は、数字の値を変更することもできます。

###Composer のインストール
Composer には PHP で書かれたインストーラが用意されています。PHPがインストールされているので、以下のコマンドを実行してcomposerをインストールします。

```
cd ~

curl -sS https://getcomposer.org/installer -o composer-setup.php
```

次に、短い PHP スクリプトを実行して、[Composer Public Keys / Signatures](https://composer.github.io/pubkeys.html?spm=a2c65.11461447.0.0.4b9d58c9bmcghQ) ページにある最新のインストーラーの SHA-384 ハッシュと一致していることを確認します。以下のハイライトされた値に最新のハッシュを代入する必要があります。

```
 php -r "if (hash_file('SHA384', 'composer-setup. php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL; “
```

という出力になるはずです。

```
 Output

 Installer verified
```

composerをグローバルにインストールするには、以下のようにします。

```
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
```

これにより、`/usr/local/bin` の下に composer という名前のシステム全体のコマンドとして Composer がダウンロードされ、インストールされます。出力は以下のようになります。

```
Output

All settings correct for using Composer

Downloading 1.1.1...

Composer successfully installed to: /usr/local/bin/composer

Use it: php /usr/local/bin/composer

```

インストールをテストするには、`composer`コマンドを実行すると、このような出力が得られるはずです。

```
Output

 ______

 / ____/___  ____ ___  ____  ____  ________  _____

 / /  / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/

/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /

\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/

 /_/

Composer version 1.1.1 2016-05-17 12:25:44

Usage:

 command [options] [arguments]

Options:

 -h, --help  Display this help message

 -q, --quiet  Do not output any message

 -V, --version  Display this application version

 --ansi  Force ANSI output

 --no-ansi  Disable ANSI output

 -n, --no-interaction  Do not ask any interactive question

 --profile  Display timing and memory usage information

 --no-plugins  Whether to disable plugins.

. . .

```

これで、Composerがシステムにインストールされたことになります。

さて、Composerを必要とするPHPベースのアプリケーションをインストールしたい場合は、このページを参照してCompserのインストール方法を学ぶだけです。その後、UbuntuでPHPアプリケーションを取得することを続けてください。

`sudo composer self-update`コマンドを実行することで、Composerをアップグレードすることもできます。これにより、Composerに関連するすべてのパッケージがアップグレードされます。インストールは、上記のようにインストールスクリプトをダウンロードして確認した後、次のようにして行うこともできます:`php composer-setup.php`。これを使用すると、現在のディレクトリに composer.phar ファイルが生成され、`./composer.phar` コマンドで実行できます。

###Composer.json ファイルの生成
プロジェクトで composer を使うためには composer.json ファイルが必要です。composer.jsonファイルは、プロジェクトに必要な依存関係をダウンロードするように composer に指示するファイルです。

また、プロジェクトにインストールするバージョンも指定します。これにより、パッケージのバージョンが不安定なために、プロジェクトを実行している間に後方互換性の問題を避けることができます。

このプロジェクトを手動で作成する必要はありません。また、実際に作成した場合、構文エラーが発生する可能性があります。composerは、requireコマンドを使ってプロジェクトの依存関係をインストールしている間に、自動的にcomposer.jsonファイルを作成します。

このコマンドを使って、ファイルを編集することなく依存関係を追加することができます。ここでは、プロジェクトにパッケージを依存関係として追加する際のプロセスを説明します。

- アプリケーションのライブラリ要件を探します。
- アプリケーションのライブラリ要件を検索します。 Composer の公式リポジトリである packagist.org で、一致するオープンソース・ライブラリを検索します。
- 必要なパッケージを選択します。
- composer require コマンドを実行して composer.json ファイルに依存関係を含め、パッケージをインストールします。


デモアプリケーションを使ってリアルタイムでどのように動作するか見てみましょう。

ここでは、文章を与えて、それをスラッグ（つまり、URLフレンドリーな文字列）に変換する必要があります。このテクニックは、ページタイトルをURLに変換するために使用されます。まず、ホームディレクトリに変更します。

まずはプロジェクト用のディレクトリを作成してみましょう。ここではslugifyと呼ぶことにします。

```
 cd ~

 mkdir slugify

 cd slugify
```

###パッケージ一覧からパッケージを探す
Packagistに移動して、スラッグの生成に役立つパッケージを検索します。検索バーで「slug」を検索してください。関連するすべてのパッケージがここに表示されます。名前の後の各説明では、数字が表示されています。

下向きの矢印はダウンロード数を示し、星はそのパッケージがコンポーザーで何回紹介されたかを示しています。ダウンロード回数の多いパッケージを選択してください。多くの人にダウンロードされているパッケージは安定版になります。また、あなたの期待にマッチするパッケージを見つけなければなりません。

ここでは、slugifyが私たちの要求にマッチしています。パッケージの説明を読めば、パッケージがどのようなものかわかるでしょう。パッケージは、パッケージ名とベンダー名で一覧表示されます。また、パッケージ名も記載されています。

ここでは、`cocur/slugify` を使用します。

###パッケージの追加
パッケージを追加するには、composer requireコマンドを使用します。そして、composer.jsonファイルを生成します。

```
 $ composer require cocur/slugify
```

以下のような出力が得られます。

```
 Output

 Using version ^2.1 for cocur/slugify

 ./composer.json has been created

 Loading composer repositories with package information

 Updating dependencies (including require-dev)

 - Installing cocur/slugify (v2.1.1)

 Downloading: 100% 

 Writing lock file

 Generating autoload files
```

コンポーザーが出力に追加するパッケージのバージョンを自動的に選択していることがわかります。また、composer.jsonとcomposer.lockの2つのファイルもあります。

また、ベンダーディレクトリも確認できます。

```
$ ls -l
```

以下のような出力が得られます。

```
Output

 total 12

 -rw-rw-r-- 1 gqadir gqadir  59 Jan 17 10:24 composer.json

 -rw-rw-r-- 1 gqadir gqadir 2894 Jan 17 10:24 composer.lock

 drwxrwxr-x 4 gqadir gqadir 4096 Jan 17 10:24 vendor
```

composer.jsonファイルの使い方はすでに見てきました。しかし、今回はcomposer.lockファイルの使い方を紹介します。このファイルには各パッケージのバージョン情報が入っています。

プロジェクトをコピーした場合、このファイルは適切なバージョンの Composer をインストールするのに役立ちます。ベンダーディレクトリには、すべてのプロジェクトの依存関係があります。

ベンダー・フォルダーをバージョン管理にコミットしてはいけません。ベンダーフォルダに composer.json と composer.lock ファイルをインクルードするだけです。

プロジェクトをインストールする傾向があり、その中に composer.json ファイルが含まれている場合、プロジェクトの依存関係をダウンロードするために composer のインストールを使用しなければなりません。

###プロジェクトの依存関係の更新
プロジェクトの依存関係の更新はとても簡単です。依存関係を更新するには、`composer update`コマンドを使うだけです。このコマンドが何をするかというと、依存関係の最新バージョンを探します。

言い換えれば、利用可能な最新バージョンがあり、それが composer.json ファイルと互換性があれば、古い依存関係は新しいものに置き換えられます。また、その変更を利用するために、composer.lockファイルも更新されます。

次に、特定の依存関係を更新するコマンドです。

```
 composer update vendor/package vendor2/package2
```

###概要
このチュートリアルでは、Ubuntu 16.04でインストールされたECSインスタンスで Composerを使い始めるために必要なものを説明しました。Composer は、PHP 開発者にとって必要なツールです。

プロジェクトの依存関係を管理するための簡単で信頼性の高い方法を提供するだけでなく、コミュニティによって作成されたPHPパッケージを共有したり、発見したりするための新しい標準を確立します。

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