- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我四处搜索但找不到答案,可能是因为 Homestead 太新了,但我想知道:在 Laravel Homestead 中,是否有一种方法可以让“vagrant up”通过为每个定义的项目配置脚本运行在“Homestead.yaml”文件中?
需要说明的是,我在 Homestead.yaml 中定义了一个项目,其中包含一个 bash 脚本,我需要运行该脚本以简化设置。这有可能吗?
也许,在项目根目录中,有另一个 Homestead.yaml 文件定义了在初始化 vagrant box 时要运行的任何 bash 脚本?
或者也许是一个自定义编写的 bash 脚本,它在每个项目的根目录中运行一个 .sh 文件?有什么想法吗?
最佳答案
根据 isimmons 的回答,这里是我如何为 Homestead v2 和 Homestead v1
创建一个工作项目特定的设置脚本我将我所有的项目都保存在我的宅基地存储库之外的一个项目文件夹中,该文件夹位于一个名为 projects 的文件夹中:
文件夹结构:
在每个项目中,我都有一个文件夹,我称之为 provision,其中有一个子文件夹 bash/outside-homestead/projects/myapp1/provision/bash
在每个 bash 文件夹中,我用我的命令放置了一个 setup.sh 文件:
#!/bin/sh
echo "==============================================="
echo "Project - DEPLOYMENT"
echo "==============================================="
echo "-----------------------------------------------"
echo "Project - Going down for maintenance."
echo "-----------------------------------------------"
php artisan down
echo "-----------------------------------------------"
echo "Project - Down for maintenance."
echo "-----------------------------------------------"
echo "Project - Composer is installing project."
echo "-----------------------------------------------"
composer install
echo "-----------------------------------------------"
echo "Project - Composer is updating project."
echo "-----------------------------------------------"
composer update
echo "-----------------------------------------------"
echo "Project - Composer is updating class autoload."
echo "-----------------------------------------------"
composer dump-autoload
echo "-----------------------------------------------"
echo "Project - Application is being optimized."
echo "-----------------------------------------------"
php artisan optimize
echo "-----------------------------------------------"
echo "Project - Artisan is migrating DB."
echo "-----------------------------------------------"
php artisan migrate --seed --force
echo "-----------------------------------------------"
echo "Project - Coming up from maintenance."
echo "-----------------------------------------------"
php artisan up
echo "-----------------------------------------------"
echo "Project - LIVE."
echo "-----------------------------------------------"
当然,您可以根据项目的复杂程度,根据需要使用此部署文件进行简单或复杂的设置。
在您的宅基地安装的脚本文件夹中创建 2 个文件:project_setup.sh 和 server_setup.sh。文件 project_setup.sh 用于调用和运行项目特定的 setup.sh 文件。
#!/bin/sh
cd $4
dos2unix $3
/bin/bash $3
文件 server_setup.sh 用于运行所有开发项目所需的一般命令,例如 XDebug 启用、nginx 上传设置、数据库创建/设置(仅限 v1)和 php 配置。
#!/bin/sh
echo "============================================"
echo "Homestead - PROVISIONING"
echo "============================================"
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash is safe"
sudo apt-get update -y -q
sudo apt-get install php5-intl -y -q
echo "-------------------------------------------"
echo "Homestead - Enabling XDebug."
echo "-------------------------------------------"
echo '\n ' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.remote_port=9000' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.remote_mode=req' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.remote_host=127.0.0.1' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.remote_handler=dbgp' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.remote_connect_back=1' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.remote_enable=1' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.remote_autostart=0' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.max_nesting_level=400' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.idekey=PHPSTORM' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.default_enable=1' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.cli_color=1' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.scream=0' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo 'xdebug.show_local_vars=1' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo '\n ' >> /etc/php5/fpm/conf.d/20-xdebug.ini
echo "------------------------------------------"
echo "Homestead - Enabled XDebug."
echo "------------------------------------------"
etc....
接下来,您要确保在进入 vagrant/homestead up 时调用您的文件。为此,您需要稍微修改 scripts/homestead.rb 。寻找这些行:
# Configure All Of The Server Environment Variables
if settings.has_key?("variables")
settings["variables"].each do |var|
config.vm.provision "shell" do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php5/fpm/php-fpm.conf && service php5-fpm restart"
s.args = [var["key"], var["value"]]
end
end
end
# Update Composer On Every Provision
config.vm.provision "shell" do |s|
s.inline = "/usr/local/bin/composer self-update"
end
在此部分之后添加此代码
# Custom Server provisioning
config.vm.provision "shell" do |s|
s.inline = "dos2unix /vagrant/scripts/server_setup.sh"
end
config.vm.provision "shell" do |s|
s.inline = "bash /vagrant/scripts/server_setup.sh"
end
# Custom Project provisioning
settings["sites"].each do |site|
config.vm.provision "shell" do |s|
s.path = "./scripts/project_setup.sh"
s.args = [site["map"], site["to"], site["provisionScript"], site["appHome"]]
end
end
Homestead 2 可以选择在 [HOME].homestead\after.sh 的“after”文件中添加自定义脚本。该文件用于在整个宅基地配置过程结束后调用脚本,因此将在 server_setup.sh 和循环的 project_setup.sh 已经运行之后运行。 v1 和 v2 之间的另一个区别是 Homestead.yaml 文件中关于数据库的内容。无需将数据库创建代码放在 server_setup 中,只需在 Homestead.yaml 中添加数据库列表即可:
databases:
- homestead
- project1db
- project2db
对于 Homestead 2 和 Homestead 1,Homestead.yaml 的其余部分是相同的。要启用此“自定义”,请将这 2 个变量添加到 Homestead.yaml 的站点部分:
provisionScript 变量是您的 setup.sh 文件在 vagrant 中的完整路径,而不是在您的桌面主机上。这使事物独立于操作系统,这无论如何都是 VM 的目的。
appHome 变量是您项目的完整路径。你希望这个变量在你的部署脚本之外,因为你的部署脚本的位置应该是服务器独立的,而且这个变量是特定于 Homestead 的。基本上,您应该能够将 setup.sh 的内容复制到 Laravel Forge 的部署脚本编辑器(等等),而无需更改内容(太多)。
Homestead.yaml 的位置是特定于版本的:
sites:
- map: vm.myapp1.local
to: /home/vagrant/Code/myapp1/public
provisionScript: /home/vagrant/Code/myapp1/provision/bash/setup.sh
appHome: /home/vagrant/Code/myapp1
- map: vm.myapp2.local
to: /home/vagrant/Code/myapp2/public
provisionScript: /home/vagrant/Code/myapp2/provision/bash/setup.sh
appHome: /home/vagrant/Code/myapp2
现在当你启动 vagrant/homestead 时,Vagrant 将运行一次 server_setup.sh 并循环 project_setup.sh 以调用你的项目特定的 setup.sh 文件。
您将在 vagrant 运行时看到输出。因此,为了便于阅读和详细的文档,您需要划定每个事件的开始位置。一个很好的书签教程,我从中大量借鉴,是:http://scotch.io/tutorials/php/getting-started-with-laravel-homestead
关于php - 在 Laravel Homestead 中为每个项目运行配置脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23841089/
我只是不喜欢 Logback 的 XML 或 Groovy 配置,而更喜欢用 Java 进行配置(这也是因为我将在初始化后的不同时间在运行时更改配置)。 似乎对 Logback 进行 Java 配置的
我的 sphinx 配置是: ================================ config/sphinx.yml development: bin_path: "/usr/loc
我们计划在生产服务器中部署我们的系统。我有兴趣了解更多有关优化网站性能的信息。 Sitecore 有哪些优化建议? (缓存,网络配置中的其他设置) 我们可以在 IIS 中做哪些优化? 找不到关于这些主
我有一个 Django 应用程序,可以处理网站的两个(或更多)部分,例如网站的“admin”和“api”部分。我还为网站的其余部分提供了普通的 html 页面,其中不需要 Django。 例如,我希望
我刚刚开始研究Docker。我有一个 Node 应用程序,可以调整大小和图像,然后在完成后向 aws 发送 SQS 消息。我已成功创建应用程序的 docker 镜像,并从本地计算机复制它,但遇到了无法
如何配置 checkstyle(在 Ant nt Maven 中)任务?我尝试了一点,但没有正确收到报告。这是我的 Ant 脚本。
我正在使用 Quartz 和 Spring 框架重写一个遗留项目。原始配置是 XML 格式,现在我将其转换为 Java Config。 xml 配置使用 jobDetail 设置触发器 bean 的作
tl;rd: 使用主键对数据库进行分区 索引大小问题。 数据库大小每天增长约 1-3 GB 突袭设置。 您有使用 Hypertable 的经验吗? 长版: 我刚刚建立/购买了一个家庭服务器: 至强 E
在安装 gcp 应用程序后,我们尝试使用 GCP 的图形 api 配置 Azure Active Directory saml 配置。我们正在遵循相同的 AWS graph api saml 设置 U
我刚刚了解了 spring security 并想使用 java hibernate 配置连接到数据库,但我发现的示例或教程很少。我通过使用 xml 配置找到了更多。我在这里使用 Spring 4.0
我们最近切换到 Java 8 以使用 java.time API(LocalDate、LocalDateTime,...)。因此,我们将 Hibernate 依赖项更新到版本 4.3.10。我们编写了
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《quarkus实战》系列的第六篇,咱
我是 NGINX 的新手,我正在尝试对我们的 ERP 网络服务器进行负载平衡。我有 3 个网络服务器在由 websphere 提供支持的端口 80 上运行,这对我来说是一个黑盒子: * web01.e
我们想使用 gerrit 进行代码审查,但我们在 webview 中缺少一些设置。 是否可以禁止提交者审查/验证他们自己的 提交? 是否有可能两个审稿人给 +1 一个累积它 到+2,以便可以提交? 谢
配置根据运行模式应用于 AEM 实例。在多个运行模式和多个配置的情况下,AEM 如何确定要选择的配置文件?假设以下配置在 AEM 项目中可用, /apps /myproject - con
我正在使用 Neo4j 服务器。我遇到了负载相对较低的问题。但是,响应时间相当长。我认为为请求提供服务的线程数太少了。有没有办法调整为 HTTP 请求提供服务的线程池的大小。那可能吗? 最佳答案 线程
我在/etc/default/celeryd 中有以下配置 CELERYD_NODES = "worker1 worker2 worker3" CELERYD_CHDIR = "path to pro
Plone 在其页面中显示来 self 的母语(巴西葡萄牙语)的特殊字符。但是,当我使用我创建的 spt 页面时,它会显示转义序列,例如: Educa\xc3\xa7\xc3\xa3o 代替 Educ
我正在尝试开始使用 Emacs/Clojure。安装 emacs 扩展的正确方法是什么。我正在尝试安装以下插件: https://bitbucket.org/kotarak/vimclojure 我已
我有一个简单的 C 项目结构: proj/ src/ docs/ build/ tests/ lib/ 尝试编写合适的 CMake 文件。 到目前为止我的尝试:http://pas
我是一名优秀的程序员,十分优秀!