用Composer进行Symfony离线安装

3

我正在尝试在一台没有连接到互联网的服务器上安装Symfony。 我已经将composer复制到了服务器上,但是当我尝试安装时出现以下错误:

连接错误[ERR_CONNECTION]:无法连接到getcomposer.org

是否有可能在没有互联网连接的情况下安装Symfony;例如下载框架,将其放在服务器上,然后离线运行composer? 或者它有太多依赖关系需要包含吗?

我已经搜索过,但没有找到令人满意的解决方案。


你说你复制了文件...也要复制 vendor 目录。 - COil
4个回答

4

Do

composer install -o

需要安装。然后进行所有准备工作,例如清除生产/开发环境中的缓存,并且构建资产并将它们转储。

   php app/console cache:clear && php app/console cache:clear -e prod --no-debug
   php app/console assetic:dump -e prod --no-debug
   php app/console assets:install web --symlink --relative

将你的项目推送/ftp到服务器上。我强烈建议你运行

composer dumpautoload -o

为了在服务器上更新自动加载文件,您可以进行以下操作:

更新:

您还可以运行Symfony的安装后脚本(在转储自动加载之后)以编辑/更新服务器上的parameters.yml,因为数据库访问、邮件传输可能与开发机器不同。

composer run-script post-install-cmd
php app/console cache:clear -e prod --no-debug

那么只需运行即可。
php/console list

如果您可以获取所有可用命令的列表 => 您的Symfony应用程序已成功安装并运行


其实我认为你不需要提前清除缓存和转储资产。即使服务器离线,你也应该能够运行这些命令。 - Francesco Abeni
我安装了Composer并复制了所有文件到项目中,但是当我尝试打开Symfony项目时,出现了“在此服务器上未找到请求的URL”的错误。你有任何配置它的想法吗? - User

1

我在Symfony3中遇到了同样的问题。

解决方案:

  1. 创建项目备份-以备不时之需。
  2. 将项目从server复制到拥有互联网访问权限的计算机(包括所有文件和目录):laptop
  3. 在笔记本电脑上运行composer update
  4. 在服务器上:

    rm -rf app/*
    rm -rf bin/*
    rm -rf var/cache/*
    rm -rf var/logs/*
    rm -rf var/sessions/*
    rm -rf vendor/*
    rm composer.json
    rm composer.lock

  5. 将来自笔记本电脑的文件复制到服务器的目录:app/bin/vendor/composer.jsoncomposer.lock

对我有用 :-)


谢谢@Grene提供的解决方案,但对我没有用。我已经更新了composer并将项目从笔记本电脑复制到服务器,但仍然无法工作。您有其他的解决方案吗? - User

1
你可以在连接互联网的电脑上运行Composer,并复制所有带文件的目录。
Composer需要连接到互联网才能工作,以检查软件包的新版本。

1
你的意思是我应该在我的电脑上运行Composer,然后将Symfony项目复制到服务器上,而无需在服务器上安装Composer吗? - User
我安装了Composer并复制了所有文件到项目中,但是当我尝试打开Symfony项目时,出现了“在此服务器上未找到请求的URL”的错误。你有任何配置它的想法吗? - User
谢谢@janek1,但这个解决方案对我不起作用。你有其他的想法吗? - User

1
短答案是是的,有几种方法可以做到这一点。正如其他人建议的那样,最好的选择是在连接到互联网的系统上构建您的项目(安装Symfony,安装Composer,更新依赖项),然后将项目复制到服务器上。

警告

构建项目的系统应尽可能与实际服务器相似(我的意思是PHP版本、MySQL版本等),否则项目可能会出现故障。
您可能希望构建虚拟机以使其真正相似,这对开发也很有好处。在这种情况下,您可以查看像AnsibleVagrant这样的工具。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接