用linux服务器搭建web网站的步骤

合集下载

linux搭建服务器教程

linux搭建服务器教程

linux搭建服务器教程Linux是一种开源操作系统,广泛应用于服务器领域。

下面是一个简单的Linux搭建服务器教程,帮助你搭建一个基本的服务器。

首先,你需要选择一个Linux发行版,例如Ubuntu、Debian或CentOS。

选择适合你的需求和技能水平的发行版,并从它们的官方网站上下载安装镜像。

安装操作系统:将下载的镜像刻录到光盘或创建一个启动盘,然后插入计算机并启动,按照屏幕上的指示进行操作系统的安装。

配置网络:在安装完成后,你需要配置网络以便服务器能够通过Internet访问。

使用网络设置工具或编辑网络配置文件来配置IP地址、子网掩码、网关和DNS服务器。

安装所需软件:使用包管理工具(例如apt或yum)来安装你需要的软件。

例如,如果你想搭建一个Web服务器,你可以安装Apache或Nginx。

如果你需要数据库,你可以安装MySQL或PostgreSQL。

配置防火墙:保护服务器免受未经授权的访问和攻击。

使用防火墙工具(如iptables)来配置允许和拒绝的网络流量。

创建用户:为了安全起见,不要使用root用户进行日常操作。

创建一个新的普通用户,并将其加入sudo组,以便可以使用管理员特权进行管理任务。

配置服务:根据你的需要配置安装的服务。

例如,对于Web服务器,你需要指定要使用的网站目录或虚拟主机配置。

测试服务器:在服务器设置完成后,通过测试来验证服务器是否正常工作。

例如,使用浏览器访问Web服务器上的网站,或者使用Telnet命令测试SMTP服务器是否可以发送电子邮件。

备份和维护:定期备份服务器上的重要文件,并定期进行系统和软件包更新。

这将有助于保持服务器的安全性和稳定性。

这只是一个简单的Linux搭建服务器教程,涵盖了一些基本步骤。

在搭建和维护服务器时,请确保阅读相关文档和参考资料,并遵循最佳实践。

这将帮助你建立一个安全可靠的服务器环境。

Linux系统Web服务的配置与应用

Linux系统Web服务的配置与应用
DocumentRoot "/usr/" DirectoryIndex default.html ErrorLog logs/web2/error_log CustomLog logs/web2/access_log combined </VirtualHost>
18
启动和停止Web服务 1.启动Web服务 /etc/init.d/httpd start 2.停止Web服务 /etc/init.d/httpd stop 3.重新启动Web服务 /etc/init.d/httpd restart
Linux
本章导读
Web服务的概述
Apache服务器
Apache服务器的安装
Apache服务的基本配置
启动和停止Web服务
CGI运行环境的配置
2
Web服务的概述

HTTP协议

Web服务

Web服务工作原理
3
HTTP协议
WWW的目的就是使信息更易于获取,而不管它们的
5
Web服务工作原理 ① Web浏览器使用HTTP命令向一个特定的服务器发出Web页面请求。 ② 若该服务器在特定端口(通常是TCP 80端口)处接收到Web页面请 求后,就发送一个应答并在客户和服务器之间建立连接。 ③ 服务器Web查找客户端所需文档,若Web服务器查找到所请求的文 档,就会将所请求的文档传送给Web浏览器。若该文档不存在,则 服务器会发送一个相应的错误提示文档给客户端。 ④ Web浏览器接收到文档后,就将它显示出来。 ⑤ 当客户端浏览完成后,就断开与服务器的连接。
21
【练习4】在Web服务器中建立一个名为test的虚拟目录,其对应的物理路径是/usr/local/test,并配置Web服务 器仅允许来自网络客户机的访问。

在Linux上搭建Web服务器的步骤

在Linux上搭建Web服务器的步骤

在Linux上搭建Web服务器的步骤在当今的数字化世界中,Web服务器作为承载和提供网页服务的重要组成部分,它的搭建对于Web应用程序的开发和部署具有至关重要的意义。

在本文中,我们将介绍在Linux操作系统上搭建Web服务器的步骤。

一、Linux环境准备1.选择合适的Linux发行版:目前常见的Linux发行版有Ubuntu、CentOS等,选择合适的发行版作为我们的Web服务器操作系统。

2.安装Linux操作系统:根据所选择的Linux发行版,进行系统的安装。

安装过程中需要设置用户名、密码等相关配置。

二、安装所需软件1.安装Apache服务器:Apache是目前最广泛使用的Web服务器软件之一。

在Linux上安装Apache可以通过包管理工具进行安装,以Ubuntu为例,命令如下:```sudo apt-get update //更新软件源sudo apt-get install apache2 //安装Apache```2.安装PHP解释器:PHP是一种广泛使用的服务器端脚本语言,用于动态生成Web页面。

同样使用包管理工具进行安装,以Ubuntu为例,命令如下:```sudo apt-get install php libapache2-mod-php //安装PHP和Apache模块```3.安装MySQL数据库:MySQL是一种开源的关系型数据库管理系统,用于存储和管理网站所需的数据。

以Ubuntu为例,命令如下:```sudo apt-get install mysql-server //安装MySQL服务器sudo mysql_secure_installation //进行安全设置```三、配置服务器1.配置Apache服务器:Apache的配置文件位于/etc/apache2目录下,通过编辑该文件可以对服务器进行相关配置。

```sudo nano /etc/apache2/apache2.conf //编辑配置文件```在配置文件中可以设置服务器的根目录、虚拟主机等信息。

在Linux上使用Shell脚本实现网络配置

在Linux上使用Shell脚本实现网络配置

在Linux上使用Shell脚本实现网络配置在Linux操作系统中,Shell脚本是一种强大的工具,可以用于自动化操作和配置。

本文将介绍如何使用Shell脚本来实现网络配置。

一、准备工作要使用Shell脚本实现网络配置,首先需要了解一些基本的网络配置知识。

例如,IP地址、子网掩码、网关、DNS等。

在Linux系统中,这些信息可以通过ifconfig和route等命令来查看和配置。

二、创建Shell脚本首先,打开一个文本编辑器,例如vi或nano,创建一个空白文件。

然后,使用以下命令开头指示脚本使用Bash作为解释器:```bash#!/bin/bash```接下来,我们可以在脚本中添加一些注释,例如脚本的用途和作者等信息:```bash# 网络配置脚本# 作者:Your Name```三、获取用户输入接下来,我们可以使用read命令来获取用户输入的网络配置信息。

例如,用户需要输入IP地址、子网掩码、网关和DNS服务器的信息。

我们可以使用以下命令获取这些信息:```bashread -p "请输入IP地址:" ipread -p "请输入子网掩码:" subnetread -p "请输入网关地址:" gatewayread -p "请输入DNS服务器地址:" dns```四、配置网络有了用户输入的网络配置信息,我们可以使用ifconfig和route命令来配置网络。

以下是一个简单的例子,用于配置有线网络:```bashifconfig eth0 $ip netmask $subnetroute add default gw $gatewayecho "nameserver $dns" >> /etc/resolv.conf```上述命令将配置eth0网卡的IP地址和子网掩码,并添加默认的网关和DNS服务器。

Linux网站服务实验报告web

Linux网站服务实验报告web

一、编译安装httpd服务1.配置IP[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 配置IP BOOTPROTO=noneIPADDR=192.168.1.1NETMASK=255.255.255.0[root@localhost ~]# service network restart 重启网卡[root@localhost ~]# ifconfig eth0 查看IP地址eth0 Link encap:Ethernet HWaddr 00:0C:29:B9:F4:F5inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.02.卸载[root@localhost ~]# rpm -q httpd 查看软件包是否安装httpd-2.2.3-43.el5 (安装了,进行卸载)[root@localhost ~]# rpm -e httpd --nodeps 卸载软件卸载软件[root@localhost ~]# rpm -q httpd 再查看软件包是否安装package httpd is not installed3.解压(复制)[root@localhost Desktop]# cp -r httpd-2.2.17/ /usr/src/ 把这个文件夹复制到此路径下[root@localhost httpd-2.2.17]# ls /usr/src/httpd-2.2.17/ 查看4.配置[root@localhost httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi 配置5.编译并安装[root@localhost httpd-2.2.17]# make && make install[root@localhost httpd-2.2.17]# ls /usr/local/httpd/ 确认安装结果bin cgi-bin error icons lib man modulesbuild conf htdocs include logs manual[root@localhost httpd-2.2.17]# /usr/local/httpd/bin/apachectl -t 验证语法Syntax OK6.优化[root@localhost httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin/优化,相当于创建快捷方式[root@localhost httpd-2.2.17]# httpd -v 查看程序版本Server version: Apache/2.2.17 (Unix)Server built: Mar 14 2015 16:28:47[root@localhost httpd-2.2.17]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl lrwxrwxrwx 1 root root 30 03-14 16:36 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl lrwxrwxrwx 1 root root 26 03-14 16:36 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd7.添加httpd系统服务[root@localhost httpd-2.2.17]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd[root@localhost httpd-2.2.17]# chmod +x /etc/init.d/httpd赋予这个新文件夹可执行的权限[root@localhost httpd-2.2.17]# vim /etc/init.d/httpd 编辑#!/bin/sh# chkconfig: 35 85 15# description:hehe (手动添加这两项)[root@localhost httpd-2.2.17]# chkconfig --add httpd将httpd添加为系统服务[root@localhost httpd-2.2.17]# chkconfig --list httpdhttpd 0:关闭1:关闭2:关闭3:启用4:关闭5:启用6:关闭8.验证[root@localhost httpd-2.2.17]# service httpd start 启动服务[root@localhost httpd-2.2.17]# netstat -anpt | grep httpd 检查服务tcp 0 0 :::80 :::* LISTEN22903/httpd在Linux中验证:在Windows中验证:二、部署awstats分析系统[root@localhost Desktop]# cp -r awstats-7.0/ /usr/local/awstats 复制此文件夹到此路径下[root@localhost Desktop]# cd /usr/local/awstats/tools/ 进入此目录[root@localhost tools]# lsawstats_buildstaticpages.pl awstats_updateall.pl logresolvemerge.pl webminawstats_configure.pl geoip_generator.pl maillogconvert.pl xsltawstats_exportlib.pl httpd_conf urlaliasbuilder.pl[root@localhost tools]# ./awstats_configure.pl 执行脚本/usr/local/httpd/conf/httpd.conf[y/N] ? y[y/N] ? yPress ENTER to continue...Press ENTER to finish...[root@localhost tools]# vim /etc/awstats/.conf修改站点统计配置文件修改:LogFile="/usr/local/httpd/logs/access_log"DirData="/var/lib/awstats"[root@localhost tools]# vim /usr/local/httpd/conf/httpd.conf 编辑httpd服务的主配置文件修改:[root@localhost tools]# /usr/local/httpd/bin/apachectl -t 验证配置的语法是否正确Syntax OK[root@localhost tools]# /etc/init.d/httpd start 启动httpd服务[root@localhost tools]# netstat -anpt | grep httpdtcp 0 0 :::80 :::* LISTEN 24688/httpd[root@localhost tools]# mkdir /var/lib/awstats 创建文件夹设置计划任务[root@localhost tools]# crontab -e输入*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now[root@localhost tools]# /etc/init.d/crond start 启动服务启动crond:[确定][root@localhost tools]# chkconfig --level 35 crond on修改hosts文件后访问[root@localhost tools]# vim /etc/hosts 修改hosts文件192.168.1.1 在linux中验证:在windows中验证:。

Linux服务器搭建步骤详解

Linux服务器搭建步骤详解

Linux服务器搭建步骤详解Linux服务器是互联网技术领域中广泛应用的服务器操作系统。

本文将详细介绍Linux服务器搭建的步骤,以帮助读者快速、准确地搭建自己的服务器。

第一步:选择Linux发行版在搭建Linux服务器之前,需要根据自己的需求选择合适的Linux发行版。

常见的Linux发行版有Ubuntu、CentOS、Debian等。

每个发行版都有其特点和适用场景,因此根据服务器用途选择合适的Linux发行版非常重要。

第二步:准备服务器硬件环境在搭建Linux服务器之前,确保服务器的硬件环境符合要求。

需要留意的硬件包括服务器的处理器、内存、硬盘空间以及网络接口等。

确保硬件环境能够满足服务器的运行需求,以免影响服务器性能。

第三步:安装Linux发行版在准备好硬件环境后,接下来是安装所选择的Linux发行版。

这通常通过光盘、USB安装介质或者通过网络进行安装。

根据所选发行版的提供的安装方法进行操作,按照提示完成安装过程。

第四步:安全设置安装完成后,要进行一些基本的安全设置,以保护服务器的安全性。

首先是更新系统内核和软件包到最新版本,这能够修复已知的安全漏洞。

其次,设置防火墙规则以限制对服务器的访问。

还可以配置SSH登录限制和安装入侵检测工具等,以增加服务器的安全性。

第五步:安装服务器软件接下来,根据服务器的用途安装相应的软件。

例如,如果服务器用于网站托管,可以安装Web服务器软件如Apache或Nginx,数据库软件如MySQL或PostgreSQL;如果服务器用于邮件服务,可以安装邮件服务器软件如Postfix或Sendmail。

根据需求选择并安装合适的服务器软件。

第六步:配置服务器软件安装完成后,需要对所安装的服务器软件进行配置。

服务器软件的配置文件通常位于/etc目录下,通过编辑配置文件来配置服务器的参数和选项。

例如,对于Web服务器软件,可以设置虚拟主机、目录索引、缓存机制等。

根据需要,对服务器软件进行个性化配置以满足自己的需求。

TongWeb安装配置--Linux

TongWeb安装配置--Linux

TongWeb安装配置--Linux目录第一章TongWeb5.0安装 (2)一、安装JDK (2)二、安装TongWeb (2)三、启停TongWeb (4)四、使用Tongweb管理控制台 (4)第二章配置TongWeb (5)一、设置JVM内存 (5)二、修改系统打开文件句柄数限制 (5)第三章部署应用 (6)第一章TongWeb5.0安装一、安装JDK复制JDK安装文件到/usr,执行./jdk-6u33-linux-x64.bin,默认安装JDK,目录为:/us/jdk1.6.0._33,配置JAVA_HOME,并添加java_home\bin到PATH路径如图导入PATHexport PATH=${PATH}:/user/jdk1.6.0_33/bin二、安装TongWeb1.Tongweb安装分为标准版、企业版、集群版,需按照顺序依次安装2.进入安装程序所在目录/opt/tongtech/install/linux,执行安装命令$shInstall_TW5.0.1.9_Standard_Linux.bin –i console,安装标准版,如图3.安装中关键选项如下图,详细信息见标准版安装输出4.升级到企业版:在安装程序目录/opt/tongtech/install/linux目录执行$shInstall_TW5.0.1.9_Enterprise_Linux.bin –i console,进行企业版安装,安装目录/opt/tongtech/TongWeb5.0/applications5.升级到集群版:在安装程序目录/opt/tongtech/setup目录执行$shInstall_TW5.0.1.9_Cluster_Linux.bin –i console,进行企业版安装,默认目录/opt/tongtech/TongWeb5.06.设置Tongweb使用的JDK:进入Tongweb目录/opt/tongtech/TongWeb5.0/bin,执行$vi startservernohup.sh,添加export JAVA_HOME=/user/jdk1.6.0_33/,按照同样的方式编辑停止脚本stopserver.sh。

Linux系统部署Web应用全面总结

Linux系统部署Web应用全面总结

***********@@@@@@@@@@**********@@@@@@@@@@一、准备工作软件:tomcat服务器、Oracle或Mysql数据库、JDK1.6、FTP服务器、SSH Secure File Transfer Client、RedHat-Linux-Server5.5系统软件二、步骤:A.安装RedHat-Linux-Server5.5操作系统(硬件要求选择安装32位或64位)B.安装SSH Secure File Transfer Client远程客户端软件,并连接上Linux操作系统C.安装JDK并配置环境变量D.安装数据库Oracle或MySQL等E.安装并配置Tomcat服务器(其他服务器如:BEA WebLogic、Jboss、IBM WebSphere 等)F.如果Web应用中使用了FTP服务器,还需要在Linux系统安装和配置FTP(检查后确定Linux系统中没有安装FTP)三、详细过程:a.RedHat-Linux-Server5.5的安装Red Hat Enterprise Linux 5 Server (x86_64) 1张DVD光盘1、将RedHat Enterprise Linux Server第一片安装光盘放入光驱起动。

如无意外,可以看到以下的开机界面提示您可以:boot:输入『enter』键,进入图形安装界面;boot:输入linux text,进入文本模式的安装;boot:输入linux rescue进入修复已经安装好系统;这里我选择输入『enter』键,进入图形安装界面2、安装程序检测系统:3、检验光盘:为了节省时间,一般不会测试:按tab键切到Skip选项,按Enter键进入下一页4、安装欢迎界面:点选Next5、选择安装过程中使用的语言:首先安装程序会问您安装GUN/Linux时使用那种语言来显示信息,您在此选择的语言也会成为安装后RedHat Enterprise Linux Server 5.0的缺省语言,RedHat Enterprise Linux Server 5.0对中文的支持算是不错,您可以选择『Chinese(Simplified)简体中文』,按『Next』键进入下一步安装界面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

搭建网站步骤今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有一个很好的架构,但马克思告诉我们事物是在发展中不断前进的,网站架构也是随着业务的扩大、用户的需求不断完善的,下面是一个网站架构逐步发展的基本过程,读完后,请思考,你现在在哪个阶段。

架构演变第一步:物理分离WebServer和数据库最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了。

这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用也容易出问题。

于是进入了第一步演变阶段:将应用和数据库从物理上分离,变成了两台机器,这个时候技术上没有什么新的要求,但你发现确实起到效果了,系统又恢复到以前的响应速度了,并且支撑住了更高的流量,并且不会因为数据库和应用形成互相的影响。

看看这一步完成后系统的图示:架构演变第二步:增加页面缓存好景不长,随着访问的人越来越多,你发现响应速度又开始变慢了,查找原因,发现是访问数据库的操作太多,导致数据连接竞争激烈,所以响应变慢。

但数据库连接又不能开太多,否则数据库机器压力会很高,因此考虑采用缓存机制来减少数据库连接资源的竞争和对数据库读的压力。

这个时候首先也许会选择采用squid等类似的机制来将系统中相对静态的页面(例如一两天才会有更新的页面)进行缓存(当然,也可以采用将页面静态化的方案),这样程序上可以不做修改,就能够很好的减少对WebServer的压力以及减少数据库连接资源的竞争,OK,于是开始采用squid来做相对静态的页面的缓存。

看看这一步完成后系统的图示:这一步涉及到了这些知识体系:前端页面缓存技术,例如squid,如想用好的话还得深入掌握下squid的实现方式以及缓存的失效算法等。

架构演变第三步:增加页面片段缓存增加了squid做缓存后,整体系统的速度确实是提升了,WebServer的压力也开始下降了,但随着访问量的增加,发现系统又开始变的有些慢了。

在尝到了squid之类的动态缓存带来的好处后,开始想能不能让现在那些动态页面里相对静态的部分也缓存起来呢,因此考虑采用类似ESI之类的页面片段缓存策略,OK,于是开始采用ESI来做动态页面中相对静态的片段部分的缓存。

看看这一步完成后系统的图示:这一步涉及到了这些知识体系:页面片段缓存技术,例如ESI等,想用好的话同样需要掌握ESI的实现方式等;架构演变第四步:数据缓存在采用ESI之类的技术再次提高了系统的缓存效果后,系统的压力确实进一步降低了,但同样,随着访问量的增加,系统还是开始变慢。

经过查找,可能会发现系统中存在一些重复获取数据信息的地方,像获取用户信息等,这个时候开始考虑是不是可以将这些数据信息也缓存起来呢,于是将这些数据缓存到本地内存,改变完毕后,完全符合预期,系统的响应速度又恢复了,数据库的压力也再度降低了不少。

看看这一步完成后系统的图示:这一步涉及到了这些知识体系:缓存技术,包括像Map数据结构、缓存算法、所选用的框架本身的实现机制等。

架构演变第五步:增加WebServer好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver,这也是为了同时解决可用性的问题,避免单台的webserver down机的话就没法使用了,在做了这些考虑后,决定增加一台webserver,增加一台webserver时,会碰到一些问题,典型的有:1、如何让访问分配到这两台机器上,这个时候通常会考虑的方案是Apache自带的负载均衡方案,或LVS这类的软件负载均衡方案;2、如何保持状态信息的同步,例如用户session等,这个时候会考虑的方案有写入数据库、写入存储、cookie或同步session信息等机制等;3、如何保持数据缓存信息的同步,例如之前缓存的用户数据等,这个时候通常会考虑的机制有缓存同步或分布式缓存;4、如何让上传文件这些类似的功能继续正常,这个时候通常会考虑的机制是使用共享文件系统或存储等;在解决了这些问题后,终于是把webserver增加为了两台,系统终于是又恢复到了以往的速度。

看看这一步完成后系统的图示:这一步涉及到了这些知识体系:负载均衡技术(包括但不限于硬件负载均衡、软件负载均衡、负载算法、linux转发协议、所选用的技术的实现细节等)、主备技术(包括但不限于ARP欺骗、linuxheart-beat等)、状态信息或缓存同步技术(包括但不限于Cookie技术、UDP协议、状态信息广播、所选用的缓存同步技术的实现细节等)、共享文件技术(包括但不限于NFS等)、存储技术(包括但不限于存储设备等)架构演变第六步:分库享受了一段时间的系统访问量高速增长的幸福后,发现系统又开始变慢了,这次又是什么状况呢,经过查找,发现数据库写入、更新的这些操作的部分数据库连接的资源竞争非常激烈,导致了系统变慢,这下怎么办呢?此时可选的方案有数据库集群和分库策略,集群方面像有些数据库支持的并不是很好,因此分库会成为比较普遍的策略,分库也就意味着要对原有程序进行修改,一通修改实现分库后,不错,目标达到了,系统恢复甚至速度比以前还快了。

看看这一步完成后系统的图示:这一步涉及到了这些知识体系:这一步更多的是需要从业务上做合理的划分,以实现分库,具体技术细节上没有其他的要求;但同时随着数据量的增大和分库的进行,在数据库的设计、调优以及维护上需要做的更好,因此对这些方面的技术还是提出了很高的要求的。

架构演变第七步:分表、DAL和分布式缓存随着系统的不断运行,数据量开始大幅度增长,这个时候发现分库后查询仍然会有些慢,于是按照分库的思想开始做分表的工作。

当然,这不可避免的会需要对程序进行一些修改,也许在这个时候就会发现应用自己要关心分库分表的规则等,还是有些复杂的。

于是萌生能否增加一个通用的框架来实现分库分表的数据访问,这个在ebay的架构中对应的就是DAL,这个演变的过程相对而言需要花费较长的时间。

当然,也有可能这个通用的框架会等到分表做完后才开始做。

同时,在这个阶段可能会发现之前的缓存同步方案出现问题,因为数据量太大,导致现在不太可能将缓存存在本地,然后同步的方式,需要采用分布式缓存方案了。

于是,又是一通考察和折磨,终于是将大量的数据缓存转移到分布式缓存上了。

看看这一步完成后系统的图示:这一步涉及到了这些知识体系:分表更多的同样是业务上的划分,技术上涉及到的会有动态hash算法、consistenthash 算法等;DAL涉及到比较多的复杂技术,例如数据库连接的管理(超时、异常)、数据库操作的控制(超时、异常)、分库分表规则的封装等;架构演变第八步:增加更多的WebServer在做完分库分表这些工作后,数据库上的压力已经降到比较低了,又开始过着每天看着访问量暴增的幸福生活了。

突然有一天,发现系统的访问又开始有变慢的趋势了,这个时候首先查看数据库,压力一切正常,之后查看webserver,发现apache阻塞了很多的请求,而应用服务器对每个请求也是比较快的,看来是请求数太高导致需要排队等待,响应速度变慢。

这还好办,一般来说,这个时候也会有些钱了,于是添加一些webserver服务器,在这个添加webserver服务器的过程,有可能会出现几种挑战:1、Apache的软负载或LVS软负载等无法承担巨大的web访问量(请求连接数、网络流量等)的调度了,这个时候如果经费允许的话,会采取的方案是购买硬件负载平衡设备,例如F5、Netsclar、Athelon之类的,如经费不允许的话,会采取的方案是将应用从逻辑上做一定的分类,然后分散到不同的软负载集群中;2、原有的一些状态信息同步、文件共享等方案可能会出现瓶颈,需要进行改进,也许这个时候会根据情况编写符合网站业务需求的分布式文件系统等;在做完这些工作后,开始进入一个看似完美的无限伸缩的时代,当网站流量增加时,应对的解决方案就是不断的添加webserver。

看看这一步完成后系统的图示:这一步涉及到了这些知识体系:到了这一步,随着机器数的不断增长、数据量的不断增长和对系统可用性的要求越来越高,这个时候要求对所采用的技术都要有更为深入的理解,并需要根据网站的需求来做更加定制性质的产品。

架构演变第九步:数据读写分离和廉价存储方案突然有一天,发现这个完美的时代也要结束了,数据库的噩梦又一次出现在眼前了。

由于添加的webserver太多了,导致数据库连接的资源还是不够用,而这个时候又已经分库分表了,开始分析数据库的压力状况,可能会发现数据库的读写比很高,这个时候通常会想到数据读写分离的方案。

当然,这个方案要实现并不容易,另外,可能会发现一些数据存储在数据库上有些浪费,或者说过于占用数据库资源,因此在这个阶段可能会形成的架构演变是实现数据读写分离,同时编写一些更为廉价的存储方案,例如BigTable这种。

看看这一步完成后系统的图示:这一步涉及到了这些知识体系:数据读写分离要求对数据库的复制、standby等策略有深入的掌握和理解,同时会要求具备自行实现的技术;廉价存储方案要求对OS的文件存储有深入的掌握和理解,同时要求对采用的语言在文件这块的实现有深入的掌握。

架构演变第十步:进入大型分布式应用时代和廉价服务器群梦想时代经过上面这个漫长而痛苦的过程,终于是再度迎来了完美的时代,不断的增加webserver就可以支撑越来越高的访问量了。

对于大型网站而言,人气的重要毋庸置疑,随着人气的越来越高,各种各样的功能需求也开始爆发性的增长。

这个时候突然发现,原来部署在webserver上的那个web应用已经非常庞大了,当多个团队都开始对其进行改动时,可真是相当的不方便,复用性也相当糟糕,基本是每个团队都做了或多或少重复的事情,而且部署和维护也是相当的麻烦。

因为庞大的应用包在N台机器上复制、启动都需要耗费不少的时间,出问题的时候也不是很好查,另外一个更糟糕的状况是很有可能会出现某个应用上的bug就导致了全站都不可用,还有其他的像调优不好操作(因为机器上部署的应用什么都要做,根本就无法进行针对性的调优)等因素,根据这样的分析,开始痛下决心,将系统根据职责进行拆分,于是一个大型的分布式应用就诞生了,通常,这个步骤需要耗费相当长的时间,因为会碰到很多的挑战:1、拆成分布式后需要提供一个高性能、稳定的通信框架,并且需要支持多种不同的通信和远程调用方式;2、将一个庞大的应用拆分需要耗费很长的时间,需要进行业务的整理和系统依赖关系的控制等;3、如何运维(依赖管理、运行状况管理、错误追踪、调优、监控和报警等)好这个庞大的分布式应用。

相关文档
最新文档