【发布时间】:2019-09-13 14:45:42
【问题描述】:
我有一个带有 ubuntu 的 vps,我想使用 Git 部署我的 Laravel 应用程序。 Laravel 有一些用于框架本身的文件夹(app、bootstrap、vendor)和一个用于公共文件(“public”、lol)的文件夹,所以我希望将所有这些框架文件夹放在 apache 服务器的“www”文件夹之外,并且将“public”文件夹的内容复制到“www”。我已经读过关于制作一个钩子,将所有推送的文件复制到 www 文件夹(使用结帐),但我不想将所有文件签出到 www,只是那些在“公共”和其余部分中的文件将文件(laravel 文件)推送到外部。
我的文件夹结构是:
- myapp(从我的本地仓库推送)
- Laravel 框架文件夹
- Laravel 公用文件夹
- 万维网
- 来自 laravel 的公用文件夹的内容
我怎样才能实现这种结构?我使用的是一个裸仓库,所以我可以推送它,但由于它是“裸的”,我没有文件的副本,我不能写一个接收后挂钩,比如:清空 www 文件夹并复制所有内容var/myapp/public 给它。 另一种选择是将所有文件(公共和非公共)都放在 www 文件夹中,这样我就可以使用 checkout 方法,但是我在某个地方阅读了将所有应用程序逻辑放在公共 www 文件夹之外更好的地方。
谁能帮帮我?提前致谢。
【问题讨论】:
-
您是否考虑过创建符号链接?比如 /var/www/ 到 /git/laravel/public/
-
无论您使用什么网络服务器,无论是 Apache 还是 NGINX 或其他什么,都有 DocumentRoot 或 Root 设置,您可以在其中将其(“www”目录)设置为
public目录,就是这样那是为了。完成此操作后,public目录上方的所有内容都在 DocumentRoot 之外。无需复制文件或使用符号链接。只需将 Web 服务器中的单个配置行更改为在公共目录之外提供服务。 -
Sajan 是正确的,曾几何时我想做你所要求的,但后来我意识到没有必要,因为我可以修改 httpd.conf 文件并告诉 apache 我想要我的根目录。根是 httpd.conf 文件中指定的或指定的。用于我正在使用的应用程序。仅仅因为一个目录说 www 并不意味着它的根。如果您有一个具有多个域的虚拟主机设置,则可以以相同的方式设置它们的根。 ** 除非您使用的是共享主机帐户,否则就是另一回事了。
-
这一切似乎都结束了,只需执行以下操作:在 /srv 下为您的 Web 应用程序代码创建一个文件夹,然后在那里部署您的代码,现在为 apache 创建一个虚拟主机配置(我假设这就是您'正在使用)通常在 /etc/apache2 或 /etc/httpd 中找到的站点可用文件夹中,然后符号链接该配置以存在于启用站点的文件夹中重新启动 apache 并完成,您很少需要编辑 httpd.conf
标签: git laravel-4 web-deployment