`
关于应用系统分布式构建运维
随着信息技术和科技的不断进步,网络技术和科技的不断完善,许多类型的服务不断涌现。在这样的环境下,LNMP系统架构成为时代的要求,并不断提高发展,已成为国内外最大的服务平台之一。
LNMP,LNMP就是Linux,Nginx,Mysql,PHP的缩写,当然也是现在非常流行的web框架之一。
WordPress很多强大的功能都令我们吃惊,让我们感到简单而令人难以置信。不仅如此,WordPress主题风格样式模板也是时间上非常常见的模板。
WordPress也是一个极为方便的平台,里面的也有许多免费的主题供人们选择和修改。基本用鼠标就可把一个主题改的差不多。
本论文就介绍应用系统分布式构建运维,在LNMP的基础上我们可以结合WordPress进行网站的搭建。
关键词:Linux,Nginx,mysql,WordPress
摘要... I
目录... II
第一章 绪论... 1
1.1.分布式应用系统介绍... 1
1.2.分布式构建运维... 1
第二章 部署主从数据库.... 2
2.1.了解Mysql数据库... 2
2.2.了解主从数据库集群配置架构... 3
2.3. 规划节点基础准备... 3
2.4. 基础环境安装... 4
2.5. 初始化数据库并配置主从服务... 6
2.6. 验证数据库主从服务... 8
第三章 部署Nginx服务... 12
3.1.了解Nginx服务... 12
3.2.Nginx服务的编辑安装与配置... 13
第四章 安装PHP环境... 15
4.1.了解PHP. 15
4.2.PHP环境的编译安装与配置... 16
第五章 分布式部署LNMP+WordPress安装... 19
5.1.了解分布式部署wordpress的架构... 19
5.2.了解分布式部署Wordpress应用的配置与操作... 19
纵观人类计算机的发展历史,每隔十年至十五年,信息产业就会发生周期性的变革,1950年至1970年期间,企业主要采用大型主机-终端的体系结构,企业应用系统则采用单一、集中的方式为用户提供资源共享服务。80年代初期,开放系统与关系型数据库管理系统被企业大量采用,有别于集中式系统,应用程序逻辑分散在主从两端。随着Windows的普及,90年代则是图形化的应用时代,Client/Server体系结构也被广泛采用。90年代后期,信息产业出现了分布式对象技术,应用程序可以分布在不同的系统平台上,通过分布式技术实现异构平台间对象的相互通信。将企业已有系统集成于分布式系统,可以极大地提高企业应用系统的扩展性。90年代末出现的多层分布式应用为企业进一步简化应用系统的开发指明了方向。
基于window平台搭建的大型分布式系统不多,之前了解过myspace、stackoverflow等大型网站。搭建一个大型平台需要综合考虑很多方面,不单纯是软件架构,还包括网络和硬件设备等。由于现代大部分应用建设都面临用户多、高并发、高可用的需求,传统软件架构已不能满足需求,需要支持分布式软件架构,能支持横向扩展,具有高可用、伸缩性、稳定性等特点。
1.支持很多编程语言,包括C ++,Perl,Python和Java,Eiffel,PHP和Ruby,.NET,和Tcl。
2.支持多线程,充分利用 CPU 资源。
3.一种用于各种数据库连接途径,如TCP / IP,ODBC,JDBC。
4.支持使用大型数据库。能够支持数千万条记录的大型数据库处理数据的操作。
5.支持多种存储引擎。
6.Mysql是开源的,所以没有额外的费用。
7.对 PHP 有很好的支持。
8. MySQL是可定制的,
9.复制多线程从机,可提高性能
10.3倍更快的性能
11.新的优化器
12.原生JSON支持
13.多源复制
14.GIS的空间扩展
1.规划节点
Linux操作系统的单节点的规划,在这里我将会做一个表格,我们命名为表1。
IP |
主机名 |
节点 |
192.168.100.10 |
Mysql1 |
主数据库节点 |
192.168.100.20 |
Mysql2 |
从数据库节点 |
现在我就就把节点规划好了。
2.基础准备
我下面将会使用我本地PC机中的VMWare Workstation软件进行实际操作,镜像使用本机存在的CentOS-7-x86_64-DVD-1511.iso。虚拟机配置为1核/2G内存/20G硬盘,详细配置在下方,我们命名为表2。
软件 |
VMWare Workstation |
镜像 |
CentOS-7-x86_64-DVD-1511.iso |
虚拟机CPU |
1核 |
虚拟机内存 |
2G |
虚拟机硬盘 |
20G |
1.修改主机名
使用远程连接工具 CRT 连接到 192.168.100.10、192.168.100.20 这两台虚拟机,并对这 两台虚拟机进行修改主机名的操作,192.168.100.10 主机名修改为 mysql1,192.168.100.20 主机名修改为 mysql2。命令如下:
先来看mysql1节点:
再看mysql2节点:
2.关闭防火墙及SElinux服务
两个节点都需要关闭防火墙firewalld和SElinux服务,命令如下:
#setenforce 0
#systemctl stop firewalld
3.配置hosts文件
两个节点都需要配置/etc/hosts文件,修改方式如下:
vi /etc/hosts在里面添加以下 两行
192.168.100.10 mysql1
192.168.100.20 mysql2
4.配置yum源并安装数据库服务
cd /etc/yum.repos.d
mkdir xx
mv *.repo xx/
vi local.repo
[centos]
name=centos
baseurl=file:///mnt/centos
gpgcheck=0
enabled=1
保存退出
mkdir /mnt/centos
要连接光盘
mount /dev/cdrom /mnt/centos/
yum clean all
yum repolist
到此yum源配置完成
配置完成后,两个节点都需要安装数据库服务,操作如下:
yum install -y mariadb mariadb-server
这 两个节点都需要分别启动数据库服务并设置开机自启,命令如下:
systemctl start mariadb
systemctl enable maradb
1.初始化数据库
两个节点初始化数据库,在这里我们设置配置数据库root密码为000000,如下:
2.配置 mysql1 主节点 修改 mysql1 节点的数据库配置文件,在配置文件/etc/my.cnf 中的[mysqld]增添如下内容。
[root@mysql1 ~]# cat /etc/my.cnf
[mysqld]
log_bin = mysql-bin 记录操作日志
binlog_ignore_db = mysql #不同步 mysql 系统数据库
server_id = 10
#数据库集群中的每个节点 id 都要不同, 一般使用IP的最后段数字,例如
192.168.100.10,server_id就写10
3. 重启数据库服务,并进入数据库,命令如下:
[root@mysql1 ~]# systemctl restart mariadb
[root@mysql1 ~]# mysql -uroot -p000000
这里要在在mysql节点,授权在任何客户端机器上可以以 root 用户登录到数据库,然后在主节点上创建一个 user 用户连接节点 mysql2,并赋予从节点同步主节点数据库的权限,这次我们就要使用grant all privileges on *.* to root@‘%‘ identified by "000000";
grant replication slave on *.* to ‘user‘@‘mysql2‘ identified by ‘000000‘;这两段命令。
4.配置 mysql2 从节点
修改 mysql2 节点的数据库配置文件,在配置文件/etc/my.cnf 中的[mysqld]增添如,这里和主节点唯一不同的就是server_id要用mysql2 IP地址的最后段数字。
完成上面的操作后需要在从节点 mysql2 上登录 MariaDB 数据库,配置从节点连接主节点的连接信息。 master_host 为主节点主机名 mysql1,master_user 为上一步中创建的用户 user,命令如下:
[root@mysql2 ~]# systemctl restart mariadb
[root@mysql2 ~]# mysql -uroot -p000000
MariaDB [(none)]> change master to master_host=‘mysql1‘,master_user=‘user‘,master_password=‘000000‘;
配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用 show slave status\G 命令,对从节点服务状态进行查看,如果 Slave_IO_Running 和 Slave_SQL_Running 的状态都为 YES,这说明从节点服务开启成功。
1.主节点创建数据库
先在主节点 mysql1 中创建库 test,并在库 test 中创建表 company,插入表数据,创建完 成后,查看表 company 数据,命令如下:
2.从节点验证复制功能 登录 mysql2 节点的数据库,查看数据库列表。找到 test 数据库,查询表,并查询内容 验证从数据库的复制功能,命令如下:
可以查看到主数据库中刚刚创建的库、表、信息,验证从数据库的复制功能成功。
Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器。
Nginx 已经在俄罗斯最大的门户网站── RamblerMedia(www.rambler.ru)上运行了多年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器,由此我们可以看出nginx服务的强大。
在国内,已经有很多企业使用nginx服务器比如:新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网等多家网站、频道使用 Nginx 服务器
1.Linux操作系统下单节点的规划,在此我们命名为表3
IP |
主机名 |
节点 |
192.168.100.30 |
nginx |
Nginx节点 |
2.基础准备,这里我用的和mysql使用的软件镜像虚拟机配置一致。
3.基础环境安装
装好虚拟机配好网络使用远程工具连接到虚拟机,成功后我这里先把主机名修改成nginx:
4.关闭防火墙和SElinux服务
#setenforce 0
#systemctl stop firewalld
5.安装配置基础服务,配置yum源的方法和上方配置的yum一样,yum配置成功后,编译安装基础环境。
这里安装nginx的编译环境gcc
yum install gcc gcc-c++
安装 pcre pcre-devel
yum install -y pcre pcre-devel
安装 zlib
yum install -y zlib zlib-devel
创建指定用户,这个 nginx 用户要和 PHP 服务器上创建的 nginx 两者 id 一致,这里先 创建用户,命令如下:
[root@nginx ~]# groupadd -g 1001 nginx
[root@nginx ~]#useradd -u 900 nginx -g nginx -s /sbin/nologin
[root@nginx ~]# tail -1 /etc/passwd
nginx:x:900:1001::/home/nginx:/sbin/nologin
6.安装配置nginx服务
使用远程工具将nginx-1.12.2.tar.gz压缩包上传至nginx节点/usr/local/src/目录下,并解压到/usr.local/src/目录下
[root@nginx src]# tar -zxvf nginx-1.12.2.tar.gz
然后需要cd进入这个包的目录,进行编译&&安装
[root@nginx src]# cd nginx-1.12.2/
[root@nginx-1.12.2]#./configure
随后我们进行下面的安装
[root@nginx-1.12.2]# make && make install
编译完成后,我们可以通过创建软连接并启动测试,(如果在这里netstat无法使
用,使用yum安装net-tools工具即可)
这里可以看到80端口启动,这也就说明nginx服务启动成功。
优势:
开放源代码
所有的PHP的源代码事实上都是可以得到的
免费性PHP是免费的而且开源。
更快的操作和技术本身的更快学习的特点。而且它嵌入在HTML:
跨平台性强
PHP语言在服务器端运行,它可以在LINUX,WINDOWS,Mac OS,等很多平台上运行。
PHP效率极高,在效率极高的特点下它消耗的系统资源相当的少。
1.Linux操作系统PHP单节点规划,在这里我命名为图3
IP |
主机名 |
节点 |
192.168.100.40 |
php |
PHP环境节点 |
在这里使用的软件虚拟机配置以及镜像和上方搭建的服务全部相同。
2.基础环境配置
配置号虚拟机网络用远程工具连接虚拟机,首先还是将主机名修改成php
3.关闭防火墙和SElinux服务
#setenforce 0
#systemctl stop firewalld
4.安装基础服务,配置yum源,和上方服务配置方法相同,配置成功后编译安装基础环境
[root@php ~]#yum -y install gcc gcc-c++
[root@php ~]#yum -y install libxml2-devel
[root@php ~]#yum -y install libcurl-devel
[root@php ~]#yum -y install openssl-devel
[root@php ~]#yum -y install bzip2-devel
5.使用远程传输工具,将提供的 libmcrypt-2.5.8.tar.gz 压缩包上传,上传的时候放到/usr/local/src这个目录里面,解压,进入解压后的相应目录,编译安装该服务,操作如下:
[root@php src]# tar -zxvf libmcrypt-2.5.8.tar.gz
[root@php src]# cd libmcrypt-2.5.8/
[root@php libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt && make && make
install
6.安装PHP环境
使用远程传输工具,将提供的 php-5.6.27.tar.gz 压缩包上传至 php 节点的/usr/local/src 目 录下,解压该压缩包,进入解压后的目录,编译安装 PHP 服务,操作如下:
[root@php src]# tar -zxvf php-5.6.27.tar.gz
[root@php src]# cd php-5.6.27/
[root@php php-5.6.27]# ./configure
没有任何报错的提示,就进行下一步
[root@php php-5.6.27]# make && make install
这个地方编译安装时间较长
7.创建用户 ID
创建用户 ID,注意这个 nginx 的 id 号要和 nginx 主机(192.168.100.30)上
保持一致
[root@php php-5.6.27]# groupadd -g 1001 nginx
[root@php php-5.6.27]# useradd -u 900 nginx -g nginx -s /sbin/nologin [root@php php-5.6.27]# tail -1 /etc/passwd
8.配置PHP环境
PHP压缩包中提供了PHP环境需要用到的模板文件,需要对文件进行改名后才能使用, 复制文件并改名,操作如下:
[root@php php-5.6.27]# cp php.ini-production /etc/php.ini
[root@php php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
赋予文件执行权限,操作如下:
[root@php php-5.6.27]# chmod +x /etc/init.d/php-fpm
添加 PHP 服务到启动列表,并设置开机启动,操作如下:
[root@php php-5.6.27]# chkconfig --add php-fpm
[root@php php-5.6.27]# chkconfig php-fpm on
修改 PHP 的主配置文件 php-fpm.conf,操作如下:
[root@php php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@php php-5.6.27]# vi /usr/local/php5.6/etc/php-fpm.conf
[root@php ~]# grep -n ‘^‘[a-Z] /usr/local/php5.6/etc/php-fpm.conf
25:pid = run/php-fpm.pid
149:user = nginx
150:group = nginx
164:listen = 192.168.100.40:9000
224:pm = dynamic 19
235:pm.max_children = 50
240:pm.start_servers = 5
245:pm.min_spare_servers = 5
250:pm.max_spare_servers = 35
9.启动PHP服务
完成上面的配置保存了之后,我就对PHP服务进行启动了,当然也要进行检查启 动是否成功。
在这里可以看到9000端口已经启动了,说明PHP环境安装已经完成了。
1.规划节点
在这里我将上方所有节点整合到一个表里,我命名这个表名为表S
IP |
主机名 |
节点 |
192.168.100.10 |
mysql1 |
数据库主节点 |
192.168.100.20 |
mysql2 |
数据库从节点 |
192.168.100.30 |
nginx |
nginx服务节点 |
192.168.100.40 |
php |
PHP环境节点 |
2.基础准备
我在以在上几个服务配置中,已经完成了主从数据库的安装配置、Nginx服务的安装、PHP环境的安装,现在我将进行分布式LNMP环境的调试和WordPress应用的部署。
3.分布式LNMP环境的调试
使用远程工具连接虚拟机nginx节点,并进行修改配置文件。操作如下
[root@nginx ~]# vi /usr/local/nginx/conf/nginx.conf
location / {
root /www; #更改网页目录
index index.php index.html index.htm; #添加 index.php
}
location ~ \.php$ { #去掉 location{}前的注释符
root /www; #更改目录为/www
fastcgi_pass 192.168.100.40:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params; }
全部修改完成后,wq保存退出。
接着在/usr/local/nginx/conf/fastcgi_params 添加配置,操作如下:
[root@nginx ~]# vi /usr/local/nginx/conf/fastcgi_params
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #添加这 行代码
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
4.创建目录,在nginx和php节点,创建/www目录,并修改用户用户组,操作如下
nginx节点:
[root@nginx ~]# mkdir /www
[root@nginx ~]# chown nginx:nginx /www/
php 节点:
[root@php ~]# mkdir /www
[root@php ~]# chown nginx:nginx /www/
5. 部署 WordPress
使用远程传输工具,把wordpress-4.7.3-zh_CN.zip压缩包上传至nginx节点和php节点的/root目录下并解压,将压缩后的文件复制到/www目录,操作如下:(在这里unzip不能使用,用yum源安装unzip工具就解决了)
nginx 节点:
[root@nginx ~]# unzip wordpress-4.7.3-zh_CN.zip
[root@nginx ~]# mv wordpress/* /www/
php 节点:
[root@php ~]# unzip wordpress-4.7.3-zh_CN.zip
[root@php ~]# mv wordpress/* /www/
在 nginx 节点, 修 改 WordPress 应 用 的 配 置 文 件 , WordPress 应 用 提 供 了 wp-config-sample.php 模版文件,将模板文件复制为 wp-config.php,并修改,操作如下:
[root@nginx ~]# cp /www/wp-config-sample.php /www/wp-config.php
[root@nginx ~]# vi /www/wp-config.php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress 数据库的名称 */
define(‘DB_NAME‘, ‘wordpress‘);
/** MySQL 数据库用户名 */ define(‘DB_USER‘, ‘root‘);
/** MySQL 数据库密码 */ define(‘DB_PASSWORD‘, ‘000000‘);
/** MySQL 主机 */ define(‘DB_HOST‘, ‘192.168.200.30‘);
/** 数据库整理类型。如不确定请勿更改 */
define(‘DB_COLLATE‘, ‘‘);
按照上述文件修改配置文件,保存退出后,将该配置文件 scp 至 php 节点的/www 目录 下,命令如下:
[root@nginx ~]# scp /www/wp-config.php root@192.168.100.40:/www/
6. 创建 WordPress 数据库
在 mysql1 节点,登录数据库,使用命令创建 WordPress 数据库,操作如下: [root@mysql1 ~]# mysql -uroot -p000000
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> Ctrl-C -- exit! Aborted
7.验证 WordPress 应用
在 Nginx 节点重启 Nginx 服务,操作如下:
[root@nginx ~]# nginx -s reload
在浏览器中输入 192.168.100.30地址进行访问,会出现著名的 WordPress 五分钟安装程 序,填写必要的信息,然后单击左下角“安装 WordPress”按钮,进行 WordPress 应用的安装。
进行安装,安装完成后,进入WordPress后台
到这里,分布式部署LNMP+WordPress应用完成。
原文:https://www.cnblogs.com/yinmingyang/p/14265402.html