nginx一些基础知识、搭建和mysql主从复制搭建
2017-02-22 15:30
741 查看
nginx —高性能的http和反向代理的服务器,也是IMAP/POP3/SMTP代理服务器
俄罗斯人 Igor Sysoev 建立
nginx 以事件驱动方式编写,非常高效,适合做集群前端
nginx 具有很高的稳定性,采用分阶段资源分配技术,很大程度上减轻了DOS攻击的影响
nginx 支持热部署,可以7*24小时不间断运行
nginx 采用master-slave模型,充分利用smp的优势,且能够减少工作进程在磁盘I/O的阻塞延迟,
采用select()/poll()调用时,还可以限制每个进程的连接数
强大的UPSteam和filter链 —- 反向代理和管道功能
nginx 主流是以多进程方式工作,一个master进程和多个worker进程,master管理、监控worker进程
worker进程互相独立,worker进程不能处理其他worker的事情,一般设置worker数为机器的CPU核心数
master接收外界的信号,根据信号做不同的事情,
控制nginx使用kill向master发送信号即可,如kill -HUP pid
handler 的编写步骤:—- 世上无难事,只怕有心人
1. 编写模块的基本结构,包括模块的定义,模块上下文结构,模块的配置结构等
2. 实现handler的挂载函数,根据模块的需求选择正确的挂载方式
3. 编写handler的处理函数,模块的功能主要通过这个函数完成
nginx模块分为三大类: handler、filter、upstream
1. 利用handler和filter可以完成单机工作
2. 利用upstream可以跨越单机的限制,完成网络数据的接收、处理、转发
3. 在云模式大行其道的今天,数据转发使nginx有能力构建一个网络应用的关键组件
4. nginx的配置系统提供的层次化、松耦合使得系统有很好的扩展性
5. 严格来说upstream属于handler,只是它自己不产生内容只需要开发若干回调函数,完成构造请求和解析响应等工作
任何upstream模块,简单如memcached,复杂如proxy、fastcgi
负载均衡用于从upstream指令定义的后端主机列表中选取一台主机,
nginx先用负载均衡找到一台主机,再使用upstream模块实现和主机的交互
尝试环境搭建:
1. nginx3机器安装nginx,配置upstream 负载均衡nginx1和nginx2机器, 并开放共享目录 /home/sharedir
2. nginx1机器安装tomcat和php,并使用nginx3机器的共享目录作为工作目录
3. nginx2机器安装tomcat和php,并使用nginx3机器的共享目录作为工作目录
搭建环境过程中遇到一些系统设置:
1. 设置静态ip: vim /etc/network/interface
使用nginx的upstream 搭建负载均衡环境
1. nginx3机器安装nginx,配置upstream,在http里面添加配置如下
upstream 192.168.30.162 {
#ip_hash;
server 192.168.30.160:8080;
server 192.168.30.161:80;
}
搭建mysql主从库
1. 参考地址:http://www.linuxidc.com/Linux/2014-05/101599.htm
https://my.oschina.net/erichsbc/blog/99808
https://my.oschina.net/robortly/blog/674303
有空研究下 双击异地热备份
参考地址:
https://blog.byneil.com/%E5%AD%A6%E4%B8%80%E7%82%B9-mysql-%E5%8F%8C%E6%9C%BA%E5%BC%82%E5%9C%B0%E7%83%AD%E5%A4%87%E4%BB%BD-mysql%E4%B8%BB%E4%BB%8E%EF%BC%8C%E4%B8%BB%E4%B8%BB%E5%A4%87%E4%BB%BD%E5%8E%9F%E7%90%86%E5%8F%8A/
配置 nginx 的php环境
nginx php php-fpm 环境搭建
首先安装php: apt-get install php5 (php5默认会安装Apache,但是80端口已经被nginx占了,所有Apache会启动失败,不用管)
接着安装php-fpm: apt-get install php5-fpm (php和php-fpm的配置文件都在 /etc/php5/目录下,以后安装php扩展在这个目录下即可)
接着修改nginx的配置文件,在【http】配置项目中添加如下配置信息:
server{
listen 192.168.30.161:80; #所在机器的ip
index index.html index.php;
root /home/share;
location ~ .php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock; #使用的是socket方式
fastcgi_index index.php;
include fastcgi_params;
}
}
然后检查nginx的配置文件信息是否正确: /usr/sbin/nginx -t
然后重启nginx: /usr/sbin/nginx -s reload
然后验证php是否安装成功: 在nginx的工作目录下/home/share 里面建立 test.php 文件: phpinfo();
访问test.php 看看php代码是否正确解析
参考地址: http://blog.csdn.net/koastal/article/details/51055606
3.php-fpm 的使用:
php-fpm 重启:kill -USR2
由于tomcat 对php支持不是很好,前面只是为了测试nginx可以代理不同的web服务器
决定将nginx1的tomcat环境改成nginx环境
复制均衡环境搭建完毕,其中有些设置参数值得测试
测试链接:
1. http://192.168.30.162/ 会平均的访问nginx1和nginx2机器
2. http://192.168.30.162/testshare.html 测试可以访问共享的HTML文件
3. http://192.168.30.162/test.php 测试nginx1和nginx2的php环境正确而且被nginx3反向代理
将nginx php-fpm php mysql的启动加入开机启动项目
俄罗斯人 Igor Sysoev 建立
nginx 以事件驱动方式编写,非常高效,适合做集群前端
nginx 具有很高的稳定性,采用分阶段资源分配技术,很大程度上减轻了DOS攻击的影响
nginx 支持热部署,可以7*24小时不间断运行
nginx 采用master-slave模型,充分利用smp的优势,且能够减少工作进程在磁盘I/O的阻塞延迟,
采用select()/poll()调用时,还可以限制每个进程的连接数
强大的UPSteam和filter链 —- 反向代理和管道功能
nginx 主流是以多进程方式工作,一个master进程和多个worker进程,master管理、监控worker进程
worker进程互相独立,worker进程不能处理其他worker的事情,一般设置worker数为机器的CPU核心数
master接收外界的信号,根据信号做不同的事情,
控制nginx使用kill向master发送信号即可,如kill -HUP pid
handler 的编写步骤:—- 世上无难事,只怕有心人
1. 编写模块的基本结构,包括模块的定义,模块上下文结构,模块的配置结构等
2. 实现handler的挂载函数,根据模块的需求选择正确的挂载方式
3. 编写handler的处理函数,模块的功能主要通过这个函数完成
nginx模块分为三大类: handler、filter、upstream
1. 利用handler和filter可以完成单机工作
2. 利用upstream可以跨越单机的限制,完成网络数据的接收、处理、转发
3. 在云模式大行其道的今天,数据转发使nginx有能力构建一个网络应用的关键组件
4. nginx的配置系统提供的层次化、松耦合使得系统有很好的扩展性
5. 严格来说upstream属于handler,只是它自己不产生内容只需要开发若干回调函数,完成构造请求和解析响应等工作
任何upstream模块,简单如memcached,复杂如proxy、fastcgi
负载均衡用于从upstream指令定义的后端主机列表中选取一台主机,
nginx先用负载均衡找到一台主机,再使用upstream模块实现和主机的交互
尝试环境搭建:
1. nginx3机器安装nginx,配置upstream 负载均衡nginx1和nginx2机器, 并开放共享目录 /home/sharedir
2. nginx1机器安装tomcat和php,并使用nginx3机器的共享目录作为工作目录
3. nginx2机器安装tomcat和php,并使用nginx3机器的共享目录作为工作目录
4. nginx1和nginx2的mysql 实现主从配置(待尝试)
搭建环境过程中遇到一些系统设置:
1. 设置静态ip: vim /etc/network/interface
# The primary network interface auto eth0 #iface eth0 inet dhcp iface eth0 inet static address 192.168.30.162 netmask 255.255.255.0 gateway 192.168.30.2 (网关) 2.修改DNS解析:vim /etc/resolv.conf nameserver 192.168.30.2 3.重启网卡: sudo /etc/init.d/network restart 4. 参考地址: http://www.cnblogs.com/vincedotnet/p/4013099.html 5. ubuntu 14.04 更换为阿里云源 1. sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份 2. sudo vim /etc/apt/sources.list #修改 3. sources.list 内容改为 deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse 4. sudo apt-get update #更新列表 5. 参考地址:http://www.cnblogs.com/littlemonsters/p/5783690.html
使用nginx的upstream 搭建负载均衡环境
1. nginx3机器安装nginx,配置upstream,在http里面添加配置如下
upstream 192.168.30.162 {
#ip_hash;
server 192.168.30.160:8080;
server 192.168.30.161:80;
}
server{ listen 80; server_name 192.168.30.162; location / { proxy_pass http://192.168.30.162; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 2. nginx2机器安装nginx、nginx1机器安装tomcat 3. nginx 更改工作目录:vim /etc/nginx/sites-enabled/default; 修改server里面的配置为 root /home/share; tomcat 更改工作目录:vim /etc/tomcat7/server.xml; 在host里面增加配置 <Context path="" debug="0" docBase="/home/share" reloadable="true" privileged="true"></Context> tomcat 更改默认访问文件:vim /etc/tomcat7/web.xml; 修改welcome-file-list配置为 <welcome-file>index_tomcat.html</welcome-file> 4. nginx 重启 /usr/sbin/nginx -s reload tomcat 重启 service tomcat7 restart
搭建mysql主从库
1. 参考地址:http://www.linuxidc.com/Linux/2014-05/101599.htm
https://my.oschina.net/erichsbc/blog/99808
https://my.oschina.net/robortly/blog/674303
2. nginx1和nginx2的安装mysql: apt-get install mysql-server ;;; nginx1的mysql简称mysql1 nginx2的mysql简称mysql2 3. vim /etc/mysql/my.cnf 注释掉 bind 127.0.0.1 4. 给mysql1建立一个外网可以访问的账号:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'helloworld' WITH GRANT OPTION;FLUSH PRIVILEGES; 5. mysql1配置文件设置: 在【mysqld】的模块配置中添加配置: server-id=1 #设置id log_bin=/var/log/mysql/mysql-bin.log #二进制文件目录 binlog_do_db=student #开启主从复制的数据库 binlog_ignore_db=mysql #不开启主从复制的数据库 6. 重启mysql1: service mysql restart 连接mysql1: show master status \G; #数据要用到 mysql> show master status \G; *************************** 1. row *************************** File: mysql-bin.000002 Position: 107 Binlog_Do_DB: student Binlog_Ignore_DB: mysql 1 row in set (0.00 sec) ERROR: No query specified 7. mysql1给主从复制新建一个账号: grant replication client,replication slave on *.* to 'repl'@'192.168.%.%' identified by 'repl';FLUSH PRIVILEGES; 8. mysql2配置文件设置: server-id=2 #设置id log_bin=/var/log/mysql/mysql-bin.log replicate_do_db=student #主从复制的数据库 9. 登录mysql2 设置master stop slave; change master to master_host='192.168.30.160' ,master_user='repl',master_password='repl' ,master_log_file='mysql-bin.000002',master_log_pos=107; #数据为mysql1查询出的数据 start slave; 10. 如果设置master失败: 登录mysql2: stop slave; reset slave; 重新设置; start slave 即可 11. 主从复制即可成功,主从复制的数据库为student(可以按需要更改) 12. show slave status\G; 验证是否成功: Slave_IO_Running: Yes Slave_SQL_Running: Yes
有空研究下 双击异地热备份
参考地址:
https://blog.byneil.com/%E5%AD%A6%E4%B8%80%E7%82%B9-mysql-%E5%8F%8C%E6%9C%BA%E5%BC%82%E5%9C%B0%E7%83%AD%E5%A4%87%E4%BB%BD-mysql%E4%B8%BB%E4%BB%8E%EF%BC%8C%E4%B8%BB%E4%B8%BB%E5%A4%87%E4%BB%BD%E5%8E%9F%E7%90%86%E5%8F%8A/
配置 nginx 的php环境
nginx php php-fpm 环境搭建
首先安装php: apt-get install php5 (php5默认会安装Apache,但是80端口已经被nginx占了,所有Apache会启动失败,不用管)
接着安装php-fpm: apt-get install php5-fpm (php和php-fpm的配置文件都在 /etc/php5/目录下,以后安装php扩展在这个目录下即可)
接着修改nginx的配置文件,在【http】配置项目中添加如下配置信息:
server{
listen 192.168.30.161:80; #所在机器的ip
index index.html index.php;
root /home/share;
location ~ .php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock; #使用的是socket方式
fastcgi_index index.php;
include fastcgi_params;
}
}
然后检查nginx的配置文件信息是否正确: /usr/sbin/nginx -t
然后重启nginx: /usr/sbin/nginx -s reload
然后验证php是否安装成功: 在nginx的工作目录下/home/share 里面建立 test.php 文件: phpinfo();
访问test.php 看看php代码是否正确解析
参考地址: http://blog.csdn.net/koastal/article/details/51055606
3.php-fpm 的使用:
php-fpm 重启:kill -USR2
cat /var/run/php5-fpm.pid
service php5-fpm start service php5-fpm stop service php5-fpm restart service php5-fpm reload /etc/init.d/php5-fpm start /etc/init.d/php5-fpm stop /etc/init.d/php5-fpm restart /etc/init.d/php5-fpm reload
由于tomcat 对php支持不是很好,前面只是为了测试nginx可以代理不同的web服务器
决定将nginx1的tomcat环境改成nginx环境
复制均衡环境搭建完毕,其中有些设置参数值得测试
测试链接:
1. http://192.168.30.162/ 会平均的访问nginx1和nginx2机器
2. http://192.168.30.162/testshare.html 测试可以访问共享的HTML文件
3. http://192.168.30.162/test.php 测试nginx1和nginx2的php环境正确而且被nginx3反向代理
将nginx php-fpm php mysql的启动加入开机启动项目
相关文章推荐
- MySQL主从复制基础搭建
- MySQL高性能主从复制系列之基础知识部分
- MySQL主从复制基础搭建--之遇到的问题
- mysql主从复制搭建中几种log和pos详解
- 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
- mysql 主从复制集群搭建
- MYSQL 安装主从搭建以及复制报错测试-2014-07-30于JD
- 如何在一台windows主机上搭建mysql主从复制
- MySQL主从复制的一些错误处理和日常维护
- Mysql搭建主从复制
- 搭建mysql主从复制---Mysql Replication
- MySQL 主从复制搭建
- MySQL 主从复制----之基础
- mongodb基础系列—主从复制具体搭建以及解说
- mysql复制主从集群搭建
- 搭建MySQL数据的主从复制环境
- mysql的一些基础知识点
- 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
- [置顶] 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
- 搭建mysql主从复制---Mysql Replication