如何在运行Ubuntu的VPS上安装和使用Composer

来自菜鸟教程
跳转至:导航、​搜索


状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


介绍

Composer 是一个很棒的 PHP 依赖管理工具。 它的作用是跟踪您声明项目需要的库,并为您获取和安装它们。 它本身不是包管理器,因为默认情况下它不是全局使用的,而是在您可能拥有的每个单独项目中使用。

这有什么用途? 假设您有一个依赖于几个库的应用程序项目,这些库甚至可以依赖于其他库。 在一个小的 .json 文件中声明这些依赖项后,Composer 将跟踪这些库并为您安装它们。

在本教程中,我们将在 VPS 上安装 Composer,看看它是如何工作的以及我们可以用它做什么。 为此,我将使用一台运行 Ubuntu 的服务器,并且上面已经安装了 LAMP 堆栈。 至于 Composer 的具体要求,它可以在 Linux、OS X 和 Windows 上运行,但需要您安装 PHP 5.3.2+。

确保您已安装所有要求:

sudo apt-get install php5 git php5-curl

安装

首先,您需要将 Composer 下载到您的项目文件夹中。 为此,我们在 /var/www Apache Web 根文件夹中创建一个名为 my_project 的空文件夹:

cd /var/www
mkdir my_project
cd my_project

使用以下命令将 Composer 下载到此文件夹中:

curl -sS https://getcomposer.org/installer | php

您应该会看到如下所示的成功消息:

All settings correct for using Composer
Downloading...

Composer successfully installed to: /var/www/my_project/composer.phar
Use it: php composer.phar

现在,如果您检查项目文件夹,您会看到只下载了一个文件:composer.phar - 一个可以从命令行运行的 PHP 存档文件。

如果您位于与项目不同的文件夹中,但不想导航回项目文件夹以下载 Composer,您可以指定 --install-dir 选项,它会在您指定的任何位置下载它:

curl -sS https://getcomposer.org/installer | php -- --install-dir=/var/www/another_folder

您可以在任何地方运行此命令,它将把 Composer 安装在位于 /var/wwwanother_folder 中。 要检查 Composer 是否正常工作,您可以使用以下命令显示可用命令列表:

php composer.phar

使用作曲家

要在项目中使用 Composer,您需要一个文件:composer.json。 在此文件中,您将描述项目的依赖关系。 假设我们的项目依赖于帮助与 DigitalOcean API 交互的 DigitalOcean 库。 所以让我们创建文件:

nano composer.json

在此文件中,您可以粘贴以下内容:

{
    "require": {
        "toin0u/digitalocean": "1.2.1"
    }
}

保存文件并退出。 通过这个简单的代码块,您可以指定您的项目需要由供应商 toin0u 创建的库(称为 digitalocean)。 在冒号后面写下你需要的版本——在本例中是 1.2.1。 在这里,您可以指定您想要的任何版本,甚至可以使用通配符。 但是,您从哪里获得有关包裹的信息?

有一个很棒的网站,您可以在其中找到许多库,其中包含在 composer.json 文件中指定的所有必要信息:Packagist。 DigitalOcean API 库 也可以在 Packagist 上找到,您可以在 require 块中准确检查您必须指定的内容。

要为版本使用通配符,您可以指定如下内容:

"toin0u/digitalocean": "1.2.*"

这将匹配以 1.2 开头的任何版本(1.2.0、1.2.1 等)。 此外,您可以指定多个依赖库,而不仅仅是一个。 您可以通过在 require 块中添加多个条目来做到这一点:

"require": {
        "toin0u/digitalocean": "1.2.1",
        "acme/foo": "1.0"
}

好的,现在您的项目已经指定了它的依赖项,您需要运行一个命令让 Composer 获取并将它们安装到您的项目中:

php composer.phar install

这将找到与我们指定的编号匹配的最新版本的软件包,并将其下载到项目中名为 /vendor 的文件夹中。 在我们的示例中,我们现在将在 vendor/toin0u/digitalocean 文件夹中找到该库。 此外,Composer 创建了一个 composer.lock 文件,其中指定了它安装的包的确切版本,并将项目锁定到这些版本。

.lock 文件的目的是限制 Composer 将其他版本安装到您的项目中。 因此,当您运行 install 命令时,Composer 将首先检查此文件并安装其中指定的内容,而不是 .json 文件告诉它的内容。 这很好,因为如果您的依赖项相当严格并且其他人需要部署您的项目,您可以放心使用完全相同版本的库。

正如我们所见,如果没有 .lock 文件,Composer 将根据它从 .json 文件安装的依赖项创建一个。 但是,如果您确实想覆盖 .lock 文件并将依赖库升级到更新版本,则可以运行以下命令:

php composer.phar update

这将获得与 composer.json 文件中的条件匹配的依赖库的最新稳定版本,并用新的依赖项覆盖 composer.lock 文件。 如果您只想更新特定的库(在大多数情况下可能是这样),您可以运行 update 命令并将需要更新的包作为选项传递,格式如下:

php composer.phar update vendor/package vendor/package2

或者您可以使用通配符来更新来自特定供应商的所有包:

php composer.phar update vendor/*

自动加载

Composer 的另一个很酷的地方是它的自动加载功能。 对于那些提供自动加载信息的库,Composer 会直接在 /vendor 文件夹中自动生成一个 autoload.php 文件,您可以将其包含在项目中。 然后您可以直接开始使用这些库中的类。 在您的 PHP 项目中,您只需指定以下内容:

require 'vendor/autoload.php';

你很高兴。

结论

Composer 是 PHP 世界中广泛使用的工具。 有许多项目和框架使用 Composer 来管理和安装它们的包和依赖项。 所以熟悉它的工作原理非常重要。

文章提交者:Danny