热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

yii2下的hostmanager

2019独角兽企业重金招聘Python工程师标准Vagrantfile里面如果使用了hostmanager这个插件,就必须要配置github_token

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Vagrantfile里面如果使用了hostmanager这个插件,就必须要配置github_token,否则无法启动虚拟机。

这个插件可以让我们使用y2aa.dev这样的域名访问我们的项目,而是不使用192.168.xx.xx之类的ip。

vagrant-local.yml配置,填上你的github token,并把时区改为Asia/Shanghai:,如下:

# Your personal GitHub token
github_token: 'xxxxxxxxxxx'
# Read more: https://github.com/blog/1509-personal-api-tokens
# You can generate it here: https://github.com/settings/tokens# Guest OS timezone
timezone: Asia/Shanghai# Are we need check box updates for every 'vagrant up'?
box_check_update: false# Virtual machine name
machine_name: y2aa# Virtual machine IP
ip: 192.168.100.200# Virtual machine CPU cores number
cpus: 1# Virtual machine RAM
memory: 1024

启动完成之后,在浏览器输入http://y2aa.dev

你可以看到启动过程做了很多工作,配置网络、端口映射、安装/重启nginx、mysql、php等,这些都是通过Vagrantfile这个文件来实现的,让我们来看看这个文件!

require 'yaml'
require 'fileutils'
#这里配置前、后台的域名
domains = {frontend: 'y2aa.dev',backend: 'y2aa.dev/admin'
}
#配置文件的路径
config = {local: './vagrant/config/vagrant-local.yml',example: './vagrant/config/vagrant-local.example.yml'
}# copy config from example if local config not exists
FileUtils.cp config[:example], config[:local] unless File.exist?(config[:local])
# read config
options = YAML.load_file config[:local]# check github token
if options['github_token'].nil? || options['github_token'].to_s.length != 40puts "You must place REAL GitHub token into configuration:\n/yii2-app-advancded/vagrant/config/vagrant-local.yml"exit
end# vagrant configurate
Vagrant.configure(2) do |config|# select the box.使用ubuntu14.04 64-bitconfig.vm.box = 'ubuntu/trusty64'# should we ask about box updates?config.vm.box_check_update = options['box_check_update']config.vm.provider 'virtualbox' do |vb|# machine cpus countvb.cpus = options['cpus']# machine memory sizevb.memory = options['memory']# machine name (for VirtualBox UI)vb.name = options['machine_name']end# machine name (for vagrant console)config.vm.define options['machine_name']# machine name (for guest machine console)config.vm.hostname = options['machine_name']# network settingsconfig.vm.network 'private_network', ip: options['ip']# sync: folder 'yii2-app-advanced' (host machine) -> folder '/app' (guest machine)#把当前目录同步到虚拟机的 /app 目录下面config.vm.synced_folder './', '/app', owner: 'vagrant', group: 'vagrant'# disable folder '/vagrant' (guest machine)config.vm.synced_folder '.', '/vagrant', disabled: true# hosts settings (host machine)# 使用hostmanager,把我们的前后台的域名绑定到虚拟机的ip上config.vm.provision :hostmanagerconfig.hostmanager.enabled = trueconfig.hostmanager.manage_host = trueconfig.hostmanager.ignore_private_ip = falseconfig.hostmanager.include_offline = trueconfig.hostmanager.aliases = domains.values# provisioners# 集成预安装,run: 'always' 设置成每次执行vagrant up启动环境都执行一次这个脚本,否则只在初次运行时执行。config.vm.provision 'shell', path: './vagrant/provision/once-as-root.sh', args: [options['timezone']]config.vm.provision 'shell', path: './vagrant/provision/once-as-vagrant.sh', args: [options['github_token']], privileged: falseconfig.vm.provision 'shell', path: './vagrant/provision/always-as-root.sh', run: 'always'# post-install message (vagrant console)config.vm.post_up_message = "Frontend URL: http://#{domains[:frontend]}\nBackend URL: http://#{domains[:backend]}"
end

看来想要一些特殊服务,只能去修改./vagrant/provision/下面的三个脚本了,当然你也可以添加自己的脚本。

首先来看once-as-root.sh,以root身份运行一次,只在初次启动环境时执行,除非执行了"vagrant reload --provision"命令。这个脚本将会安装nginx、php、mysql,并进行配置。不懂shell命令也没关系,我们只要做一点点修改:

找到60行:

ln -s /app/vagrant/nginx/app.conf /etc/nginx/sites-enabled/app.conf

注意上面的路径都是虚拟机里面的路径。这个命令把 ./vagrant/nginx/app.conf软链接到了nginx的配置文件目录下面,所以我们只要修改./vagrant/nginx/app.conf就可以应用到虚拟机里面。

再找到64行:

info "Initailize databases for MySQL"
#mysql -uroot <<<"CREATE DATABASE yii2advanced"
#mysql -uroot <<<"CREATE DATABASE yii2_advanced_tests"
mysql -uroot <<<"CREATE DATABASE IF NOT EXISTS Your_db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_bin"
mysql -uroot -DYour_db_name echo "Done!"

把原来的创建数据库的命令注释掉&#xff0c;然后加上你自己的&#xff0c;你需要在 ./vagrant 目录下面建一个名为mysql的目录&#xff0c;用来存放sql文件。当然&#xff0c;有时候你不希望sql文件加入版本控制里面&#xff0c;你可以排除它。或者你们团队共享一个局域网里面的数据库&#xff0c;这时候就不用再创建数据库了&#xff0c;甚至连安装mysql都可以省了。如果不需要mysql&#xff0c;可以把相关的命令都注释掉。

其它两个脚本你也可以根据需要修改。

5.如果修改了Vagrantfile或 vagrant目录下面的脚本和配置而又不是初次运行&#xff0c;你需要执行一下命令&#xff1a;

vagrant reload --provision

很多博客都有介绍"vagrant package"命令打包配置好的虚拟机分发给其他人&#xff0c;我试了一下&#xff0c;打包的之后的大小大概500M。我不建议打包&#xff0c;一个是我们初始化的时候绑定了ip&#xff0c;还有就是如果更改了配置&#xff0c;又要重新打包分发。其实我们只要执行一下第5步的命令就可以使更改应用到虚拟机。


转:https://my.oschina.net/u/3683692/blog/3026500



推荐阅读
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
author-avatar
benpk2702933054
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有