如何部署Symfony应用程序欧宝娱乐app下载地址

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

如何部署Symfony应用程序欧宝娱乐app下载地址

部署Symfony应用程欧宝娱乐app下载地址序可能是一项复杂而多样的任务,具体取决于应用程序的设置和需求。本文不是一个循序渐进的指南,而是一个关于部署的最常见需求和想法的一般列表。

欧宝娱乐app下载地址Symfony部署基础

部署Symfony应用程序时采取的典型步骤包括:欧宝娱乐app下载地址

  1. 将代码上传到生产服务器;
  2. 安装你的供应商依赖项(通常通过Composer完成,也可能在上传之前完成);
  3. 运行数据库迁移或类似的任务来更新任何已更改的数据结构;
  4. 清除(并可选地预热)缓存。

部署还可以包括其他任务,例如:

  • 在源代码控制存储库中将特定版本的代码标记为发布版本;
  • 创建一个临时暂存区域,以“离线”构建更新的设置;
  • 运行任何可用的测试,以确保代码和/或服务器的稳定性;
  • 删除文件中任何不必要的文件公共/目录,保持您的生产环境清洁;
  • 清除外部缓存系统(如Memcached复述,).

如何部署Symfony应用程序欧宝娱乐app下载地址

有几种方式可以部署Symfony应用程序。欧宝娱乐app下载地址从一些基本的部署策略开始,并在此基础上进行构建。

基本文件传输

部署应用程序的最基本方法是通过FTP/SCP(或类似的方法)手动复制文件。这有其缺点,因为随着升级的进行,您缺乏对系统的控制。此方法还要求您在传输文件后执行一些手动步骤(请参阅部署后常见任务

使用源代码控制

如果您正在使用源代码控制(例如Git或SVN),您可以通过将您的实时安装也作为存储库的副本来简化。当您准备升级时,从您的源代码控制系统获取最新的更新。在使用Git时,一种常见的方法是为每个版本创建一个标记,并在部署时检出适当的标记(请参阅Git标签).

这使得您可以更新文件更容易,但您仍然需要担心手动执行其他步骤(请参阅部署后常见任务).

将平台作为服务使用

使用平台即服务(PaaS)是快速轻松部署Symfony应用程序的好方法。欧宝娱乐app下载地址有许多PaaS -下面是一些很好地与Symfony一起工作:欧宝娱乐app下载地址

使用构建脚本和其他工具

还有一些工具可以帮助减轻部署的痛苦。其中一些已经专门针对Symfony的需求进行了定制。欧宝娱乐app下载地址

EasyDeployBundle
向应欧宝娱乐app下载地址用程序添加部署工具的Symfony包。
部署人员
这是Capistrano的另一个原生PHP重写,带有一些Symfony的现成菜谱。欧宝娱乐app下载地址
Ansistrano
Ansible角色,允许您通过YAML文件配置强大的部署。
Magallanes
这个类似capistrano的部署工具是用PHP构建的,对于PHP开发人员来说,可以更容易地扩展它们的需求。
织物
这个基于python的库提供了执行本地或远程shell命令以及上传/下载文件的基本操作套件。
Capistrano欧宝娱乐app下载地址Symfony插件
Capistrano是一个用Ruby编写的远程服务器自动化和部署工具。欧宝娱乐app下载地址Symfony插件是一个插件,以减轻Symfony相关的任欧宝娱乐app下载地址务,灵感来自Capifony(这只适用于Capistrano 2)。
sf2debpkg
帮助您为Symfony项目构建原生Debian包。欧宝娱乐app下载地址
基本脚本
你可以使用shell脚本,蚂蚁或任何其他构建工具来编写项目部署的脚本。

部署后常见任务

在部署你的实际源代码之后,你需要做一些常见的事情:

A)检查要求

使用欧宝娱乐app下载地址Symfony需求检查器检查您的服务器是否满足运行Symfony应用程序的技术要求。欧宝娱乐app下载地址

B)配置环境变量

大多数Sy欧宝娱乐app下载地址mfony应用程序从环境变量读取配置。在本地开发时,通常将这些存储在.env而且.env.local(用于本地覆盖)。在生产中,你有两个选择:

  1. 创建“真正的”环境变量。如何设置环境变量取决于你的设置:它们可以在命令行中设置,在你的Nginx配置中,或者通过你的托管服务提供的其他方法设置。
  2. 或者,创建.env.local文件就像您的本地开发(见下面的注释)

这两种选择都没有明显的优势:使用宿主环境中最自然的东西。

请注意

如果你使用.env。*文件,您可能需要移动您的欧宝娱乐app下载地址symfony / dotenv依赖于require-dev需要composer.json

1 2
作曲家删除symfony/dot欧宝娱乐app下载地址env作曲家要求交响乐/多滕曲欧宝娱乐app下载地址

C)安装/更新你的供应商

您的供应商可以在传输源代码之前更新(即更新供应商/目录,然后将其与您的源代码一起传输)或随后在服务器上。不管怎样,像往常一样更新你的供应商:

1
编译器安装-no-dev -优化-自动加载器

提示

——optimize-autoloaderflag通过构建“类映射”来显著提高Composer的自动加载性能。的——no-dev标志确保开发包没有安装在生产环境中。

谨慎

如果在此步骤中得到“class not found”错误,则可能需要运行出口APP_ENV =刺激(或出口SYMFO欧宝娱乐app下载地址NY_ENV =刺激如果你不吸毒的话欧宝娱乐app下载地址Symfony Flex),然后执行该命令post-install-cmd脚本在刺激环境。

D)清除你的Symfony缓欧宝娱乐app下载地址存

确保你清理并预热你的Symfony缓存:欧宝娱乐app下载地址

1
PHP bin/控制台缓存:clear——env=prod——no-debug

E)其他事情!

根据你的设置,你可能需要做很多其他的事情:

  • 正在运行任何数据库迁移
  • 清除APC缓存
  • 添加/编辑CRON作业
  • 建立和缩小你的资产Webpack Encore
  • 将资产推送到CDN

应用程序生命周期:持续集成、QA等。

虽然本文介绍了部署的技术细节,但从开发到生产的整个生命周期可能包含更多步骤:部署到登台、QA(质量保证)、运行测试等等。

强烈建议使用分段、测试、QA、持续集成、数据库迁移和在出现故障时回滚的能力。有简单的工具和更复杂的工具,可以根据您的环境要求使部署变得简单(或复杂)。

不要忘记,部署应用程序还包括更新任何依赖项(通常通过Composer),迁移数据库,清除缓存和其他潜在的事情,如将资产推到CDN(参见部署后常见任务).

故障排除

不使用composer.json文件

欧宝娱乐app下载地址Symfony应用程序提供了一个kernel.project_dir参数和相关的getProjectDir ()方法。您可以使用此方法对相对于项目根目录的文件路径执行操作。查找项目根目录的逻辑是基于主目录的位置composer.json文件。

如果您的部署方法不使用Composer,则可能已经删除了composer.json文件和应用程序将不能在生产服务器上工作。解决方案是重写getProjectDir ()方法,并返回项目的根目录:

1 2 3 4 5 6 7 8 9 10 11
/ / src / Kernel.php/ /……内核扩展BaseKernel/ /……公共函数getProjectDir()返回__DIR__“/ . .”;}}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。