1.服务架构设计

在进行服务架构设计时需要从实用性、安全性、稳定性、可扩展性等方面考虑。

1)web服务的搭建

首先需要可虑实现公司当前的需求。公司要求对外发布公司的宣传网站及商城网站,我们可以通过搭建LAMP或LNMP环境满足这一需求。由于初期网站访问量比较小,可以通过基于域名的虚拟主机将宣传网站与商城网站搭建在同一台服务器上。同时考虑到安全性和稳定性可以使用反向代理与负载均衡技术避免单点故障的出现。

2)FTP与NFS的配置

除了发布web网站之外还要考虑到,后期教学视频的上传与web网站的升级,可以使用FTP服务实现文件的上传与下载工作。同时考虑为了网站的安全性与稳定性使用的负载均衡技术,可以使用nfs技术实现后台web服务器网站代码的同步。

3)DNS与日志的配置

为了方便用户访问网站还需要考虑到域名解析的问题,为了模拟通过域名访问到相应的网站需要自己搭建DNS服务器对宣传网站及商城网站的域名进行解析。考虑到服务器后期的维护可以使用rsyslog网络日志服务将各个服务器上产生的日志进行集中管理,若服务器在运行过程中出现问题可以通过收集到的日志来快速的定位故障。

2.服务的搭建与配置

完成服务架构设置后需要在虚拟机中进行服务的搭建与配置

1)web(lamp)服务器配置,第一台与第二台做后端成员web服务器配置基于端口的虚拟主机:

第一台:主机名s-lamp-1 ip地址:192.168.1.11

第二台:主机名s-lamp-2 ip地址:192.168.1.12

2)Nginx负载均衡服务器配置,第三台做代理服务器,配置反向代理与负载均衡及基于域名的虚拟主机:

主机名s-nginx-proxy ip地址:192.168.1.13

3)FTP服务器与NFS配置,实现文件的上传下载与数据同步:

主机名s-ftp-nfs ip地址:192.168.1.14

4)DNS服务与rsyslog配置,完成域名解析与日志收集工作

主机名s-dns-rsyslog ip地址:192.168.1.15

3.核心服务配置过程

1)web服务配置

第一台:主机名s-lamp-1 ip地址:192.168.1.11

lamp环境搭建

[root@s-lamp-1 ~]# yum install -y httpd php php-fpm php-gd php-mbstring mariadb mariadb-server
[root@s-lamp-1 ~]# systemctl start httpd.service 
[root@s-lamp-1 ~]# systemctl enable httpd.service 
[root@s-lamp-1 ~]# vi /var/www/html/info.php
<?php
phpinfo()
?>

浏览器测试:

images-web06.png

[root@s-lamp-1 ~]# systemctl start mariadb.service 
[root@s-lamp-1 ~]# systemctl enable mariadb.service 
[root@s-lamp-1 ~]# mysql
[root@s-lamp-1 ~]# mysqladmin -u root password
[root@s-lamp-1 ~]# mysql -u root -p123

基于端口的虚拟主机配置

[root@s-lamp-1 ~]# vi /etc/httpd/conf/httpd.conf 
Listen 80
Listen 81
#DocumentRoot "/var/www/html"
[root@s-lamp-1 ~]# vi /etc/httpd/conf.d/vhost.conf
 <VirtualHost 192.168.1.11:80>
 ServerName 192.168.1.11:80
 DocumentRoot /web1
<Directory "/web1">
  AllowOverride None
  Require all granted
</Directory>
 ErrorLog /var/log/httpd/error1.log
 CustomLog /var/log/httpd/access1.log combined
</VirtualHost>
<VirtualHost 192.168.1.11:81>
 ServerName 192.168.1.11:81
 DocumentRoot /web2
<Directory "/web2">
  AllowOverride None
  Require all granted
</Directory>
 ErrorLog /var/log/httpd/error2.log
 CustomLog /var/log/httpd/access2.log combined
</VirtualHost>
[root@s-lamp-1 ~]# mkdir /web1
[root@s-lamp-1 ~]# cat >> /web1/index.html << eof
	<h1>this is 192.168.1.11-web1!</h1>
eof

[root@s-lamp-1 ~]# mkdir /web2
[root@s-lamp-1 ~]# cat >> /web2/index.html << eof
	<h1>this is 192.168.1.11-web2!</h1>
eof

[root@s-lamp-1 ~]# systemctl restart httpd.service

浏览器测试虚拟主机

images-web07.jpg

images-web08.png

第二台:主机名s-lamp-2 ip地址:192.168.1.12

lamp环境搭建

[root@s-lamp-2 ~]# yum install -y httpd php php-fpm php-gd php-mbstring mariadb mariadb-server
[root@s-lamp-2 ~]# systemctl start httpd.service 
[root@s-lamp-2 ~]# systemctl enable httpd.service 
[root@s-lamp-2 ~]# cat >> /var/www/html/info.php << eof
	<?php
	phpinfo()
	?>
eof

浏览器测试

images-web09.png

[root@s-lamp-2 ~]# systemctl start mariadb.service 
[root@s-lamp-2 ~]# systemctl enable mariadb.service 
[root@s-lamp-2 ~]# mysql
[root@s-lamp-2 ~]# mysqladmin -u root password
[root@s-lamp-2 ~]# mysql -u root -p123

基于端口的虚拟主的配置

[root@s-lamp-2 ~]# vi /etc/httpd/conf/httpd.conf 
Listen 80
Listen 81
DocumentRoot "/var/www/html"
[root@s-lamp-2 ~]# vi /etc/httpd/conf.d/vhost.conf
<VirtualHost 192.168.1.12:80>
 ServerName 192.168.1.12:80
 DocumentRoot /web1
<Directory "/web1">
  AllowOverride None
  Require all granted
</Directory>
 ErrorLog /var/log/httpd/error1.log
 CustomLog /var/log/httpd/access1.log combined
</VirtualHost>
<VirtualHost 192.168.1.12:81>
 ServerName 192.168.1.12:81
 DocumentRoot /web2
<Directory "/web2">
  AllowOverride None
  Require all granted
</Directory>
 ErrorLog /var/log/httpd/error2.log
 CustomLog /var/log/httpd/access2.log combined
</VirtualHost>

[root@s-lamp-2 ~]# mkdir /web1
[root@s-lamp-2 ~]# cat >> /web1/index.html << eof
	<h1>this is 192.168.1.12-web1!</h1>
eof
[root@s-lamp-2 ~]# mkdir /web2
[root@s-lamp-2 ~]# cat >> /web2/index.html << eof
	<h1>this is 192.168.1.12-web2!</h1>
eof
[root@s-lamp-2 ~]# systemctl restart httpd.service

浏览器测试

images-web10.png

images-web11.png

2)Nginx负载均衡服务器配置

主机名s-nginx-proxy ip地址:192.168.1.13

[root@s-nginx-proxy ~]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@s-nginx-proxy ~]# yum install -y nginx
[root@s-nginx-proxy ~]# cd /etc/nginx/conf.d/
[root@s-nginx-proxy conf.d]# mv default.conf default.conf.bak
[root@s-nginx-proxy conf.d]# egrep -v "#|^$" default.conf.bak > web1.conf
[root@s-nginx-proxy conf.d]# egrep -v "#|^$" default.conf.bak > web2.conf
[root@s-nginx-proxy ~]# vi /etc/nginx/conf.d/web1.conf 
upstream web1 {
	server 192.168.1.11:80 weight=1;
	server 192.168.1.12:80 weight=1;
}

server {
  listen    80;
  server_name  www.web1.com;
  location / {
	proxy_pass http://web1;
	proxy_set_header X-Real-IP $remote_addr;
  }

[root@s-nginx-proxy ~]# vi /etc/nginx/conf.d/web2.conf 
upstream web2 {
	server 192.168.1.11:81 weight=1;
	server 192.168.1.12:81 weight=1;
}

server {
  listen    80;
  server_name  www.web2.com;
  location / {
	proxy_pass http://web2;
	proxy_set_header X-Real-IP $remote_addr;
  }

[root@s-nginx-proxy ~]# systemctl restart nginx.service 
[root@s-nginx-proxy ~]# systemctl enable nginx.service 

本机测试

[root@s-nginx-proxy ~]# cat >> /etc/hosts << eof
	192.168.1.13 www.web1.com
	192.168.1.13 www.web2.com
eof
[root@s-nginx-proxy ~]# curl www.web1.com
<h1>this is 192.168.1.11-web1!</h1>
[root@s-nginx-proxy ~]# curl www.web2.com
<h1>this is 192.168.1.12-web2!</h1>

3)FTP服务器配置

主机名s-ftp-nfs ip地址:192.168.1.14

ftp配置

[root@s-ftp-nfs ~]# yum install -y vsftpd
[root@s-ftp-nfs ~]# systemctl start vsftpd.service 
[root@s-ftp-nfs ~]# systemctl enable vsftpd.service 
[root@s-ftp-nfs ~]# useradd -d /web web
[root@s-ftp-nfs ~]# passwd web
[root@s-ftp-nfs ~]# mkdir /web/web1
[root@s-ftp-nfs ~]# mkdir /web/web2
[root@s-ftp-nfs ~]# chown web:web /web/web1/
[root@s-ftp-nfs ~]# chown web:web /web/web2/

用户web登陆ftp服务器测试

images-web12.pngimages-web1.png
images-web14.pngimages-web15.png

其他配置具体参照课堂老师讲解