byteinternet / hypernode-vagrant
This package is not auto-updated.
Last update: 2022-05-24 14:26:38 UTC
README
Hypernode测试环境用于MacOSX和Linux
注意:该项目已被弃用,转而使用hypernode-docker。虽然可以继续使用此Vagrant Virtualbox和LXC箱,但我们不会再推送新的箱更新。鉴于我们已发布官方Hypernode Docker镜像用于Magento开发,我们发现大多数用户更喜欢它,因为它在性能和兼容性方面优于Vagrant,我们鼓励所有hypernode-vagrant
用户切换到该版本。如果您希望继续使用hypernode-vagrant
箱文件,这是可以的,但请注意,不会上传新的箱文件。然而,仍然可以通过手动运行apt-get update
和apt-get upgrade
来接收与Hypernode相关的工具的新版本。请注意,尽管如此,Byte对该箱的支持已不再可用。
您可以在15分钟内开始在自己的本地Hypernode上开发。
启动测试环境
安装
- 安装Virtualbox 5.0.x,或LXC(实验性)。
- 安装Vagrant 1.6.4或更高版本。
- 使用Git克隆此仓库或从Github下载zip文件。
# check if vagrant version > 1.7.3 ?
vagrant --version
cd hypernode-vagrant
vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-vbguest
vagrant up --provider virtualbox
配置您的hypernode vagrant
下载hypernode-vagrant zip文件或克隆此git仓库后第一次运行vagrant up
时,需要一些用户输入以准备和设置一些配置
$ vagrant up
Bringing machine 'hypernode' up with 'virtualbox' provider...
hypernode: Is this a Magento 1 or 2 Hypernode? [default 2]:
==> hypernode: Nginx will be configured for Magento 2. /data/web/magento2/pub will be symlinked to /data/web/public
hypernode: Is this a PHP 5.5 or 7.0 Hypernode? [default 7.0]:
==> hypernode: Will boot a box with PHP 7.0 installed
hypernode: Do you want to enable Varnish? Enter true or false [default false]:
==> hypernode: Varnish will be disabled by loading a nocache vcl.
hypernode: What filesystem type do you want to use? Options: nfs_guest, nfs, rsync, virtualbox [default virtualbox]:
==> hypernode: Virtualbox is the default fs type. If you later want to try a faster fs type like nfs_guest, edit local.yml
==> hypernode: Disabling fs->folders->magento1 in the local.yml because Magento 2 was configured..
hypernode: Do you want to enable the production-like firewall? Enter true or false [default false]:
==> hypernode: The firewall will be disabled
hypernode: Do you want to enable production-like memory management?
hypernode: This might be slower but it is more in-line with a real Hypernode.
hypernode: Note: for LXC boxes this setting is disabled.
hypernode: Enter true or false [default false]:
==> hypernode: Production-like memory management will be disabled
hypernode: Do you want to install Xdebug? Enter true or false [default false]:
==> hypernode: Xdebug will be disabled
hypernode: What Ubuntu version do you want to use? Options: xenial, precise (deprecated) [default xenial]:
==> hypernode: Will use the Xenial version. This is the default.
==> hypernode: Your hypernode-vagrant is now configured. Please run "vagrant up" again.
通过回答问题,您可以决定
- 是否设置magento 2或magento 1环境。
- 应使用哪个php版本
- 是否启用Varnish
- 应使用哪种文件共享类型
- 是否配置类似生产环境的防火墙配置
- 是否启用严格内存管理(类似于生产环境)
- 是否启用Xdebug
- 要使用哪个Ubuntu版本(Xenial或旧版Precise版本)
这样就可以创建一个有效的local.yml文件,然后用于预先配置hypernode-vagrant。完成此操作后,您可以再次运行vagrant up
来启动您的vagrant箱。
好了!通过http://hypernode.local/或https://:8080/访问您的本地Hypernode。
在Linux中使用Vagrant与LXC
Virtualbox可能会相当慢。如果您使用Linux,也可以使用LXC。
为此,请在local.yml中将同步文件夹类型更改为virtualbox以外的类型,例如rsync或nfs。
fs:
type: rsync
然后安装vagrant-lxc插件。
vagrant plugin install vagrant-lxc
vagrant up --provider lxc
尽管我们官方不支持它,但如果您坚持在Arch Linux上运行box,请参阅此文档以获取更多说明。
使用测试环境
上传文件
本地目录data/web/public/
和data/web/nginx/
被绑定到Vagrant镜像。您可以使用此本地目录来编辑所有文件。
因此,启动PHPStorm并本地编辑。然后检查Hypernode box以查看结果。
SSH
SSH在主机名hypernode.local的22端口或localhost的2222端口可用。
ssh app@hypernode.local -oStrictHostKeyChecking=no -oAddressFamily=inet
您可以使用此配置片段简化SSH登录,然后只需ssh hypernode.local
Host hypernode.local
Hostname hypernode.local
User app
StrictHostKeyChecking no
# because the host key will change over time
PHP版本
默认PHP版本是5.5。要使用PHP 7.0启动hypernode-vagrant box,请编辑local.yml文件或输入5.5或7.0,当您设置vagrant时询问所需的PHP版本。
将local.yml更改为
php:
version: 7.0
销毁并重新创建box
vagrant destroy -f
vagrant up
MySQL
MySQL在主机名hypernode.local的3306端口或localhost的3307端口可用。
# find your MySQL password in /data/web/.my.cnf by loging in to SSH
# ssh app@hypernode.local cat /data/web/.my.cnf
mysql -u app --host=hypernode.local -p
要从vagrant目录直接连接,可以使用vagrant ssh
。这将使您以vagrant
用户的身份登录。这将允许您使用sudo
并管理服务器。但是,请不要将此用于常规操作,应用程序用户应用于常规使用和作为网站用户。
邮件
所有邮件都重定向到本地的MailHog实例。通过http://hypernode.local:8025访问MailHog。
与Hypernode版本保持同步
随着每个Hypernode版本的发布,我们还将更新Hypernode vagrant镜像。使用以下内容更新您的box(除非您首先进行mysqldump,否则您将丢失MySQL数据!)
vagrant box update
# optionally backup MySQL, whose data is not currently in a shared directory
vagrant destroy
vagrant up
自定义设置
您可能已经使用了某些端口。Hypernode默认将端口2222转发到22,将3307转发到3306,将8080转发到80。
冲突将自动解决,如果发生这种情况,Vagrant将打印新分配的端口。
如果您想更改这些端口,只需查看Vagrant文件。它相当直观。
同时运行多个hypernode-vagrant box
如果您对这个存储库有两个检出,或者将此Vagrantfile复制到多个项目中,您可以同时运行它们。需要注意的一些事项:
-
静态别名(hypernode.local、hypernode-alias)将指向最后启动的盒子。
-
别名是基于Vagrantfile所在的目录名称创建的。如果目录名称是'hypernode-vagrant',则将使用父目录名称。您可以使用环境变量覆盖此名称。
HYPERNODE_VAGRANT_NAME="mywebshop" vagrant up
您可以通过以下方式访问节点:
http://mywebshop.hypernode.local
-
您可以通过更新本地.yml文件中的以下部分来添加自己的别名:
hostmanager: extra-aliases: - my-custom-store-url1.local - my-custom-store-url2.local
通过在Vagrant目录内运行以下命令来将这些设置应用于已配置的环境:
vagrant hostmanager
-
如果有两个具有相同名称的hypernode-vagrant正在运行,您仍然可以通过从路径名称派生的别名访问它们。基于Vagrantfile目录路径的哈希值始终是唯一的,因为每个目录只能有一个Vagrantfile。
http://b033d-mywebshop-magweb-vgr.nodes.hypernode.local http://eb7b8-mywebshop-magweb-vgr.nodes.hypernode.local
对于定义的别名,请检查Unix系统(Linux、Mac)中的/etc/hosts
。在Windows上,请查看C:\Windows\System32\drivers\etc\hosts
。
使用共享文件夹
当您通过运行vagrant up
启动vagrant盒子时,vagrant会将预定义的目录在虚拟机(您的本地桌面)上挂载到主机机器上。这样,您可以在本地工作,并在您的首选IDE中进行更改,然后通过在浏览器中访问vagrant盒子来查看结果。
这些共享目录在local.yml
中定义,这是您首次运行vagrant up
时创建的配置文件。
fs:
folders:
magento1:
host: data/web/public
guest: /data/web/public
nginx:
host: data/web/nginx/
guest: /data/web/nginx/
type: virtualbox
disabled_folders:
magento2:
host: data/web/magento2
guest: /data/web/magento2
在设置时,定义了所有具有自己的host
和guest
路径的folders
中的挂载点。如果您想添加自己的挂载点,您可以添加自己的部分。
folders:
some_mount:
host: my/dir
guest: /some/path
确保您不要同时结合magento2和magento1部分,因为它们将重叠。
在magento1和magento2之间切换
要切换到magento1或magento2,请更改本地.yml文件中的version
设置。
magento:
version: 2
更改版本后,运行vagrant destroy && vagrant up
来删除旧节点并启动一个新的节点。
Vagrant将注意到magento版本已更改,并将相应地正确设置共享文件夹设置。
==> hypernode: Disabling fs->folders->magento1 in the local.yml because Magento 2 was configured..
更改分配的内存
默认情况下,为hypernode分配了2048M的内存,此值可以更改。要这样做,请将local.yml
中的memory
部分更改为任何有效值。
memory: 4096
对于LXC,只需发出vagrant reload
命令即可。
对于VirtualBox,需要重新构建机器。如果首次运行vagrant up
,则将使用指定的memory
构建机器。否则,应先发出vagrant destroy
。如果没有可能发出vagrant destroy
(由于本地更改),则可以通过VirtualBox GUI调整内存。
端口转发
默认情况下没有启用端口转发,除了Vagrant管理的默认SSH转发之外。可以通过修改本地.yml文件中的ports: false
部分来设置端口转发。
ports:
- send: 8080
to: 80
- send: 33060
to: 3306
- send: 2222
to: 22
默认情况下,端口将绑定到127.0.0.1,这意味着转发只能从本地机器访问。如果希望远程访问,可以添加单独的bind-addr
到相关部分。
ports:
- send: 8080
to: 80
bind-addr: 0.0.0.0
对于LXC,需要安装redir包。
故障排除
==> 默认:stdin:不是一个 tty
这是 Vagrant 缺陷 #1673,完全无害。
在 Mac 上使用 SSH 登录速度慢
Macs 默认尝试通过 IPv6 连接,这会使使用 SSH 登录变慢。要使其更快,可以向您的 ssh 命令添加 -oAddressFamily=inet
或在 ~/.ssh/config 文件中添加 "AddressFamily inet"。
MacBook-Air:hypernode-vagrant vdloo$ time ssh app@hypernode.local -A exit
real 0m5.093s
MacBook-Air:hypernode-vagrant vdloo$ time ssh app@hypernode.local -oAddressFamily=inet -A exit
real 0m0.112s
配置重新加载器在 /data/web/nginx 的更改上没有重新加载
/data/web/nginx 是您本地计算机上的一个 NFS 挂载。我们使用 inotify 来检测配置文件的更改,但 NFS 不支持 inotify。如果您想在 nginx 配置更改时使用自动配置重新加载,请将 vagrant 文件更改为不使用 nfs 挂载,通过取消注释
config.vm.synced_folder "data/web/nginx/", "/data/web/nginx/", owner: "app", group: "app", create: true
然后手动将 nginx 配置文件同步到 hypernode vagrant 虚拟机中。
[hypernode] 主机上的 GuestAdditions 版本(X.X.XX)和虚拟机(X.X.XX)不匹配。
当您的虚拟机 GuestAdditions(由 virtualbox 安装)的版本比 hypernode 上使用的版本旧时,会出现此错误。要解决这个问题,请将 virtualbox 升级到最新版本,并确保您有最新的 box 版本(使用 vagrant box update)。
网页没有变化
Varnish 默认未启用,但可以在 local.yml 中启用或在首次执行 vagrant up
时回答配置问题(这将生成 local.yml)。
如果启用了 varnish,则您的页面可能因为缓存而没有变化。为了检查这是否是导致您的页面保持静态的原因,请尝试清除缓存。
# this clears the entire varnish cache (warning: makes things slow until cache is filled up again)
varnishadm "ban req.url ~ /"
要完全禁用 Varnish 缓存
# Create a vcl that tells Varnish to cache nothing
echo -e 'vcl 4.0;\nbackend default {\n .host = "127.0.0.1";\n .port = "8080";\n}\nsub vcl_recv {\n return(pass);\n}' > /data/web/disabled_caching.vcl
# Compile the vcl
varnishadm vcl.load nocache /data/web/disabled_caching.vcl
# Load the vcl
varnishadm vcl.use nocache
有关 Hypernode 上 Varnish 的更多信息,请参阅 这篇知识库文章。
传输关闭,剩余 x 字节未读取
有时在下载或升级 vagrant 虚拟机时会出现连接错误。
http://vagrant.hypernode.com/hypernode.vagrant.release-2653.box
An error occurred while downloading the remote file. The error message, if any, is reproduced below. Please fix this error and try again.
transfer closed with 675809792 bytes remaining to read
如果您收到此错误,可以使用另一个 vagrant up
(如果您已安装了该 box 的早期版本,则使用 vagrant box update
)继续中断的下载。
==> hypernode: Adding box 'hypernode' (v2653) for provider: virtualbox
hypernode: Downloading: http://vagrant.hypernode.com/hypernode.vagrant.release-2653.box
==> hypernode: Box download is resuming from prior download progress
无法连接到 hypernode.local,但可以连接到 127.0.0.1:8080
如果您在 Linux 上,请确保已安装 net-tools
。如果这没有解决问题,可以查看 这个问题 或 这个问题 获取更多的调试建议。