Laravel 4 - 克隆VPS上的本地项目

时间:2013-08-09 08:26:04

标签: php laravel laravel-4

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

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

由于“vendor”文件夹默认为“GIT-ignored”,因此我通常在服务器上克隆项目后执行“composer install”。

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

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

到目前为止,我还没有找到解决方案。我甚至试图做一个“新鲜”的克隆和“作曲家安装”,它给了我内存错误。这非常令人沮丧。

我的问题是,将整个项目上传到服务器是否可以?既然“vendor”文件夹只是“git-ignored”的东西,如果我只是复制那里的一切,它会起作用吗? (我没有尝试过,因为我的服务器现在还活着,我不想损坏任何东西)。

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

我现在已经看过很多次这个记忆问题了,并且读了其他报道类似问题的人。我希望我可以上传整个项目文件夹并交叉指示它会起作用。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

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

使用 sshfs http://osxfuse.github.io/
sshfs 实际上是SFTP连接到您的服务器并将服务器安装到本地目录 这样,您就可以运行gitcomposer命令localy。您不依赖于您的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

现在你可以做任何你想做的事。

答案 1 :(得分:0)

为您了解一件好事 - 可以通过这种方式设置Laravel配置,即相同的应用程序(代码的完全相同的副本)可以在不同的服务器(环境)上采取不同的行动。

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

查看Laravel 4 Docs Environment configuration以了解更多相关信息,或按照Andrew Elkins - How to set Laravel 4 Environments

的说明进行操作

环境基于网址匹配。

您将在/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

应该重建bootstrap / autoloaders

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