一、环境搭建
1、测试环境部署
2、预发布系统
3、线上服务器部署架构图
# WEB环境部署与上线流程 1.环境搭建 1.部署规范 服务器部署规范 软件部署规范 测试 上线 2.服务器环境搭建 Nginx Nginx管理 Nginx介绍 Nginx安装,启动 Nginx相关目录及配置文件详解 Nginx默认网站 访问控制 日志管理 防盗链 Nginx虚拟主机 反向代理 URL重写 Nginx下载限速 Nginx优化 长连接 压缩 客户端缓存 并发数 Nginx负载均衡 集群介绍 使用Nginx分发器构建一个web集群 Nginx分发算法 轮询 基于权重的轮询 基于开发语言 基于浏览器 基于源IP 构建高可用Nginx集群 RS故障检测机制 Nginx缓存 Nginx+uwsgi+python+mysql+django python mysql的安装管理 python业务集成部署,发布一个python开发的web 3.业务环境快速升级部署 saltstack saltstack介绍 saltstack自动化部署 业务环境更新案例 2.代码管理 1.持续集成 持续集成介绍 认识devops 2.持续交付-源码管理 Git Git介绍 Git安装与配置 Git仓库初始化 Git基础命令 Git分支 Git标签 Gitlab Gitlab介绍 Gitlab安装 Gitlab服务于系统设置 Gitlab仓库管理 Gitlab备份与恢复 GitHub GitHub的使用 3.持续部署 Jenkins介绍 Jenkins安装与初始化 Jenkins目录介绍 Jenkins创建freestyle-job Jenkins获取Gitlab源码 Jenkins部署HTML网站 Jenkins部署脚本编写 Jenkins配置Gitlab自动触发构建 Jenkins配置Jenkins返回构建状态到Gitlab maven配置 Jenkins创建maven job Jenkins Pipeline 介绍 Jenkins Pipeline 示例 # 服务器逻辑 1.服务器选择 物理服务器 CPU 核心数 主频 Memory 容量 频率 Storage 本地存储 机械磁盘 容量 转速 缓存大小 固态磁盘 磁盘阵列 外挂存储 移动硬盘 OSS NIC 网卡数量 网卡速率 云服务器(同上) 2.操作系统 系统选型 厂商选择 Redhad 系统版本 CENTOS RHEL 系统安装 初始化系统安装包 初始化系统启动服务 优化方案 内核优化 TCP/IP优化 IO优化 内存,CPU优化 文件系统优化 安全部署 私有服务访问控制 端口 源地址 防火墙 拒绝所有允许个别 允许所有拒绝个别 selinux 文件服务器 3.部署逻辑 业务环境 内侧服务器 内侧 预发布服务器 公测 线上业务服务器 上线 特点:业务环境一模一样 功能:测试代码 服务器部署架构图 # 业务环境部署逻辑 1.服务器部署架构 分发层部署 前端系统 后端系统 数据库服务器部署 缓存系统 代码分发系统 分布式存储系统 2.软件部署文档 软件 版本号 获取方式 软件安装步骤 软件相关目录说明 配置文件配置说明 软件运行 环境测试 3.日常维护文档 #测试 1.开发上传代码到源码系统 svn git 2.上线-测试服务器(内侧) 测试准备 功能需求文档 原型图 效果图 测试设备 测试目的 代码测试 构建程序 代码审核 功能验证 测试周期 测试计划 测试用例 测试 APP 机器人 人机 记录提交测试BUG 验证关闭bug 测试报告 3.预发布测试(公测) 预发布测试 用户体验测试 功能验证 压力测试 测试周期 测试用例 打包验证完毕后的最终代码 测试报告 #上线 产品需求确认 产品研发确认 产品测试确认 上线流程文档 跟踪统计用户反馈情况 #上线流程 CI 1)开发代码 2)审核代码 主干 分支 3)Git本地合并分支 4)本机环境测试代码 5)开发上线代码到GitHub CD 一测 开发+测试 二测 测试+加内测用户 运维负责部署 测试提交测试报告 主管确认签字 上线 运维负责 各部门主管在上线申请签字 运维负责上线
二、Nginx
1、Nginx介绍与安装
##Nginx介绍与安装 Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发⾼高性能的 Web和 反向代理 服务器器,也是一个 IMAP/POP3/SMTP 代理理服务器器。 • 轻量量级的web服务器器 • 延伸版本tengine(淘宝)、openresrt(章亦春)等 • http://nginx.org 官网 • http://www.nginx.cn/doc/index.html 中文文档 01Nginx 安装 官网源码包 • wget http://nginx.org/download/nginx-1.15.5.tar.gz -P /usr/src 源码安装三部曲 配置--编译--安装 • 配置 configure --prefix=path 安装路路径 --help 配置参数 • 编译 make • 安装 make install 02Nginx相关目录介绍 • nginx path prefix: "/usr/local/nginx" • nginx binary file: "/usr/local/nginx/sbin/nginx" • nginx modules path: "/usr/local/nginx/modules" • nginx configuration prefix: "/usr/local/nginx/conf" • nginx configuration file: "/usr/local/nginx/conf/nginx.conf" • nginx pid file: "/usr/local/nginx/logs/nginx.pid" • nginx error log file: "/usr/local/nginx/logs/error.log" • nginx http access log file: "/usr/local/nginx/logs/access.log" 03Nginx启动 • /usr/local/nginx/sbin/nginx 04Nginx验证测试 验证方法 netstat –ntpl lsof -i :80 ## 查看命令的安装包 yum search killall yum search elinks yum search curl yum search lynx rpm -qf `which htpasswd` elinks http://192.168.10.42 --dump
2、Nginx配置文件
#启动子进程程序默认用户 #user nobody; #一个主进程和多个工作进程。工作进程是单进程的,且不需要特殊授权即可运行;这里定义的是工作进程数量 worker_processes 1; #全局错误日志的位置及日志格式 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { #每个工作进程最大的并发数 worker_connections 1024; } #http服务器设置 http { #设定mime类型,类型由mime.type文件定义 include mime.types; # default_type application/octet-stream; #日志格式 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址; #$remote_user:用来记录客户端用户名称; #$time_local: 用来记录访问时间与时区; #$request: 用来记录请求的url与http协议; #$status: 用来记录请求状态;成功是200, #$body_bytes_sent :记录发送给客户端文件主体内容大小; #$http_referer:用来记录从那个页面链接访问过来的; #$http_user_agent:记录客户浏览器的相关信息; #全局访问日志路径 #access_log logs/access.log main; #sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。 sendfile on; #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用 #tcp_nopush on; #长连接超时时间 #keepalive_timeout 0; keepalive_timeout 65; #开启压缩 #gzip on; #配置虚拟主机 server { #虚拟主机使用的端口 listen 80; #虚拟主机域名 server_name localhost; #虚拟主机支持的字符集 #charset koi8-r; #虚拟主机的访问日志路径 #access_log logs/host.access.log main; #定义web根路径 location / { #根目录路径 root html; #索引页 index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # #根据错误码 返回对应的页面 error_page 500 502 503 504 /50x.html; #定义页面路径 location = /50x.html { root html; } #定义反向代理服务器 数据服务器是lamp模型 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} #定义PHP为本机服务的模型 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #拒绝apache DR目录及子目录下的.htaccess文件访问 #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} #https的配置方案 # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
3、Nginx默认网站
4、Nginx虚拟主机
5、Nginx反向代理
6、Nginx限速
7、NginxURL重写
8、Nginx优化
9、Nginx集群
10、Nginx集群算法
11、Nginx构建高可用集群
#!/bin/bash nginx_kp_check () { nginxpid=`ps -C nginx --no-header |wc -l` if [ $nginxpid -eq 0 ];then /usr/local/nginx/sbin/nginx sleep 1 nginxpid=`ps -C nginx --no-header |wc -l` if [ $nginxpid -eq 0 ];then systemctl stop keepalived fi fi } nginx_kp_check
! Configuration File for keepalived global_defs { router_id NGINX_DEVEL } vrrp_script check_nginx { script "/etc/keepalived/nginx_pid.sh" interval 2 fall 1 } vrrp_instance nginx { state MASTER interface ens33 mcast_src_ip 192.168.10.40 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.10.213/24 } }
! Configuration File for keepalived global_defs { router_id NGINX_DEVEL } vrrp_script check_nginx { script "/etc/keepalived/nginx_pid.sh" interval 2 fall 1 } vrrp_instance nginx { state MASTER interface ens33 mcast_src_ip 192.168.10.40 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.10.213/24 } }