最近想要改用 PHP 写网站,然而又不想在 OS X 上装上一大堆的 PHP 开发环境。想起来一直没试过 Vagrant ,干脆这次就试下。

安装

从官网上下载并安装 Vagrant: https://www.vagrantup.com/downloads.html

因为我的虚拟机用的是 Parallels Desktop ,不想再装个 VirtualBox 了,所以要装个 Vagrant 插件

$ vagrant plugin install vagrant-parallels

接下来安装系统,因为国内的下载速度并不是很理想,所以还是单独下载吧。Parallels Desktop 的 box 可以在这边搜索到:http://www.vagrantbox.es/

然后添加这个 box 并且创建一个虚拟机:

$ vagrant box add ubuntu ~/Downloads/parallels_ubuntu-14.04.box
$ 
$ cd ~/Developer
$ vagrant init ubuntu
$ vagrant up

现在就可以 ssh 进去虚拟机了:

$ vagrant ssh

配置

首先是换软件源,这就不说了。但是如果遇到缺 locale 的问题,可以修复下:

vagrant$ sudo locale-gen en_US.UTF-8
vagrant$ sudo dpkg-reconfigure locales

接着,装 Apache / PHP / Postgresql

vagrant$ sudo apt-get update
vagrant$ sudo apt-get install postgresql postgresql-contrib php5-pgsql php5 php5-mcrypt php5-cli apache2 libapache2-mod-php5
vagrant$ 
vagrant$ sudo -i -u postgres
postgres$ createuser -P -s test
Enter password for new role:
Enter it again:
postgres$ logout
vagrant$ 
vagrant$ sudo cat > /etc/apache2/sites-available/test.conf
<VirtualHost *:80>
    ServerName test.dev
    ServerAdmin webmaster@localhost
    DocumentRoot /vagrant/test
    <Directory /vagrant/test>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
vagrant$ sudo ln -s /etc/apache2/sites-available/test.conf /etc/apache2/sites-enabled/test.conf
vagrant$ sudo service apache2 restart

使用

进入虚拟机后,会发现刚刚的 ~/Developer/ 目录已经映射到 /vagrant/ 目录了,这样就可以直接在主机上修改文件了。

为了方便访问虚拟机里面的网站,我觉得采用的方案是,给虚拟机绑定一个固定的 IP ,然后在主机的 hosts 文件里面绑定域名。

绑定IP,修改 Vagrantfile: config.vm.network "private_network", ip: "1.1.1.2"

然后可以在 hosts 里面加上: 127.0.0.1 test.dev

这样就可以直接通过 test.dev 来访问虚拟机中的虚拟主机了。

vagrant 还有些常用命令:

$ vagrant init    # 初始化
$ vagrant up      # 启动虚拟机
$ vagrant halt    # 关闭虚拟机
$ vagrant reload  # 重启虚拟机
$ vagrant ssh     # SSH 至虚拟机
$ vagrant status  # 查看虚拟机运行状态
$ vagrant destroy # 销毁当前虚拟机

参考