MAC下使用 Vagrant+VirtualBox+CentOS+Nginx搭建开发服务 Mac+CentOS虚拟机安装nodejs

简介

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

扫描二维码关注公众号,回复: 9974347 查看本文章

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防火墙状态

     (vagrant ssh)
 
     sudo firewall-cmd --stat
8、设置Linux端口
     
     (vagrant ssh)
 
     永久性开放虚拟机的http端口
     sudo firewall-cmd --permanent --zone=public --add-service=http
     查看虚拟机的80端口是否开放
     sudo iptables -L -n | grep 21
9、重启
     sudo systemctl restart firewalld

*10、打包

关闭虚拟机后运行如下命令将打包

$ vagrant package --output myimage.box --vagrantfile Vagrantfile

当前目录下的虚拟机将包含Vagrantfile一同被打包为myimage.box
如果将myimage.box复制给其他安装有满足条件的Vagrant与VirtualBox的用户, 并初始化, 就可以得到完全相同的开发环境

----------------------------------------------------

    到此告一段路,在本机打开浏览器,输入虚拟机系统设定的ip地址和Apache服务的端口号80
     192.168.33.10:80
    如下效果
     
 

 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

猜你喜欢

转载自www.cnblogs.com/huliangqing/p/12527792.html
今日推荐