【问题标题】:Laravel 4 - cloning the local project on the VPSLaravel 4 - 在 VPS 上克隆本地项目
【发布时间】:2013-08-11 03:41:54
【问题描述】:

我使用 Laravel 4 来开发我的项目。

我在我的 Mac 上开发,提交到 Git,然后在服务器上克隆它(linode 1G VPS)。

由于“vendor”文件夹默认为“GIT-ignored”,所以我通常在将项目克隆到服务器后进行“composer install”。

之后,我在本地安装的任何其他软件包,我都会在服务器上进行“composer update”。

昨天,我报告了这个问题-PHP Composer update "cannot allocate memory" error (using Laravel 4)

到目前为止,我还没有找到解决方案。我什至尝试进行“新”克隆和“composer install”,这给了我内存错误。这非常令人沮丧。

那么我的问题是,可以将我的整个项目上传到服务器吗?由于“供应商”文件夹只是“git-ignored”的东西,如果我只是复制那里的所有内容,它会工作吗? (我没有尝试过,因为我的服务器目前还活着,我不想损坏任何东西)。

“compiled.php”文件的实际作用是什么?它依赖于平台吗?我也可以复制那个文件吗?

我已经多次看到这个内存问题,并看到其他人报告了类似的问题。我希望我可以上传整个项目文件夹并祈祷它会起作用。

感谢您的帮助!

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    我没有 VPS,甚至没有我的提供商对我的自定义/共享主机的 shell 访问权限,但我可以在没有它的情况下运行 gitcomposer 命令。

    使用 sshfs http://osxfuse.github.io/
    sshfs 实际上会 SFTP 连接到您的服务器并将服务器安装到本地目录。
    这样,您可以在本地运行 gitcomposer 命令。您不依赖于您的 VPS/托管服务器。 sshfs 在后台将文件发送到远程服务器。

    要将 VPS 挂载到本地目录,请运行此命令

    sshfs user@serverip:. /path/to/existing/local/dir // to mount root dir
    cd !$ // to get into mounted dir
    
    // or
    
    sshfs user@serverip:foldername /path/to/existing/local/dir // to mount specific dir
    cd !$ // to get into mounted dir
    

    现在你可以为所欲为。

    【讨论】:

      【解决方案2】:

      对您来说是一件好事 - 可以通过这样的方式设置 Laravel 配置,即同一个应用程序(完全相同的代码副本)可以在不同的服务器(环境)上以不同的方式运行。

      我是这样写的,因为如果您迟早将远程服务器与代码的本地副本同步,您会偶然发现每次同步后更改数据库凭据或应用程序设置等问题 - 这当然没有意义:)

      查看Laravel 4 Docs Environment configuration 了解更多信息,或按照Andrew Elkins - How to set Laravel 4 Environments 的本教程进行操作

      环境基于 url 匹配。

      您会在 /bootstrap/start.php 中找到该配置

      $env = $app->detectEnvironment(array(
      
      'local' => array('your-machine-name'),
      
      ));
      

      现在假设您正在本地开发并使用本地前缀/后缀。例如:my-new-site.local 或 local.my-new-site

      $env = $app->detectEnvironment(array(
      
      'local' => array('local.*','*.local'),
      
      ));
      

      设置环境,现在要使用它,您需要在 /app/config/ 中创建一个本地文件夹

      1 mkdir app/config/local
      

      因此,您希望本地有不同的数据库配置。只需将数据库配置文件复制到本地目录并修改即可。

      1 cp app/config/database.php app/config/local/database.php
      

      总结并回答您的问题:

      1) 我想将整个项目目录复制到远程服务器是可以的(尽管,如果您的复制供应商可能需要很长时间 - 它通常包含大量文件)

      2) 如果您这样做,请记住在远程服务器上更新 composer.json(以反映所有必要的要求)

      3) 如果您在本地和远程使用不同的数据库服务器 - 您显然必须在远程服务器上运行迁移和播种器(这也涉及包迁移/种子)

      4) 迁移所有文件后,执行

      composer dump-autoload
      php artisan optimize --force --env=YourProductionEnvironmentName
      

      应该重建引导程序/自动加载器

      5) 如果您使用上述 Laravel 环境设置,请记住将您的远程服务器视为生产服务器(如果您的本地服务器正在测试/暂存)。

      【讨论】:

        猜你喜欢
        • 2014-12-10
        • 2016-11-30
        • 2013-09-19
        • 2019-05-12
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2020-06-30
        相关资源
        最近更新 更多