最近正好用着Vagrant搭建开发环境,写一篇文章记录一下。

Vagrant目前是国内互联网公司应用最多的内部开发环境工具。

Mac、 Windows搭建是一样的,我是在Mac下搭建的环境。

vagrant 搭建开发环境

基础环境

virtualbox 5.1.8
下载地址:https://www.virtualbox.org/wiki/Download_Old_Builds_5_1

vagrant 1.8.6
下载地址:https://releases.hashicorp.com/vagrant/1.8.6

启动虚拟机

box下载

地址1:https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

地址2: https://github.com/CommanderK5/packer-centos-template/releases/

下载之后请确保文件名为centos6.7.box

  • 添加box

    • vagrant box add centos67 centos6.7.box
  • 初始化box
    • vagrant init centos67
    • vagrant ssh

对虚拟机优化

  • 替换源

    • sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份
    • sudo vim /etc/apt/sources.list #修改源
      • 将文件内容替换成以下内容
      •  deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
        deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
        deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
        deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
        deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
    • sudo apt-get update #更新列表

L(A|N)MP

Ngnix

sudo apt-get install nginx

nginx -v

   nginx version: nginx/1.4.6 

Apache

sudo apt-get install apache2

apache2 -v

   Server version: Apache/2.4.7

更改端口,将端口设置为8888

  • 修改 ports.conf 文件
  • curl -I 'http://127.0.0.1:8888'
  • Mysql

    • sudo apt-get install mysql-server #服务器端

      • 安装期间会提示输入为mysql设置root密码,我这边不操作,直接enter 不设置密码
    • sudo apt-get install mysql-client #客户端
      • mysql -uroot -p #测试连接库,上面安装服务端没有设置密码,这里直接enter进入
  • php

    • 安装php

      • sudo apt-get install php5-cli

        • php -v
    • PHP扩展

      • php5-mcrypt
      • php5-mysql
      • php5-gd
    • 支持apache2的php模块

      • sudo apt-get install libapache2-mod-php5
      • 开启rewrite功能
        • sudo a2enmod rewrite
    • 支持nginx fastcgi

      • sudo apt-get install php5-cgi php5-fpm
      • 修改成9000端口 ,默认sock模式
        • cd /etc/php5/fpm/pool.d
        • sudo vim www.conf # search listen = 127.0.0.1:9000
        • sudo /etc/init.d/php5-fpm restart

Vagrant高级配置

  • 端口转发

    • 配置

    config.vm.network "forwarded_port", guest: 80, host: 8888
    config.vm.network "forwarded_port", guest: 8888, host: 8889
    • 测试效果

      • http://127.0.0.1:8888/
      • http://127.0.0.1:8889/
  • 网络设置

    • 配置

      config.vm.network "private_network", ip: "192.168.199.101"

    • 效果

      • http://192.168.199.101/ 或者 http://192.168.199.101:80/
      • http://192.168.199.101:8888/
  • 共享目录

    • 配置

      config.vm.synced_folder "/Users/code/", "/home/www"

框架配置

  • tp5

    • git clone https://github.com/top-think/think tp5
    • 然后切换到tp5目录下面,再克隆核心框架仓库:cd tp5 && git clone https://github.com/top-think/frameworkthinkphp
    • nginx 配置
      • 无法查看日志 sudo chmod -R 755 /var/log/nginx
    • apache 配置
      • 无法查看日志sudo chmod -R 755 /var/log/apache2
      • Forbidden解决办法
        • cd /etc/apache2
        • sudo vim apache2.conf
             <Directory />
        Options FollowSymLinks
        AllowOverride None #修改成AllowOverride ALL 打开rewrite
        #Require all denied #把这行屏蔽掉,拒绝一切链接
        </Directory>
    • 测试效果
      • http://tp5.test 或者 http://tp5.test:8888
      • 做个测试页面 http://tp5.test/index/index/test 或者 http://tp5.test:8000/index/index/test
  • yii2

    • 下载:github.com/yiisoft/yii2/releases/download/2.0.10/yii-basic-app-2.0.10.tgz
    • nginx 配置
    • apache 配置
    • 测试效果 * http://yii.test 或者 http://yii.test:8888 * 做个测试页面 http://yii.test/site/test 或者 http://yii.test:8000/site/test
    • 问题
      • runtime/logs": mkdir(): Permission denied

        • 权限不够 chmod -R 777 runtime (如果在虚拟机不能修改文件权限,请使用nfs共享目录)
      • yii\web\Request::cookieValidationKey must be configured with a secret key.
        • config/web.php cookieValidationKey 赋值
      • 如果打不开 site/test ,请修改config/web.php 中urlManager 注释打开
  • laravel5

    • 下载: down.golaravel.com/laravel/laravel-v5.1.11.zip
    • nginx 配置
    • apache 配置
    • 测试效果
      • http://laravel.test 或者 http://laravel.test:8888

优化

  • 虚拟机名称

    • vb.name = "vagrant_centos"
  • 虚拟机主机名
    • config.vm.hostname = "centos"
  • 配置虚拟机内存和CPU
    • vb.memory = "1024"
    • vb.cpus = 2

打包命令

  • vagrant package --output xxx.box

vagrant 常用命令

vagrant init 初始化配置

vagrant up 启动虚拟机

vagrant ssh ssh登录虚拟机

vagrant suspend 挂起虚拟机
vagrant reload 重启虚拟机

vagrant halt 关闭虚拟机
vagrant status 查看虚拟机状态
vagrant destroy 删除虚拟机

搭建vagrant开发环境的更多相关文章

  1. 自定义搭建PHP开发环境

    学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...

  2. 使用virtualenv搭建python3开发环境

    问题描述 环境: CentOS6.5 想在此环境下使用python3进行开发,但CentOS6.5默认的python环境是2.6.6版本. 之前的做法是直接从源码安装python3,替换掉现有的开发环 ...

  3. Windows下搭建PHP开发环境

    PHP集成开发环境有很多,如XAMPP.AppServ......只要一键安装就把PHP环境给搭建好了.但这种安装方式不够灵活,软件的自由组合不方便,同时也不利于学习.所以我还是喜欢手工搭建PHP开发 ...

  4. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  5. mac os 下搭建android开发环境

    mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...

  6. mac 下 用 glfw3 搭建opengl开发环境

    mac 下 用 glfw3 搭建opengl开发环境 下载编译 glfw3 Build Setting 里面, Library Search Paths -> 设置好编译 glfw 库的路径 H ...

  7. 在Eclipse下搭建Android开发环境教程

    我们昨天向各位介绍了<在NetBeans上搭建Android SDK环境>,前不久也介绍过<在MyEclipse 8.6上搭建Android开发环境>, 都受到了读者的欢迎.但 ...

  8. 第二章 搭建Android开发环境

    这一章为我们讲解了如何搭建Android开发环境. 首先要了解的是Android底层开发需要哪些工具:搭建android应用程序开发环境.android NDK开发环境和交叉编译环境,前两个用来测试L ...

  9. 搭建java开发环境、使用eclipse编写第一个java程序

    搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...

随机推荐

  1. MongoDB的一些高级语法.md

      MongoDB的一些高级语法 AND 和 OR操作 AND操作 OR操作 嵌入式文档 插入 查询 数组(Array)字段 插入 查询 聚合(Aggregation) 筛选数据 修改字段 注意事项 ...

  2. mysql的优化策略

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  3. C# - 协变、逆变 看完这篇就懂了

    1. 基本概念 官方:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型.[MSDN] 公式: ...

  4. 监听input实时输入

    // 用Jquery实现: $('#input-element').on('input',()=>{ console.log("你按了一下111");}) // 用Jquer ...

  5. 使用react定义组件的两种方式

    react组件的两种方式:函数定义,类定义 在定义一个组件之前,首先要明白一点:react元素(jsx)是react组件的最基本的组成单位 组件要求: 1,为了和react元素进行区分,组件名字首必须 ...

  6. CodeForces 1058E

    题意略. 思路:本题有两个关键点: 一.满足题设的区间条件 1.区间内1的个数和为偶数 2.区间内含1个数最多的那一项,它所含1的个数不得超过区间内1的个数和的一半. 二.长度超过60的区间必然满足上 ...

  7. HDU 6299

    题意略. 思路: 我们先把所有字符串处理成 ")))((((" 这样的形式.然后我们把这些字符串排个序,按照min(l,r)来排,小的在前,在我的代码中,l为 ( 的个数,r 为 ...

  8. nginx有哪些作用

    Nginx应该是现在最火的web和反向代理服务器,没有之一.她是一款诞生于俄罗斯的高性能web服务器,尤其在高并发情况下,相较Apache,有优异的表现. 那除了负载均衡,她还有什么其他的用途呢,下面 ...

  9. Win10下安装python3.x+pycharm+autopep8

    一.安装Python3.X 1.Pythong官方网站:http://python.org/getit/   下载windows的安装包.有以下几个选项: 这里选择windows x86-64 exc ...

  10. kafka消息分发策略分析

    当我们使用kafka向指定Topic发送消息时,如果该Topic具有多个partition,无论消费者有多少,最终都会保证一个partition内的消息只会被一个Consumer group中的一个C ...