Vagrant打造Laravel开发环境(LNMP)
准备工作
- Windows 系统或者 Mac 系统
- VirtualBox 虚拟器 : https://www.virtualbox.org/
- Vagrant : http://www.vagrantup.com/
- box (这里的 box 指的是系统): http://www.vagrantbox.es/
- 在本地选择你要的工作目录
部署环境
1、首先,将VirtualBox 和 Vagrant 安装好!
Vagrant 是一个简单易用的部署工具,用英文说应该是 Orchestration Tool 。它能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境, Vagrant 基于 Ruby 开发,使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。
通俗的来说, 就是在本地部署一个和 Linux 虚拟机上的同步文件夹, 这样所有的操作都方便了许多。
// 安装好后,查看下 Vagrant 版本
F:\Twitch\test>vagrant -v
Vagrant 1.8.6
2、进入工作文件夹
3、打开终端进入工作目录,或者你可以在当前的目录按住 shift + 鼠标右键 可快速打开当前目录的 命令窗口
// 执行 vagrant box list 查看下当前 Vagrant 下部署了那些工具
F:\Twitch\test>vagrant box list
ubuntu16.04 (virtualbox, 0)
初始安装,会告诉你什么都没有!
4、开始添加我们准备好的 Box 镜像吧, 执行 vagrant box add 系统名字 Box镜像地址
这里因为我之前添加的是test,所以这里我另起一个工作空间
F:\Twitch\laravel>vagrant box add laravel /software/ubuntu16.04.box
再来查看下 我们 Vagrant 部署了那些工具吧!
5 、添加好Box镜像后,初始化环境(Initialization environment) ,执行 vagrant init 系统名,初始化成功你的工作目录下回生成一个 Vagrantfile 的配置文件
F:\Twitch\laravel>vagrant init laravel
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
这里提示我们,将 一个 Vagrantfile 文件放入了你的工作目录,然后你可以使用 vagrant up 启动你的系统!
6、环境配置
分配一个 IP,让本地可以访问到他,需要手动设置,默认是在 29行。
7、到这里所有的配置就完成了,执行 vagrant up 正式启航吧!启动后会在工作目录下生成一个隐藏文件夹 .vagrant 目录
分析下,
default: Adapter 1: nat // 网络连接模式
default: Adapter 2: hostonly // 主机
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1) // 把服务器 22 端口映射到本地 2222 端口
==> default: Booting VM... // 启动
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222 // 使用127.0.0.1:2222 来连接我们的服务器
default: SSH username: vagrant // ssh 连接 用户名
default: SSH auth method: private key // 密码
default: your host and reload your VM.
default:
default: Guest Additions Version: 5.0.18
default: VirtualBox Version: 5.1
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => F:/Twitch/laravel // 服务器下的 /vagrant 目录映射我们本地的 F:/Twitch/laravel ,这两个目录是同步的,这就做到了我们在本地开发服务器上运行项目,当然这些参数都能在配置中修改
8、使用 Xshell 来连接我们的虚拟机,两种连接方式!
使用 127.0.0.1 直接连接我们的服务器,端口 2222 ,用户名密码 vagrant ,登陆之后 你可以 sudo su 切换到 root 用户
使用 192.168.66.11 来连接服务器,端口 22
以上我们使用vagrant搭建ubuntu环境就成功了!
最后附上vagrant一些常用的命令, 希望这能帮助你们, 别忘记点赞哟!
$ vagrant box add NAME URL #添加一个box
$ vagrant box list #查看本地已添加的box
$ vagrant box remove NAME virtualbox #删除本地已添加的box,如若是版本1.0.x,执行$ vagrant box remove NAME
$ vagrant init NAME #初始化,实质应是创建Vagrantfile文件
$ vagrant up #启动虚拟机
$ vagrant halt #关闭虚拟机
$ vagrant destroy #销毁虚拟机
$ vagrant reload #重启虚拟机
$ vagrant package #当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box
$ vagrant ssh #进入虚拟环境
打包
$ vagrant package 当前要被打包的系统名 --output 打包到的地址/包名
部署LNMP
1、先更换下 apt-get 源,这里我们使用清华大学的源,权威不是!参考
vagrant@ubuntu-xenial:/etc/apt$ sudo vim /etc/apt/sources.list
vagrant@ubuntu-xenial:/etc/apt$ sudo apt-get update
2、准备工作,安装language-pack-en-bas 语言包,解决系统不同语言之间可能发生的冲突,安装之后可以减少许多因语言编码带来的问题。其中-y参数表明直接安装,无需确认。
vagrant@ubuntu-xenial:~$ sudo apt-get install -y language-pack-en-base
//安装成功后,运行下面这条命令,设定语言编码为 UTF-8
vagrant@ubuntu-xenial:/etc/apt$ locale-gen en_US.UTF-8
// 安装Git,Vim
vagrant@ubuntu-xenial:~$ sudo apt-get install git vim
3、安装Nginx
vagrant@ubuntu-xenial:~$ sudo apt-get -y install nginx
vagrant@ubuntu-xenial:~$ nginx -v
nginx version: nginx/1.10.0 (Ubuntu)
4、安装Mysql
直接安装Mysql5.7,5.7 可以说是里程碑式的版本,提高了性能,并增加了很多新的特性。特别是新增加的json字段,用过之后你会爱上她的!!
MySQL 开发团队于 9.12 日宣布 MySQL 8.0.0 开发里程碑版本(DMR)发布!但是目前 8.0.0 还是开发版本,如果你希望体验和测试最新特性,可以从http://dev.mysql.com/downloads/mysql/ 下载各个平台的安装包。不过,MySQL 软件包是越来越大了,Linux 平台上的二进制打包后就将近有 1 GB。如果在产品环境中使用,在 8.0 没有进入稳定版本之前,请继续使用 5.7 系列,当前最新的版本是 5.7.15 GA 版本——这只有 600 M 多。
// 1、下载.deb包到你的服务器:
vagrant@ubuntu-xenial:~$ wget http://dev.mysql.com/get/mysql-apt-config_0.5.3-1_all.deb
// 2、然后使用**dpkg命令添加Mysql的源:**
vagrant@ubuntu-xenial:~$ sudo dpkg -i mysql-apt-config_0.5.3-1_all.deb
注意: 注意在添加源的时候,会叫你选择安装 MySQL哪个应用,这里选择 Server即可,再选择 MySQL 5.7后又会回到选择应用的那个界面,此时选择Apply即可。
// 3、安装
vagrant@ubuntu-xenial:~$ sudo apt-get update
vagrant@ubuntu-xenial:~$ sudo apt-get install mysql-server
vagrant@ubuntu-xenial:~$ mysql -V
mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
5、安装PHP7.0
// 1、安装php7.0
vagrant@ubuntu-xenial:~$ sudo apt-get -y install php7.0
vagrant@ubuntu-xenial:~$ php -v
PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.8-0ubuntu0.16.04.3, Copyright (c) 1999-2016, by Zend Technologies
// 2、安装php7.0-mysql, php7.0与mysql通信的模块,关联上
vagrant@ubuntu-xenial:~$ sudo apt-get -y install php7.0-mysql
// 3、安装fpm,这是Nginx用来解析php文件的:
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-fpm
// 4、安装其他的必备模块
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-curl
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-xml
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-mcrypt
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-json
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-gd
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-mbstring
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-dom
vagrant@ubuntu-xenial:~$ sudo apt-get install php7.0-zip
至此与php相关的模块安装安装完成。
配置LNMP
1、配置PHP
输入/fix_pathinfo搜索,将cgi.fix_pathinfo=1改为cgi.fix_pathinfo=0:
vagrant@ubuntu-xenial:~$ sudo vim /etc/php/7.0/fpm/php.ini
2、编辑fpm配置文件:
vagrant@ubuntu-xenial:~$ sudo vim /etc/php/7.0/fpm/pool.d/www.conf
找到listen = /run/php/php7.0-fpm.sock修改为listen = 127.0.0.1:9000。使用9000端口。
sudo service php7.0-fpm stop
sudo service php7.0-fpm start
注意:如果在遇到用户权限和文件权限的问题,修改下 上图中 user 和 group ,全改为vagrant,让他对项目目录达到所有权限!
3、配置Nginx:
配置 站点 下的default文件,修改前先备份一个哦!(/etc/nginx/sites-available/)
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##
# Default server configuration
#
server {
listen 80; // 监听80端口, 默认站点
#listen [::]:80 default_server; // // IPV6 开启
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html; // 配置网站站点目录
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name localhost; // 域名
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404; //首页访问规则
// 记得修改
try_files $uri $uri/ /index.php?$query_string;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
// 开启这块注释,解析php文件
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
// 两种方式 : 1.监听 9000 端口, 2.sock 链接, 推荐使用 1
fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
} //注意闭合哦!
}
如果是设置的 fastcgi_pass unix:/var/run/php5-fpm.sock, fpm 配置文件不需要修改, 如果是监听 9000 端口就需要修改 fpm 配置文件 vim /etc/php5/fpm/pool.d/www.conf。
// 注释掉 sock 添加监听 9000 端口
;listen = /run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000
fpm 配置文件修改之后, 需要重启 fpm 才能生效 service php5-fpm start
, 如果想要检测 9000 端口是否开启成功运行 netstat -tln.
vagrant@ubuntu-xenial:~$ sudo /etc/init.d/nginx restart
[ ok ] Restarting nginx (via systemctl): nginx.service.
配置完后,我们来运行一个文件!
vagrant@ubuntu-xenial:/var/www/html$ sudo vim phpinfo.php
// 内容
<?php
phpinfo();
?>
至此,我们LNMP环境搭建完成了!
安装 Laravel
请转到此处,Laravel--入门篇(环境配置)