MAC下使用 Vagrant+VirtualBox+CentOS+Nginx搭建开发服务
简介
vagrant是一个可创建轻量级、高复用性和便于移植的开发环境的工具。
vagrant可以理解为virtualbox等虚拟机的管理者,简化并统一了里面的一些操作。
vagrant 比单独使用virtualbox开发的优势具体体现在:
- 命令行秒杀图形界面 手工点半天方便还是直接 "vagrant init | vagrant up | vagrant ssh"更方便?
- 纯文本配置
- Vagrantfile 可以清楚描述你希望这台 VM 做的事情(内存数,IP 地址,初始化脚本,端口转发,虚拟机网络连接方式)
- Vagrantfile 的变化可以用 git 追踪
- 配置共享目录、端口映射十分方便
- 统一开发环境
- 配置好环境打包成box,可以拷贝给团队其他成员使用,解决开发环境不一致、新人环境搭建的问题
- 资源丰富
- 提供了丰富的系统镜像box-list
- 批量管理虚拟机
- 可同时启动 N 台,搭建模拟集群非常方便,占用系统资源也不是很大
- 共享目录
- 允许我们在本机用喜欢的IDE开发,然后ssh进去linux虚拟环境自测效果
安装
brew cask install virtualbox
brew cask install vagrant
使用
1、新建一个工作目录
/user/privatemac/: mkdir vagrant_project
/user/privatemac/: cd vagrant_project
2、下载boxes
boxes是一个集成了虚拟机镜像、虚拟机配置、vagrant配置的压缩包(以.box结尾);简单说它就是一个封装好的操作系统。【http://www.vagrantbox.es/ 这个网站上面有很多,根据自己的喜好选择,我选centos,建议使用下载工具先下回本地】
下载centos,下载完成后将其放入 user/privatemac/ 下的某个文件夹中备用
3、添加boxes
vagrant box add centos ../warehouse/centos-7.0-x86_64.box //centos是我起的别名
4、初始化工作目录、生成配置文件vagrantfile/在vagrantfile中设置该工作目录的工作环境
执行初始化命令/user/privatemac/vagrant_project/: vagrant init centos
在vagrant_project文件夹生成了配置文件:Vagrantfile
可以通过对Vagrantfile
的修改以满足不同的需求(修改完成后记得--vagrant reload)
1/ 设置主机对虚拟机(服务)的访问方式(端口映射/自己访问/局域网多人访问)--用 Vagrantfile 配置虚拟机 — 网络
2/ 设置主机工作文件夹与虚拟机的文件夹共享以保持同步--用 Vagrantfile 配置虚拟机 — 共享目录
5、vagrant常用命令
$ vagrant init # 初始化
$ vagrant up # 启动虚拟机
$ vagrant halt # 关闭虚拟机
$ vagrant reload # 重启虚拟机
$ vagrant ssh # SSH 至虚拟机
$ exit # 登出ssh虚拟机
$ vagrant status # 查看虚拟机运行状态 $ vagrant destroy # 销毁当前虚拟机
vagrant suspend 挂起虚拟机
vagrant resume 取消挂起
6、给Linux安装http服务
(vagrant ssh)
sudo yum install httpd
启动http服务
sudo systemctl start httpd.service
设置http服务状态
sudo systemctl enable httpd
查看http服务的状态
sudo systemctl list-unit-files | grep enabled
7、检测Linux防火墙状态
*10、打包
关闭虚拟机后运行如下命令将打包
$ vagrant package --output myimage.box --vagrantfile Vagrantfile
当前目录下的虚拟机将包含Vagrantfile
一同被打包为myimage.box
如果将myimage.box
复制给其他安装有满足条件的Vagrant与VirtualBox的用户, 并初始化, 就可以得到完全相同的开发环境
----------------------------------------------------
![](https://images2015.cnblogs.com/blog/890935/201603/890935-20160326232427183-410291457.png)
11、虚拟机安装nginx
(vagrant ssh)
sudo su - //取得root权限
①、安装nginx需要的环境,pcre 、pcrel-devel、zlib(作用压缩)、openssl、openssl-devel
yum -y install zlib;
yum –y install pcre pcrel-devel;
yum –y install openssl openssl-devel;
②、安装nginx
下载较新的稳定版本(去nginx官网找) wget http://nginx.org/download/nginx-1.8.1.tar.gz
③、解压 tar zxvf nginx-1.6.3.tar.gz
④、进入解压后的目录 cd nginx-1.8.1
⑤、配置nginx安装信息
/configure --user=www --group=www --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module
注释:/opt/nginx是安装路径,可以改为其他的如/usr/local/...
⑥、编译及安装
make && make install
⑦、修改nginx配置文件
参考 http://blog.chinaunix.net/uid-11131943-id-3032686.html
vim /opt/nginx/conf/nginx.conf //每个人的路径会有不同
nginx配置文件需要修改的内容主要包括:main、events、http、server、location这几大块
---------------------------main----------------------------------------------------
user ***;
设置运行nginx时的用户名
worker_processer 1;
nginx的进程包含:1个master进程+N个worker进程;master进程的工作是读取和鉴定配置并维护worker进程,实际提供服务的是worker进程;worker进程的数量根据自己机器CPU的核心数来设定,如8核 CPU可设置8个worker进程
error_log /opt/nginx/logs/error.log
错误日志的存放位置
pid /run/nginx.pid
设置nginx的master进程ID的写入位置,操作系统会用pid进行跟踪并发送信号给nginx
上面的指令既可以直接放在配置里面,也可以放在events/http/server/location等模块里面,区别在于直接放置将影响整个服务器。
---------------------------events----------------------------------------------------
events { worker_connections 1024; }
worker并发数 = CPU核心数 * 1024 //【worker_rlimit_nofile xxxxx;最大并发数限制值,worker_connections的值不能超过它】
---------------------------http(server(location)) 的设置----------------------------------------------------
http{
include mime.types; //告诉浏览器怎样去处理不同类型的文件
include include/*.conf; //我们可以把自己的配置放到 /opt/nginx/conf.d 这个目录的下面,只要文件的后缀是 .conf ,这些配置文件都会起作用
server{//有多个网站站点需要访问,就设置多个server快
listen 80 default_server; //设置服务器监听的端口号
server_name localhost; //主机名
access_log logs/host.access.log main;//设置访问日志存储位置,在 server 和 location 区块里也可以使用这个指令
location{//每个 server 区块里面可以定义多个 location 区块,分别去配置对不同目录或者文件的请求应该怎么样响应
root html; //虚拟主机的根目录
index index.html index.htm; //默认打开的文件 没有就返回 404 错误
}
location / { //根目录请求 ...
}
location ~ \.(gif|jpg|png)$ { //表示它的后面是一个正则表示式,这里的意思是,请求的是服务器里的 .gif ,.jpg,或者 .png 格式的文件
...
}
location ^~ /blog/ { ..
//location 定义匹配,更具体的那个会胜出,比如一个是 / ,另一个是 /blog ,这样就会用 /blog 这个 location 。你可以使用 ^~ ,
//让 nginx 停止查找更具体的匹配,意思就是,如果有请求匹配这个 location ,就直接用它里面的配置,不要再继续查找别的 location 设置的匹配了。
}
location = / {
//精确的匹配,可以用一个 = 号。
}
}
}
对服务器的设置都放到http区块里面。http包含server区块,我们可以定义多个 server 区块,去配置不同的服务器,就是虚拟主机。server下面又包含location区块,这些区块可以设置匹配不同的请求,根据请求的地址,提供不同的服务,有些请求直接给它们静态文件,有些请求可能要交给其它的服务器处理,比如 FastCGI 服务器
⑧、启动
/opt/nginx/sbin/nginx
检查是否成功
打开本地主机浏览器访问虚拟机站点192.168.33.10,如果出现welcome to nginx!则表示已经安装并运行成功
--------------------------------如果启动失败,查看端口是否被占用:--------------------------------
方法一:netstat -ntpl
或者查看所有进程
方法二:ps -efl // (ps -efl | grep nginx(或http等))
干掉占用(80)端口的进程
kill -pid 或者 kill -TERM 进程号 或者pkill -9 nginx
本地主机配置hosts:
sudo vi /etc/hosts
启动nginx
sbin/nginx
继续访问hosts中配置的站点,如果出现welcome to nginx 则成功
nginx其他常用命令:
/opt/nginx/sbin/nginx -s reload //重启
/opt/nginx/sbin/nginx -s stop //停止
/opt/nginx/sbin/nginx -t //检测配置文件是否正常
pkill nginx //强制关闭
nginx.conf配置中我添加了这么一句
include include/*.conf; //新建include文件夹;在include文件夹中的conf都起作用
参考 http://www.jianshu.com/p/d5114a2a2052
https://imququ.com/post/my-nginx-conf.html
----------------------未完待续-------------
Mac+CentOS虚拟机安装nodejs