一个完整的基础网站架构搭建范例:BIND+NGINX+APACHE

    最近在学习网站架构的搭建,自己用4台虚拟机搭建了一个简单的网站架构,非常简单,适合入门。


    下面这个示例使用BIND9做DNS服务器,NGINX做负载均衡,后台服务器是APACHE。安装过程就不说了,直接贴配置,让初学者对网站架构有个初步的了解。


    四台机器的IP 分别是:

    192.168.1.104--DNS服务器+NGINX做负责均衡

    192.168.1.105--PAACHE服务器

     192.168.1.110--PAACHE服务器

     192.168.1.111--PAACHE服务器


=============================

192.168.1.104  BIND9.5.2  

安装好bind9后,用named 命令启动bind服务(named -g 查看启动过程信息,这个很有用)


先说明bind日志一般写在/var/log/messages,配置出错要自己查看日志,提示什么错误直接拿错误去google


named.conf 配置:

一个简单的bind,由以下黑体几个部分组成:

options {

  directory "/usr/local/named/etc";   //这里指定的目录是zone文件存放的目录,如果文件zone文件不存放在这个目录,启动的时候会提示找不到文件

  allow-query-cache {any;};

  pid-file "named.pid";

};

key "rndc-key" {

        algorithm hmac-md5;

        secret "+qE+rQths2/DDa4XrHGZJQ==";

};

controls {

        inet 127.0.0.1 port 953  //定义本地监听端口

        allow { 127.0.0.1; } keys { "rndc-key"; };//这里只允许本地连接,要密钥才能能访问

};

logging {

        channel query_log {

                file "/srv/named/query.log" versions  5 size 20m;

                severity info;

                print-time yes;

                print-category yes;

        };

        category queries {

                query_log;

        };

};

#root zone (数据区)

zone "." IN {

        type hint;

        file "named.root";

};

zone "localhost" IN {

        type master;

        file "localhost.zone";

        allow-update {none;};

};

zone "0.0.127.in-addr.arpa" IN {

        type master;

        file "named.local";

        allow-update {none;};

};

zone "formyz.cn" IN {

        type master;

        file "formyz.cn.zone";

        allow-update {none;};

};

上面zone指定的几个文件的内容如下:

[root@localhost named]# cat etc/localhost.zone    

$TTL 86400

$ORIGIN localhost.


@ 1D IN SOA @ root (

        42

        3H

        15M

        1W

        1D

)

1D      IN      NS      @

1D      IN      A       127.0.0.1


[root@localhost named]# cat etc/named.local 

$TTL 86400

@ IN SOA localhost. root.localhost. (

        2006121601

        3H

        15M

        1W

        1D )

        IN NS localhost.

1       IN PTR localhost


[root@localhost named]#cat etc/formyz.cn.zone 

$TTL     1D

@ IN SOA ns1.formyz.cn. root.ns1.formyz.cn. (

        2009071966

        3H

        15M

        2W

        1D )


        IN NS ns1.formyz.cn.

        IN NS ns2.formyz.cn.

        IN MX 10 mail.formyz.cn.a.


;A RECORDER

@  IN A 192.168.1.104

;ns1 IN A 192.168.1.203 //这两个随便写的,还是注释掉吧

;ns2 IN A 192.168.1.204



几个zone文件的配置就不解释了,网上一大堆,自己去查。

上面的key / option / control 三个选项的内容都可以用rncd-confgen命令生成,这个命令和rndc命令(用来管理named服务)都是安装好bind9就有的了。比如我安装到/usr/local/named,命令就在这个目录的sbin下面,配置文件在这个目录的etc下。cd /usr/local/named/sbin , ./rndc-confgen >>named.conf 即可 。

顺便说一下,像我这样把bind安装到/usr/local/named目录的,系统环境没有这个路径,找不到named服务的,也就是不能直接用named命令,怎么办?不想配置环境就这样建个软连接就可以了:

ln -s /usr/local/named/sbin/named /sbin/named

查看一下我们的软链接有没有正确:

[root@localhost named]# ls -l /sbin/named 

lrwxrwxrwx. 1 root root 27 May  4 17:13 /sbin/named -> /usr/local/named/sbin/named


同里,rndc这些命令也可以这样建立一个软连接来使用。


[root@localhost named]# cat /etc/resolv.conf 

; generated by /sbin/dhclient-script

nameserver 192.168.1.104  //在这里添加DNS服务器才可以用

nameserver 192.168.1.1


至此,可以正常使用BIND服务了:

[root@localhost named]# nslookup formyz.cn

Server:         192.168.1.104

Address:        192.168.1.104#53


Name:   formyz.cn

Address: 192.168.1.104


====================================

192.168.1.104 NGINX负载均衡

编译安装过程省略。

nginx.conf配置:

#user  nobody;

worker_processes  4;


#error_log  logs/error.log;

error_log  logs/error.log  warn;

#error_log  logs/error.log  info;


pid        logs/nginx.pid;


events {

    use epoll;

    worker_connections  1024;

}


http {

    include       mime.types;

    default_type  application/octet-stream;


    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';


    access_log  logs/access.log  main;


    sendfile        on;

    tcp_nopush     on;


    keepalive_timeout  65;

   upstream  webservers {

                server 192.168.1.104:8080 ;//如果这个安装nginx的服务器只做请求分发,可以不要这行,加了这行表示这个服务器本身也提供请求处理服务,要很下面红色字体的server{ }一起使用

                server 192.168.1.105:80 ;

                server 192.168.1.110:80 ;

                server 192.168.1.111:80 ; //我们这里没有设置权重weight的值,服务器会做轮询的负载均衡

        }


    server {

        listen       80;

        server_name  www.formyz.cn;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        location / {

                        proxy_pass  http://webservers;// 

                        proxy_set_header Host $host;

                        proxy_set_header X-Real-IP $remote_addr;

                        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

        }

    error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }


   server {

        listen       8080;

        server_name  www.formyz.cn ;


        location / {

            root   html;

            index  index.html index.htm;

        }

    }

}

最主要是upstrame 和server location 里面的设置。

===================================

后面三台服务器只是简单的安装了APACHE服务,太简单了,这里不贴出来。以后学深入一点了再单独写。

===================================


随便在任何一台虚拟机上把我们的DNS服务器添加进去(如果不添加就要在/etc/hosts文件里添加 192.168.1.104 formyz.cn这么一条,否则找不到我们的服务器),就可以用域名访问我们的网站了。我这里直接用elinks 来访问

wKioL1WI5hWjhHCgAAGRUFQydZU124.jpg


这是我们192.168.1.104这个安装了ngixn的服务器

wKioL1WI5XmA4gviAAD7jJmvhfc793.jpg


第二次用elinks访问

wKiom1WI48GTwWYAAAH0oHkpdKo460.jpg


第三次访问

wKioL1WI5XrgnFHbAAGr8SutE_Q978.jpg


第四次访问

wKiom1WI48HANvhMAAFB8RAHFPI330.jpg


每一次都访问到不同的服务器,刚好也符合我们轮询的顺序。


这里最主要是搞清楚一个网站的完整的架设流程,没多深入的研究。现在刚开始没多少就,记录一下,也给需要的朋友借鉴一下。

本文出自 “BYWIND” 博客,转载请与作者联系!

你可能感兴趣的:(一个完整的基础网站架构搭建范例:BIND+NGINX+APACHE)