一个完整的基础网站架构搭建范例: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指定的几个文件的内容如下:

[[email protected] 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

[[email protected] named]# cat etc/named.local 

$TTL 86400

@ IN SOA localhost. root.localhost. (

2006121601

3H

15M

1W

1D )

IN NS localhost.

1       IN PTR localhost

[[email protected] 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

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

[[email protected] named]# ls -l /sbin/named

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

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

[[email protected] named]# cat /etc/resolv.conf

; generated by /sbin/dhclient-script

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

nameserver 192.168.1.1

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

[[email protected] 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 来访问

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

第二次用elinks访问

第三次访问

第四次访问

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

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

时间: 2024-10-09 09:10:55

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

一个简单企业信息网站架构

前段时间做了一个简单的企业信息网站,主要用到一些开源的框架和插件,网站开发完了,把用到的东西写出来分享一下 网站功能分析 (1)网站信息维护:网站信息分为很多种类型,有自己网站发布的新闻.知识,也有从其他网站上转载的相关内容,从功能上看都类似,内容主要是富文本,都已经抽象为信息维护功能,包括企业简介之类的,都抽象为网站的信息,只是属于特殊的类型,因此也延伸出另一个需求,网站信息类型维护: (2)网站链接管理:网站链接,主要是为了丰富网站内容,方便用户使用,提升用户体验,由于该网站属于特定行业的企

最最基础综合架构搭建部署过程——rsync与全网备份

1.rsync服务1.1备份服务的作用将数据服务器里的数据统一存储备份到一台服务器1.2.rsync--服务的安装部署rsync的部署过程为服务端和客户端1.2.1.服务端部署第一个历程:安装软件程序Yum install -y rsync第二个历程:编写配置文件vim /etc/rsyncd.conf第三个历程:创建虚拟用户信息Useradd -M -s /sbin/nologin rsync第四个历程:创建密码文件echo "rsync_backup:oldboy123" >

LAMP网站架构方案解剖

LAMP网站架构方案解剖 2011-03-18 10:46 月光 网络转载 字号:T | T 网站架构是比较考研技术的一件事,所以要对一种好用的工具,那么网站架构就会事半功倍,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP 用LAMP进行网站架构是非常容易的. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN等之外,在软件架构

架构搭建----基于DDD领域驱动设计的WCF+EF+WPF分层框架(2)

写在最前面:转载请注明出处 目录置顶: 关于项目--------------------基于DDD领域驱动设计的WCF+EF+WPF分层框架(1) 架构搭建--------------------基于DDD领域驱动设计的WCF+EF+WPF分层框架(2) WCF服务端具体实现---------基于DDD领域驱动设计的WCF+EF+WPF分层框架(3) WCF客户端配置以及代理-----基于DDD领域驱动设计的WCF+EF+WPF分层框架(4) Domain具体实现------------基于DD

【超详细】在centos7上部署百万PV网站架构

PV(Page View,页面浏览量)即点击量,通常意义上说PV的多少是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标.pv的解释是这样的:一个访问者在24小时(0点-23点)内到底看了网站的几个页面.需要注意的是:同一个人浏览网站的同一个页面,不重复计算pv量,点击100次页只算1次. 案例概述:本案例设计采用四层模型实现,主要分为前端反向代理层,web层,数据库缓存层和数据库层.前端反向代理词采用主备模式,web层采用群集模式,数据库缓存层采用主备模式,数据层采用主从模式这里我为了节省

LAMP网站架构解释

对于大流量.大并发量的网站系统架构来说,除了硬件上使用高 性能的服务器.负载均衡.CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS).高性能的网页服务器(Web Server).高性能的数据库(Database).高效率的编程语言等. 具体的解决方案有以下几种: 1.squid + Apache + PHP + eAccelerator 使用Apache负载PHP,使用squid进行缓存,html或图片的请求可以直接由squid返回给用户.很多大型网站都采用这种架构

实现基于LNMP的电子商务网站的搭建

一 环境准备:centos系统  yum源(安装mysql,nginx,和php-fpm) 二:安装步骤:用yum的方式安装mariadb,mariadb-server,php-mysql,php-fpm,nginx 下载需要搭建网站的源码,我搭建的是基于小米网站的搭建,然后解压缩到data/web目录 修改权限为nobody(在这里之所以不用root,是为了安全的考虑,因为root的权限太大) 三  修改配置文件 修改nginx配置,把nginx.conf.default模板复制为配置文件进行

js的arguments菠菜网站开发搭建到底是什么

arguments的属性接下来我们来看看arguments对象里面到底有些什么东西,是骡子是马拉出来溜溜. function showargs() {console.log( arguments );} showargs(1,2,3,4,5);下面我们用console.log的方式,将arguments对象输出到控制台,这里不得不说一句,chrome的console工具好用得不得了(我不是来打广告的). arguments 这里我们可以看到arguments对象将我传入的五个参数以数组的形式保存

ASP.NET Core搭建多层网站架构【2-公共基础库】

2020/01/28, ASP.NET Core 3.1, VS2019, Snowflake雪花算法ID, Enum枚举方法扩展, Lambda方法扩展, Json方法封装 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[2-公共基础库] Snowflake雪花算法ID.Enum枚举方法扩展.Lambda方法扩展.Json方法封装 文章目录 此分支项目代码 本章节介绍了MS.Common类库中一些常用公共方法,可以自行添加自己积累的一些库 添加包引用 向MS.Co