项目实战,LANMP+NGINX+SQUID

项目用到的服务:

LAMP+nginx+squid+代理MYSQL+rsync

搭建LAMP平台,是目前非常流行的Web开发平台,成本低廉,扩展能力好,灵活,安全性高,

深受企业和管理人员的喜爱,容易形成整体的系统结构

    nginx实现了整体网络的负载均衡,还以搭建存放一些静态网页,提高客户端对静态网页的访问请求时间

    最后通过squid做整个网络的代理人,提高网站的访问都提高速度(缓冲服务),并且提高网络的安全性

    myslq主主结构为整体网络数据作实时备份,然后通过myslq代理服务器为客户机请求做读写分离

    整体上增加了网络的安全、稳定的运行、亢并发数和减少用户请求时间,还做到了数据的冗余。诸多好处不一一说明

    

系统平台:Red Hat Enterprise Linux 5.9 Red Hat Enterprise Linux 6.4

用到的源码包:httpd-2.2.25.tar.gz  mysql-5.1.62.tar.gz  php-5.4.19.tar.gz

Mysql软件包:perl-DBD-MySQL-4.013-3.el6.x86_64

MySQL-test-5.6.15-1.el6.x86_64

qt-mysql-4.6.2-25.el6.x86_64

MySQL-client-5.6.15-1.el6.x86_64

MySQL-shared-5.6.15-1.el6.x86_64

MySQL-devel-5.6.15-1.el6.x86_64

MySQL-shared-compat-5.6.15-1.el6.x86_64

MySQL-embedded-5.6.15-1.el6.x86_64

MySQL-server-5.6.15-1.el6.x86_64

mysql代理服务器:mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz

nginx软件包:nginx-1.0.5.tar.gz

squid软件包(系统自带的软件包):squid-2.6.STABLE21-6.el5.x86_64.rpm

拓扑:

说明:web服务器分别假设架设在IP192.168.1.10,192.168.1.20上

在192.168.1.201,192.168.1.202做mysql主主结构(备份数据),通过myslq(192.168.1.103)

代理服务器为web服务做支持

Nginx(192.168.1.102)为web服务器做轮训

squit(192.168.1.103,1.1.1.254)为服务器做反向代理,并做缓存服务器

在服务器192.168.1.10(web)服务器搭建rsync服务,做到与192.168.1.20(web)进行实时同步数据

环境配置:yum库要配置好,安装gcc c++等

service iptables stop

关闭selinux

基本思路:

1、 卸载/移除系统本身自带的冲突软件包

2、 编译安装Apache HTTP Server MySQL

3、 编译安装PHP,注意连接A、M组件

4、 编译安装php

5、 LAMP协作配置

6、 安装mysql软件包

7、 在服务器上配置mysql主主结构服务器

8、 配置mysql代理服务器

9、 搭建nginx(192.168.1.102)为内网web服务做轮询处理

10、搭建squid缓存服务器

11、测试web服务能否和数据库连接成功

12、在web上(192.168.1.10)搭建rsync服务器 编写脚本实现自动备份192.168.1.10服务器上的网页

到192.168.1.20服务器上(做到实时更新)

13、为了保证数据库的冗余,每天半夜23点执行备份脚本mysqlbak.sh,对数据库服务器192.168.1.201做

增量备份,(脚本mysqlbak.sh的功能如下:备份每天新生成的binlog文件,把备份的文件打包并压缩到系统

的/dbbak/mysql目录下;

用系统日期做打包压缩文件名;然后把打包压缩的文件上传到代理服务器的/backup目录下)

14、 增加周期计划任务

每周一早上7点,对数据库服务(192.168.1.201)做完整备份;备份文件存放到本地的/bdbak里,并把文件

上传到代理服务器

每天半夜23点执行备份脚本mysqlbak.sh,对数据库服务器(192.168.1.201)做增量备份

总体搭建过程:

1、 移除冲突软件:卸载RHEL自带的LAMP组件,避免与编译安装版共存,易造成混淆。

[[email protected]_100 ~]# yum -y remove httpd mysql-server mysql php

2、 编译安装httpd

[[email protected]_100 ~]# tar -zxf httpd-2.2.25.tar.gz -C /usr/local/

[[email protected]_100 ~]# cd /usr/local/httpd-2.2.25/

[[email protected]_100 httpd-2.2.25]#./configure --prefix=/usr/local/httpd --enable-so  --enable-rewrite  --enable-cgi

--enable-ssl  --enable-charset-lite               //配置

//--enable-so 支持动态加载模块

//--enable-rewrite 支持网站地址重写

//--enable-cgi 支持CGI程序脚本

//--enable-ssl 支持SSL加密

//--enable-charset-lite 支持多语言编码

[[email protected]_100 httpd-2.2.25]# make && make install

[[email protected]_100 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/myhttpd

[[email protected]_100 ~]# vim /etc/init.d/myhttpd        实现开机自启

#!/bin/sh

# chkconfig: 35 85 15

# description: Apache is a World Wide Web Server  //添加这2行内容

……………….

[[email protected]_100 ~]# chkconfig --add httpd

[[email protected]_100 ~]# chkconfig --list httpd

[[email protected] ~]# vim /usr/local/httpd/conf/httpd.conf

……………….

98 ServerName bbs.baidu.com:80

……………

[[email protected]_100 ~]# tail -1 /etc/hosts

192.168.1.10 bbs.baidu.com bbs

[[email protected]_100 ~]# elinks --dump bbs.baidu.com

It works!

3、 编译安装mysql

[[email protected]_100 ~] # useradd -M -u 49 -s /sbin/nologin mysql

[[email protected]_100 ~] # yum -y install ncurses-devel libtermcap-devel

[[email protected]_100 ~]# tar -zxf mysql-5.1.62.tar.gz

[[email protected]_100 ~]# cd mysql-5.1.62

[[email protected]_100 mysql-5.1.62]# ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --                    with-extra-charsets=gbk,gb2312

//--with-charset=utf8:指定默认字符集

//--with-collation=utf8_general_ci:指定默认的校对规则集

//--with-extra-charsets=gbk,gb2312:设置支持的其他字符集

//如果编译时报错对 “C++ 内建类型 ‘bool’ 的重声明“,就重新配置,添加:--with-unix-socket-path=/tmp/mysql.sock

[[email protected]_100 mysql-5.1.62]# make && make install

初始化设置

[[email protected]_100 mysql-5.1.62]# cd support-files/

[[email protected]_100 support-files]# mv my-medium.cnf /etc/my.cnf    //复制配置文件模板

[[email protected]_100 support-files]# cd /usr/local/mysql/bin/

[[email protected]_100 support-files] # ./mysql_install_db --user=mysql   //初始化库表权限调整及执行优化

[[email protected]_100 bin]# chown -R :mysql /usr/local/mysql/

[[email protected]_100 bin]# chown -R :mysql /usr/local/mysql/var/      //更改用户mysql权限

[[email protected]_100 bin]# ln -s /usr/local/mysql/bin/* /usr/local/bin/

[[email protected]_100 bin]# ln -s /usr/local//mysql/lib/mysql/* /usr/lib64/

[[email protected]_100 bin]# ln -s /usr/local/mysql/include/mysql/* /usr/include/

[[email protected]_100 bin]# cd /root/mysql-5.1.62/support-files/    //之前解压包路径

[[email protected]_100 support-files]# cp mysql.server  /etc/init.d/mysqld

[[email protected]_100 support-files]# chmod +x /etc/init.d/mysqld

[[email protected]_100 support-files]# chkconfig --add mysqld

[[email protected]_100 support-files]# service mysqld restart       ////若启动失败,先killall -9 mysqld

再service mysqld     restart(可能是原有mysql占用端口)

[[email protected]_100 ~]# mysql -uroot –hlocalhost                //登录

mysql> set password for [email protected]"localhost"=password("123456");      //为登录mysql加密码

4、 编译安装php

[[email protected]_100 ~]# tar -zxf php-5.4.19.tar.gz -C ./

[[email protected]_100 ~]# cd php-5.4.19

[[email protected]_100 php-5.4.19]# yum -y install libxml2-devel

[[email protected]_100 php-5.4.19]#./configure --prefix=/usr/local/php --enable-mbstring --enable-sockets --with-    apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php

//--prefix=:指定安装目录

//--enable-mbstring:支持多字节字符

//--with-apxs2:指定httpd的模块工具位置

//--with-mysql:指定mysql的安装位置

//--enable-sockets:启用套接字支持

// --with-config-file-path=:指定配置路径

[[email protected]_100 php-5.4.19]# make && make install

[[email protected]_100 php-5.4.19]# cp php.ini-development /usr/local/php/php.ini//复制模板

[[email protected]_100 php-5.4.19]# vim  /usr/local/php/php.ini   //有很多选项,有的是默认开启的,可以自定义

.. ..

692 default_charset = "UTF-8"//默认字符 集

672 post_max_size = 8M    //最大POST 提交的容量

791 file_uploads = On    // 允许上传

800 upload_max_filesize = 5M//可上传的 最大文件

….

   LAMP协作配置

[[email protected]_100 php-5.4.19] # vim   /usr/local/httpd/conf/httpd.conf

.. ..

LoadModule  php5_module   modules/libphp5.so

168     DirectoryIndex index.html index.php  // 更改支持PHP首页

311     AddType application/x-httpd-php  .php// 识别PHP网页类型(参考上一行,自己添加)

.. ..

[[email protected]_100 php-5.4.19]# service httpd restart

5、 协作测试:

[[email protected]_100 ~] # vim /usr/local/httpd/htdocs/test1.php   //编写php测试网页

<?php

phpinfo();

?>

从第一步”移除冲突软件”到这里在另一台服务器192.168.1.20上做相同配置,注意路径和IP

6、安装mysql软件包

在192.168.10服务区安装mysql软件(并且也要在192.168.1.20服务器上安装mysql软件)

[[email protected]_201 ~]# yum  -y remove mysql

[[email protected]_201 ~]# mv /etc/my.cnf  /etc/my.cnf.old  //卸载原有mysql软件,并移除配置文件(不移除也可    以,后面覆盖即可)

[[email protected]_201 ~]# cd /mysql/mysql/

[[email protected]_201 ~]# tar -xvf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar -C /soft

[[email protected]_201 ~]# cd /soft/

[[email protected]_201 ~]# ll

MySQL-client-5.6.15-1.el6.x86_64.rpm

MySQL-devel-5.6.15-1.el6.x86_64.rpm

MySQL-embedded-5.6.15-1.el6.x86_64.rpm

MySQL-server-5.6.15-1.el6.x86_64.rpm

MySQL-shared-5.6.15-1.el6.x86_64.rpm

MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm

MySQL-test-5.6.15-1.el6.x86_64.rpm

[[email protected]_201 ~]# rpm -Uvh MySQL-*.rpm

[[email protected]_201 ~]# cd /usr/share/mysql/my-default.cnf /etc/my.cnf //复制配置文件

[[email protected]_201 ~]# service mysqld restart

7、在服务器192.168.1.201,192.168.1.202上配置mysql主主结构服务器

在服务器192.168.1.201上配置流程:

[[email protected]_201 ~]# vim /etc/my.cnf

………..

7 [mysqld]

8 log_bin     //启用binlog日志

9 server_id=201//ID标识,同一网段ID不能相同,建议以IP为值

…………….

[[email protected]_201 ~]# cat /root/.mysql_secret

# The random password set for the root user at Thu May 22 20:32:25 2014 (local time): Toa2Gk4s     //获取mysql初始密码

[[email protected]_201 ~]# mysqp -hlocalhost -pToa2Gk4s

mysql> set password for root @"localhost"=password("123456");         //首次登录要修改密码

mysql> grant all on *.* to [email protected]"192.168.1.203" identified by "123456";    //为代理服务器授权

mysql> grant replication slave on *.* to [email protected]"192.168.1.202" identified by "123456";

//授权,允许从192.168.122.209登录,授权用户对所有库只有拷贝数据的权限

[[email protected]_201 ~]# service iptables stop

[[email protected]_201 ~]# chkconfig iptables off

在服务器192.168.1.202上配置流程:

[[email protected]_202 ~]# vim /etc/my.cnf

………….

7 [mysqld]

8 log_bin

9 server_id=102

…………….

[[email protected]_202 ~]# cat /root/.mysql_secret

# The random password set for the root user at Thu May 22 20:32:25 2014 (local time): Toa2Gk4s

[[email protected]_202 ~]# mysql -uroot -hlocalhost -pToa2Gk4s

mysql> set passwd for [email protected]"localhost"=password("123456");

mysql> grant all on *.*to [email protected]"192.168.1.203" identified by "123456";

mysql> grant replication slave  on *.*to [email protected]"192.168.1.201" identified by "123456";

[[email protected]_202 ~]# service iptables stop^C

[[email protected]_202 ~]# chkconfig iptables off

[[email protected]_202 ~]# mysql -uwgl -h192.168.1.201 -p123456//测试能否登陆192.168.1.201

mysql> exit

[[email protected]_202 ~]# mysql -uroot -p123456

mysql> change master to

-> master_host="192.168.1.202",

-> master_user="wgl",

-> master_password="123456",

-> master_log_file="rh202-bin.000002",

-> master_log_pos=1301;

mysql> start slave;

mysql> show slave status\G

测试: 分别在2台服务器上插入不同的库(结果:2台服务器里有相同的库):

8、配置代理服务器

[[email protected]_203 ~]# service iptables stop

[[email protected]_203 ~]# chkconfig iptables off

[[email protected]_203 ~]# mysql -uwgl -h192.168.1.201 -p123456            //测试能否登陆192.168.1.201

mysql> exit

[[email protected]_203 ~]# mysql -uwgl -h192.168.1.202 -p123456//测试能否登陆192.168.1.202

mysql> exit

[[email protected]_203 proxy]# service mysql stop//mysql代理服务器会占用3306端口,要释放3306端口,否则会冲突

[[email protected]_203 proxy]# chkconfig mysql off

[[email protected]_203 ~]# tar -zxf mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz -C /usr/local/

[[email protected]_203 ~]# cd /usr/local/

[[email protected]_203 local]# mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/ proxy        //为了管理方便,对此重命名

[[email protected]_203 local]# cd /usr/local/proxy/

[[email protected]_203 proxy]# chmod +x share/doc/mysql-proxy/rw-splitting.lua

[[email protected]_203 proxy]# ./bin/mysql-proxy -P 192.168.1.203:3306 -r 192.168.122.201:3306 -b 192.168.122.202:3306 -s /usr/local/proxy/share/doc/mysql-proxy/rw-splitting.lua &

-p 指定代理监听的ip地址 端口

-r 指定读服务的ip地址 端口

-b 指定写服务器的ip地址 端口

-s 指定 lua 脚本文件的路径

编写脚本实现开机自动运行mysql-proxy

[[email protected]_203 proxy]# vim /usr/local/proxy/proxy.sh

#!/bin/bash

/usr/local/proxy/bin/mysql-proxy -P 192.168.1.203:3306 -r 192.168.1.201:3306 -b 192.168.1.202:3306 -s /usr/local/proxy/share/doc/mysql-proxy/rw-splitting.lua &

[[email protected]_203 proxy]# chmod +x /usr/local/proxy/proxy.sh

[[email protected]_203 ~]# tail -1 /etc/rc.local

/usr/local/proxy/proxy.sh   //在系统文件中添加此项实现开机自动运行脚本

检测代理数据库是否和web服务器连接正常

在装有LAMP平台的服务器192.168.1.10,192.168.1.20编写测试网页。

[[email protected] ~]# vim /usr/local/httpd/htdocs/test2.php

[[email protected]_100 ~]# vim  /usr/local/httpd/htdocs/test2.php     //检测能否连接到数据库

<?php

$link=mysql_connect(‘192.168.1.203‘,‘wgl‘,‘123456‘);  //用户wgl,密码123456 ,登录192.168.1.203做测试

if($link) echo " 连接数据###########OK!!";

mysql_close();

?>

[[email protected]_100 ~]# elinks --dump bbs.baidu.com/test2.php

连接数据###########OK!!        //显示这就OK,分别在2台服务器上做测试

9、搭建nginx(192.168.1.102)做轮巡处理

[[email protected]_102 ~]# tar -zxf nginx-1.0.5.tar.gz

[[email protected]_102 ~]# cd nginx-1.0.5

[[email protected]_102 nginx-1.0.5]# useradd -M -s /sbin/nologin nginx

[[email protected]_100 nginx-0.8.55]# ./configure            // 配置时,如果提示缺少pcre-devel,pcre-devel模块,使用yum安装即可

--prefix=/usr/local/nginx

--user=nginx

--group=nginx

--with-http_stub_status_module

--with-http_ssl_module

Yum –y pcre-devel

[[email protected]_102 nginx-1.0.5]# make && make install

[[email protected]_102 nginx-1.0.5]# cd /usr/local/nginx/

[[email protected]_102 nginx]# vim conf/nginx.conf

44     server {

45         listen       8080;

46         server_name  localhost;

134        upstream web{

135         server 192.168.1.10 weight=1;

136         server 192.168.1.20 weight=2;

//这些配置一定要写在http{} 这个容器里

137         }

138     server {

139         location / {

140         proxy_pass http://web;

141         }

142         }

[[email protected]_102 nginx]# ./sbin/nginx –t            //如果80端口有服务在占用,要释放占用80端口服务

[[email protected]_102 nginx]# ./sbin/nginx -s stop

[[email protected]_102 nginx]# ./sbin/nginx

[[email protected]_102 nginx]# tail -1 /etc/hosts

192.168.1.102 bbs.baidu.com bbs

测试:[[email protected]_102 nginx]# elinks --dump 192.168.1.102

It works!

10、搭建squid(192.168.1.103)缓存服务器

[[email protected]_103 Server]# rpm -ivh squid-2.6.STABLE21-6.el5.x86_64.rpm

[[email protected]_103 Server]# vim /etc/squid/squid.conf

637 http_access allow all

778  reply_body_max_size 10240000 allow all   //允许访问的最大对象

921 http_port 80 vhost

922 cache_peer 192.168.1.102 parent 80 0 originserver

1588  maximum_object_size_in_memory 10 KB  能够缓存的最大查询对象

1786  cache_dir ufs /var/spool/squid 100 16 256

100:缓存目录大小

16:缓存一级目录个数

256: 缓存二级目录个数

3004  visible_hostname rh5_103.localdomain

[[email protected]_103 ~]# hostname

rh5_103.localdomain

[[email protected]_103 Server]# tail -1 /etc/hosts

192.168.1.103  rh5_103.localdomain        //增加现在主机名解析

[[email protected]_103 ~]# service iptables stop

[[email protected]_103 ~]# chkconfig iptables off

[[email protected]_103 Server]# service squid restart

[[email protected]_103 Server]# chkconfig squid on

11、测试nginx 能否为web服务器,做轮巡处理

在2台web服务器上编辑不同的网页

[[email protected]_100 ~]# cat /usr/local/httpd/htdocs/test3.php

<h2>

192.168.1.10

<h2>

[[email protected]_20 ~]# cat /usr/local/httpd/htdocs/test3.php

<h2>

192.168.1.20

<h2>

在客户机1.1.1.1上访问:

[[email protected] ~]# elinks --dump http://bbs.baidu.com/test3.php   //访问网站一样,内容不一样

 12、在192.168.10(web)上搭建rsync服务器 

rsync:开源,快速,功能多,可增量,全量,本地或者远程镜像

支持:linux,win,unix

可增量备份,只同步变化的数据,因此传输速度快

支持匿名或者认证进程模式传输,可以实现方便或者安全的数据备份

使用服务器rh5自带的软件包

[[email protected]_10 ~]# rpm -qa | grep -i rsync

rsync-3.0.6-4.el5_7.1                          //默认缺省安装

[[email protected]_10 ~]# touch /etc/rsyncd.conf        //创建主配置文件(名字必须是rsyncd.conf)

[[email protected]_10 ~]# touch /etc/rsync_user        //创建srync用户账户文件(名字随便起

但是得和rsync配置文件里相对应)

[[email protected]_10 ~]# chmod 600 /etc/rsync_user

[r[email protected]_10 ~]# cat /etc/rsync_user

abc:123456               //冒号前面是用户名,后面是密码;如果有多行,就写多个

[[email protected]_10 ~]# cat /etc/rsyncd.conf

uid = boy                 //用户登录时会映射为boy用户

gid = boy

user chroot = yes

log file = /var/log/rsyncd.log                //日志目录

pid file = /var/run/rsyncd.pid                //pid文件目录

[aaa]                                  //共享名

path = /usr/local/httpd/htdocs/            //共享目录

read only = yes                         //表示只读,如果将yes改为no,则表示不只读

auth users = abc                        //用户

secrets file = /etc/rsync_user                               //存放用户密码文件目录

[[email protected]_10 ~]# useradd -M -s /sbin/nologin boy        //新建映射用户

[[email protected]_10 ~]# echo "123456" | passwd --stdin  boy

[[email protected]_10 ~]# chkconfig rsync on

[[email protected]_10 ~]# service xinetd restart

[[email protected]_10 ~]# netstat -anput | grep :873             //查看xinetd超级管家是否启动

[[email protected]_10 ~]# rsync [email protected]::aaa         //验证查看共享

因Rsync只支持增量同步,无法做到实时更新同步,这里需要第三方软件(inotify-tools)提供实时更新同步

inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了

一系列的命令行工具,

这些工具可以用来监控文件系统的事件。 inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。

inotify-tools提供两种工具,一是inotifywait(实时监控所有事件,包括文件的访问,写入,修改,***等),它是用来

监控文件或目录的变化,二是inotifywatch(统计文件系统的事件),它是用来统计文件系统访问的次数。

如果列出的内核版本不低于 2.6.13,系统就支持 inotify。还可以检查机器的 /usr/include/sys/inotify.h 文件。如果它存在,表明内核支持 inotify。

在另一台web服务器(192.168.1.20)安装第三方软件(inotify-tools),并编写脚本

只要把文件上传到192.168.1.20上,rsync会自动同步到192.168.1.10上。

[[email protected]_20 ~]# uname -r

2.6.18-348.el5

[[email protected]_20 ~]# tar -zxf inotify-tools-3.14.tar.gz

[[email protected]_20 ~]# cd inotify-tools-3.14

[[email protected]_20 inotify-tools-3.14]# ./configure

[[email protected]_20 inotify-tools-3.14]# make && make install

[[email protected]_20 abc]# touch /bin/web.sh

[[email protected]_20 abc]# chmod +x /bin/web.sh

[[email protected]_20 html]# cat /etc/server.pass

123456                //新建存放同步rsync密码文件

[[email protected]_20 html]# chmod 600 /etc/server.pass                //权限必须是600

[[email protected]_20 html]# cat /bin/web.sh

#!/bin/bash

ip=192.168.1.10

file=/usr/local/httpd/htdocs/

user=abc

file1=aaa

/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib  $file | while read files

do

/usr/bin/rsync -az --delete --password-file\=/etc/server.pass $file [email protected]$ip::$file1

echo "${files} was rsynced" >>/tmp/rsync.log 2>&1

-m, –monitor       //接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出

-r, –recursive    //监视一个目录下的所有子目录

-q, –quiet        //指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息

–timefmt          //指定时间格式,用于–format选项中的%T格式。

–format           //指定输出格式。

%w       表示发生事件的目录

%f       表示发生事件的文件

%e       表示发生的事件

[[email protected]_20 html]# tail -1 /etc/rc.d/rc.local

/bin/web.sh &

该软件是触发型软件,必须对/usr/local/httpd/htdocs/下文件更改才会同步

13、编写备份脚本mysqlbak.sh,对数据库服务器192.168.1.201做增量备份。

编写备份脚本mysqlbakall.sh,对数据库服务器192.168.1.201做完整备份

安装提供expect交互式输入软件包(使用自带的yum源安装)

[[email protected]_201 ~]# yum -y install expect

[[email protected]_201 mysql]# yum -y install tcl   // Expect使用Tcl作为语言核心

在代理服务器上新建文件和用户

[[email protected]_103 ~]# mkdir /bdbak/mysql

[[email protected]_103 ~]# useradd abc

[[email protected]_103 ~]# echo "123456" | passwd --stdin abc

[[email protected]_103 ~]# setfacl -m u:aaa:7 /bdbak/mysql

[[email protected]_201 ~]# cat mysqlbak.sh            //增量备份脚本,并上传至服务器192.168.1.103

#!/bin/bash

name=`echo "$HOSTNAME" | awk -F "." ‘{print $1}‘`

date=`date +"%Y%m%d-%H"`

file=/var/lib/mysql

index="$name"-bin.index

lastlog=`tail -1 $file/$index | awk -F"/" ‘{print $2}‘`

present=/var/lib/mysql/present

dir=/bdbak

load=/bdbak/mysql

user=abc

ip=192.168.1.103

pass="123456"

[ -e "$dir" ]

if [ $? -ne 0 ];then

mkdir $dir

fi

[ -e "$present" ]

if [ $? -ne 0 ];then

mkdir $present

fi

[ -e "$file/log.txt" ]

if [ $? -ne 0 ];then

touch $file/log.txt

fi

for abc in `cat $file/$index | awk -F"/" ‘{print $2}‘`

do

cd $present

if [ "$lastlog" != "$abc" ];then

grep "$abc" $file/log.txt &> /dev/null

if [ $? -ne 0 ];then

echo "$abc" >> $file/log.txt

cp $file/$abc $present

tar -zcf $dir/${date}log.tar.gz *

fi

fi

done

rm -rf $present

expect << EOF

spawn scp "$dir/${date}log.tar.gz" [email protected]$ip:$load

expect "(yes/no)?" {

send "yes\r"

expect "password:"

send "$pass\r"

}

expect "password:"

send "$pass\r"

expect eof

EOF

~

~[[email protected]_201 ~]# cat  mysqlbakall.sh         //完整备份脚本                          

#!/bin/bash

name=`echo "$HOSTNAME" | awk -F "." ‘{print $1}‘`

date=`date +"%Y%m%d"`

file=/var/lib/mysql

index="$name"-bin.index

lastlog=`tail -1 $file/$index | awk -F"/" ‘{print $2}‘`

load=/bdbak/mysql

present=/var/lib/mysql/mysqlall

user=abc

ip=192.168.1.103

dir=/bdbak

pass="123456"

[ -e "$dir" ]

if [ $? -ne 0 ];then

mkdir $dir

fi

[ -e "$present" ]

if [ $? -ne 0 ];then

mkdir $present

fi

for abc in `cat $file/$index | awk -F"/" ‘{print $2}‘`

do

cd $present

if [ "$lastlog" != "$abc" ];then

cp $file/$abc $present

tar -zcf $dir/$date"all-log.tar.gz" *

fi

done

rm -rf $present

expect << EOF

spawn scp "$dir/${date}all-log.tar.gz" [email protected]$ip:$load

expect "(yes/no)?" {

send "yes\r"

expect "password:"

send "$pass\r"

}

expect "password:"

send "$pass\r"

expect eof

14、增加周期计划任务

[[email protected]_201 ~]# crontab -l

30 23 */1 * * /root/mysqlbak.sh &

* * * * 1 /root/mysqlbakall.sh &

总结:搭建LANP安装PHP源码包,注意:指定正确的mysql和httpd服务安装路径

      每做完一步,都要检测配置是否达到预想的效果

      写备份脚本时,要先写备份脚本,再接传递脚本,都没问了再想结合

      在搭建服务中,严禁SSH别的服务器,检测,防止后面配置,配置成错误的服务器(导致和规划拓扑不一样结果可想而知,还得清处一系列多余的配置)。

项目实战,LANMP+NGINX+SQUID,布布扣,bubuko.com

时间: 2024-10-15 19:28:43

项目实战,LANMP+NGINX+SQUID的相关文章

Linux网络服务--LAMP+Nginx+Squid搭建web集群

一.         项目名称         LAMP+Nginx+Squid搭建web集群环境 二.         项目拓扑 三.         项目描述 3.1 项目环境 某部队为了满足信息化政治工作建设需要,用以丰富官兵日常生活内容,活化教育形式,更好的建设部队人文环境,准备架设部队内部的网站服务器,并申请使用军内公网IP:1.1.1.1 基于以上情况为该部提出以下解决方案.   3.2 实施方案 3.2.1  服务器操作系统与软件版本选择 操作系统选择RedHat企业版5.10:

大型分布式项目项目实战Springmvc+Spring+Mybatis+Maven+CMS+Redis+Solr+Linux+Nginx+单点登录、分布式缓存、负载均衡视频课程

* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat

java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘

15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  clo

Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程内容包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.性能调优.高并发.to

SpringBoot电商项目实战 — 前后端分离后的优雅部署及Nginx部署实现

在如今的SpringBoot微服务项目中,前后端分离已成为业界标准使用方式,通过使用nginx等代理方式有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多个客户展现端,例如:web端,安卓app,IOSapp,微信小程序等)打下坚实的基础.这个步骤是系统架构从猿进化成人的必经之路. image 上图是简单的分布式微服务开发及前后端分离的示意图.展现层也就是所谓的前端(客户可直观看到的),比如电商项目前端包含:app(安卓和IOS).微信小程序.PC商

16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程

16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud, Redis,ActiveMQ,Nginx,Mycat,Netty,Jvm,Mecached,Nosql,Spring,大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:架构师,高并发,分布式,集群,高可用,高可扩展,高性能,设计模式,数据结构算法,虚拟机,微服务架构,日志分析,

基于Hadoop离线大数据分析平台项目实战

基于Hadoop离线大数据分析平台项目实战  课程学习入口:http://www.xuetuwuyou.com/course/184 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介: 某购物电商网站数据分析平台,分为收集数据.数据分析和数据展示三大层面.其中数据分析主要依据大数据Hadoop生态系统常用组件进行处理,此项目真实的展现了大数据在企业中实际应用. 课程内容 (1)文件收集框架 Flume ①Flume 设计架构.原理(三大组件) ②Flume 初步使

企业级电商项目P2P金融项目实战,企业架构师培训视频课程

15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat. Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.性能调优.高并发.

15套java互联网架构师、高并发、集群、负载均衡、高可用、数据库设计、缓存、性能优化、大型分布式 项目实战视频教程

* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat