php - 在虚拟机上开发

标签 php symfony phpstorm virtual-machine virtualbox

我目前正在使用 VirtualBox VM 进行开发。这是一个 CENTOS 机器,使用以下说明安装了 Apache 和 PHP: http://tuline.com/wp-content/uploads/2015/11/A-Centos-Web-Development-Environment.pdf

我将服务器上的 Web 文件夹设置为 Samba 共享并将其安装在主机操作系统中(Windows 7 或 10,具体取决于我正在使用的计算机)。我遇到的唯一问题是当我启动 Symphony 项目并下载 PhpStorm 来帮助自动完成时。

PhpStorm 立即提示在映射网络驱动器上工作。我不确定是否有任何功能不起作用,因为到目前为止我一直在使用 VS Code。我尝试了几种不同的共享文件夹的方法,但我对其中任何一种都不太满意。

我尝试使用 VirtualBox 共享文件夹功能,然后将其映射到 Web 文件夹。这解决了 PhpStorm 的投诉,但使服务器速度异常缓慢。基本页面的渲染时间从大约 150 毫秒缩短到超过 4 秒。

我还尝试使用映射的 Samba 共享作为源启动本地项目,并让 PhpStorm 自动发布更改的文件。此配置的问题是,Webpack 创建的文件不会显示在 PhpStorm 项目中,除非我手动告诉 PhpStorm 下载它们。

我目前正在考虑采用以下两种方法之一:

  • 选项一是保持 Samba 共享不变,让 PhpStorm 提示。我不知道这个选择有多明智,所以我想听听做过这个的人的意见,以及是否有任何我不知道的问题。

  • 选项二是找到一种方法来镜像主机操作系统中的文件夹。然后我可以镜像 Samba 共享并在 PhpStorm 中处理目标文件夹。

我的问题是,在虚拟机中进行开发的其他人如何处理共享文件?希望有人能有一些我没有想到的聪明的东西。

如果有什么不同的话,一切都在 SSD 上运行。

编辑

我接受了 Yarimadam 的回答。如果我从头开始,Docker 似乎是正确的选择。然而,由于一台开发机器运行 Windows 7,另一台运行 Windows 10,学习曲线似乎有点长。

我最终一致同意保持目录同步。正常工作有点痛苦。这是我用来设置它们的教程/文章。 https://winscp.net/eng/docs/guide_windows_openssh_server

https://mike.eire.ca/2008/10/01/configuring-unison-on-windows/

https://gist.github.com/federivo/a1c56909b3f712e516a3cd2f70c0eaa6

http://rnowling.github.io/software/engineering/2015/04/02/installing-ocaml.html

最后:

wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin

我找不到任何涵盖有关设置 Unison 的所有内容的指南。其中大多数是 Linux 到 Linux,这并不是什么问题。问题来自于两件事。首先版本非常匹配。这没什么大不了的,但不仅版本必须匹配,而且它们必须使用相同版本的 OCaml 进行编译。

二进制下载页面上没有说明最后一个稳定的 Windows 版本使用的是哪个版本。经过反复试验,我终于得到了2.84.4,可以在服务器上与OCaml 4.03.0一起正常编译。

wget 的最后一步是安装 OPAM 来安装 OCaml。我在 yum 中找不到 OPAM 的软件包,如果您通过 yum 安装 OCaml,它将是版本 4.01.0,在查看目录时会崩溃。

最佳答案

PhpStorm 的高级功能如 code completionfind in path严重依赖索引,涉及数千个文件。由于 PhpStorm 的这种性质,它需要监视项目目录上的所有更改事件并立即索引它们。此过程需要快速可靠地访问项目目录。但在典型的网络共享图中,情况并非如此。这就是 PhpStorm 提示您的 samba 映射的原因。

您听说过 Docker

这是一个类似虚拟机的容器平台,内置了已安装的卷。因此您可以将本地文件夹映射到 guest 容器并享受实时同步。 Docker 是实现此目的的最佳解决方案。

我个人使用 Docker。但在过去,我从来不需要主机和 guest 操作系统之间的双向同步。我曾经在 guest 操作系统(供应商、前端任务运行程序)上安装所有内容,然后通过 sftp 部署服务器下载所有内容,如下所示:

配置部署服务器 (sftp)

[工具 > 部署 > 配置]

浏览远程主机,右键单击并选择“从此处下载”

[工具 > 部署 > 浏览远程主机]

设置自动上传

[工具>部署>自动上传]

关于php - 在虚拟机上开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49684909/

相关文章:

php - 如何使用html标签获取PHP DOM getElementsByTagName ('body')

php - Symfony3 : How to delete current user and redirect to home?

javascript - Symfony/Jquery 对象集合

PhpStorm 2020.2 - 无法识别 PHP 内置函数

css - 如何以编程方式在所有现有 CSS 选择器中插入父元素

php - 将数组转换为 JSON 字符串 php

javascript - 是否可以在 PHP 中模仿 Javascript 闭包?

phpstorm - Phpstorm 将 "Strip trailing spaces on Save"设置为 "All"忽略带有光标的行

php - 将 XMLHTTP 请求与字符串进行比较?设置回调

symfony - Symfony2 中的多个 Twig_Extension