├── README.md ├── Service ├── .DS_Store ├── Docker │ ├── .DS_Store │ ├── check-config.sh │ ├── docker安装.sh │ ├── 创建私有仓库 │ ├── 常用软件 │ │ ├── .DS_Store │ │ └── Nginx │ │ │ ├── .DS_Store │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── assets │ │ │ ├── files │ │ │ └── wzp.conf │ │ │ └── nginx.conf │ └── 镜像制作 │ │ ├── Dockerfile │ │ ├── YumRepo │ │ └── Repo.sh │ │ ├── assets │ │ ├── .bash_history │ │ ├── .bash_logout │ │ ├── .bash_profile │ │ └── .bashrc │ │ └── 镜像制作 ├── LazyManage │ ├── LazyManage.py │ ├── LazyManage.sh │ ├── LazyManage_help.docx │ ├── ScriptRemote.sh │ └── serverlist.conf ├── Maven │ ├── Maven.sh │ └── Maven安装.sh ├── SaltStack │ ├── SaltStack.sh │ ├── a.sls │ ├── master │ ├── saltstack.pdf │ ├── saltstack_基础入门文档.sh │ └── sls.png ├── Siege │ └── Siege压力测试.sh ├── Zabbix │ ├── Zabbix触发器支持的函数说明.sh │ └── zabbix.sh ├── ZooKeeper │ ├── ZooKeeper的安装.sh │ ├── Zookeeper工作原理.docx │ ├── zoo.cfg │ └── zookeeper运维管理.sh ├── cacti │ ├── addhost.sh │ ├── cacti_install.sh │ ├── cacti重置绘图.txt │ ├── snmp大量日志.txt │ ├── snmp获取流量.sh │ ├── 如何查找Linux系统网卡流量的SNMP_OID.sh │ └── 数据类型counter32位与counter64位的区别.sh ├── dns │ ├── BIND压力测试软件queryperf.sh │ └── dns_install.txt ├── elk │ ├── ELK查询.sh │ ├── del-index.sh │ ├── es查询.sh │ ├── es磁盘满修复.sh │ ├── es集群配置.sh │ ├── fb-elk-xiaochuan.sh │ ├── filebeat输出多topic.sh │ ├── kibana.yml │ └── 安装ik分词器.sh ├── etcd │ ├── curl操作etcd.sh │ ├── etcd-内存缓存数据库安装.sh │ ├── etcdctl使用.sh │ ├── etcd递归获取数据.sh │ └── 启动脚本.sh ├── falcon │ └── falcon修改绘图曲线精度.sh ├── git │ ├── Git常用命令整理.sh │ ├── git_cheat_sheet.png │ ├── gitlab-ldap.sh │ ├── gitlab.sh │ ├── gitlab安装.bash │ ├── git清理历史版本.sh │ ├── git管理.sh │ └── 用GitLab搭建自己的私有GitHub.sh ├── glusterf │ └── Reboot_glusterf运维经验谈.pdf ├── go │ ├── Go语言介绍安装.sh │ ├── golang官方程序分析工具.sh │ └── go编译代理.sh ├── haproxy │ ├── haproxy.cfg │ ├── haproxy做TCP层的负载均衡.sh │ ├── haproxy安装.sh │ └── haproxy配置文件详解.sh ├── heartbear │ └── heartbeat配置安装.sh ├── kafka │ ├── .DS_Store │ ├── Kafka安装配置.sh │ ├── kafka-manager.py │ ├── kafkacat.sh │ └── server.properties ├── keepalive │ ├── Keepalived权威指南.pdf │ ├── keepalived.conf │ └── keepalived热备配置.sh ├── kestrel │ ├── Kestrel队列使用示例[配置、安装、命令].sh │ ├── 征服Kestrel.sh │ └── 测试kestrel的队列.sh ├── kickstart │ ├── CentOS_6.2上安装部署_Cobbler.html │ ├── kickstart文件详解.html │ ├── linux装机服务器安装过程.txt │ ├── 易天cobbler安装后优化.html │ └── 系统自动化安装配置_index.html ├── leveldb │ └── leveldb安装.sh ├── lvs │ ├── keepalived_lvs.conf │ ├── lvs+Keepalived.sh │ ├── lvs.sh │ └── 运维社区-LVS+Keepalived.pdf ├── mfs │ └── MooseFS权威指南.pdf ├── mongodb │ ├── .DS_Store │ ├── MongoDB用户认证.sh │ ├── mongodb复制集.sh │ ├── mongodb管理.sh │ ├── mongos分片.sh │ └── mongos配置.sh ├── mysql │ ├── Mysql慢查询和慢查询日志分析.sh │ ├── mysql主从同步错误跳过与修复.sh │ ├── mysql慢查询日志.sh │ └── 主主复制搭建说明.txt ├── nagios │ ├── nagios安装文档.doc │ ├── nrpe │ │ ├── check_http_status.sh │ │ ├── check_nsq.py │ │ ├── check_url.py │ │ ├── check_zkplog.sh │ │ ├── mysql主从复制监控.sh │ │ ├── nginx监控.sh │ │ ├── nrpe.sh │ │ ├── url_json.py │ │ ├── 内网宕机监控.sh │ │ ├── 监控进程.sh │ │ └── 磁盘空间监控.sh │ ├── nrpe_snmp_无外网安装.sh │ ├── nrpe传递参数.sh │ └── 取nagios状态.py ├── nexus │ ├── CentOS系统中安装Nexus并导入已有的构件库.sh │ └── nexus安装.sh ├── nfs │ └── NFS搭建.sh ├── nginx │ ├── Nginx_Push_Stream_Module.sh │ ├── Nginx的平滑升级.sh │ ├── Nginx配置文件nginx.conf中文详解.sh │ ├── Nginx限制ip连接数流量.sh │ ├── curl检查服务器是否支持gzip.sh │ ├── nginx+uwsgi来部署Django.sh │ ├── nginx_rewrite_参数和例子.sh │ ├── nginx优化.sh │ ├── nginx利用logrotate日志切割.sh │ ├── nginx安装.sh │ ├── nginx正则规则详解.sh │ ├── nginx清理缓存.sh │ ├── nginx状态检查模块安装及使用.sh │ ├── nginx缓存参数.png │ ├── nginx转发学习.sh │ ├── nginx针对爬虫进行限速配置.sh │ ├── nginx防盗链完整设置方法.sh │ ├── nginx限制请求数ngx_http_limit_req_module模块.sh │ └── 开启nginx状态页面.sh ├── nodejs │ └── nodejs安装.sh ├── openvpn │ ├── PPTP与OpenVPN区别.sh │ └── openvpn_安装-rpm.txt ├── prometheus-普罗米修斯-打点 │ ├── Alertmanager普罗米修斯报警.sh │ ├── prometheus.sh │ └── prometheus.yml ├── puppet │ ├── puppet-client.txt │ ├── puppet-server.txt │ ├── puppet-site.txt │ ├── puppet安装.sh │ └── puppet证书验证.sh ├── rabbitmq │ ├── .DS_Store │ ├── rabbitmq监控.sh │ ├── rabbitmq监控脚本.py │ ├── rabbitmq配置集群和镜像队列.sh │ └── rabbitmq集群同步配置.sh ├── redis │ ├── Redis命令总结.sh │ ├── redis动态修改参数配置.sh │ ├── redis安装配置文档.sh │ ├── redis状态查看.sh │ ├── redis的info.sh │ └── 配置修改CONFIG_SET.sh ├── rrdtools │ └── rrdtools生产图片.sh ├── rsyncd │ ├── rsync_inotify.sh │ ├── rsyncd.txt │ └── rsyncd_conf.sh ├── samba │ └── samba_install.txt ├── scribe │ ├── scribe.conf │ ├── scribe_admin.sh │ ├── scribe安装配置.sh │ ├── 在centOS5.5上安装facebook-scribe │ └── 开源日志收集系统Scribe.sh ├── sonar │ └── sonar安装.sh ├── squid │ └── squid反向代理配置.sh ├── tomcat │ ├── Tomcat_的三种(bio,nio.apr)_高级_Connector_运行模式 │ ├── Tomcat参数优化.sh │ ├── Tomcat安全配置指南.html │ └── 一个Tomcat支持不同的域名访问各自不同程序的配置方法.sh ├── webbench │ └── Nginx使用webbench进行压力测试.sh ├── wiki │ └── 安装配置Jira和Confluence集成环境.sh └── xtrabackup │ └── percona-xtrabackup.sh ├── python实例手册.py └── shell实例手册.sh /README.md: -------------------------------------------------------------------------------- 1 | ## ops_doc 2 | 3 | 文档制作: 雪松 4 | 5 | 更新日期: 2016-04-28 6 | 7 | 本文档手册希望可以达到通俗易懂,方便运维人员使用,错误在所难免,还望指正! 8 | 9 | github更新下载地址: https://github.com/liquanzhou/ops_doc 10 | 11 | 请勿删除信息,转载请说明出处,抵制不道德行为 12 | 13 | 14 | 15 | 16 | 17 | 18 | ### 一.总是听到有说: 19 | 20 | #### 1.运维累,背锅,薪资低? 21 | 22 | 运维没做好,没有核心技能,肯定是累且背锅,薪资涨不上去。各行各业皆是如此,最底层都是一滩烂泥,不仅仅是运维行业。小事(运维处理个磁盘,处理个内存报警)其实就能体现出来能力. 太多运维都是处理表面问题,根本不去真正了解需求,也不去思考解决办法,不用心去把事情做漂亮,成长也基本止步,指望这类人去搞点创新,解决点难题,基本不可能,反过来想这种人怎么可能高工资? 23 | 做任何行业都一样,重要的是思考: 怎么差异化,怎么脱颖而出,做出与众不同,怎么做到核心精英. 24 | 25 | #### 2.运维开发的自动化取代运维? 26 | 27 | 运维开发只是运维的一个技能分支,不需要神话运维开发。大多是培训招生鼓吹,运维开发淘汰运维。只做运维开发,不了解运维业务,做的系统平台怎么可能好用? 28 | 不了解业务,平台实现无法统一标准,统一流程。 29 | 30 | #### 3.云平台取代运维? 31 | 32 | 云商资源是工具,业务问题是云商无法解决干预的,需要专业运维人员使用拼接。 33 | 34 | #### 4.人工智能取代运维? 35 | 36 | 人工智能类似GPT取代运维更是不可能,只会更好的帮助运维工作。高级运维要在架构能力,主导能力,灵活运用,解决各种复杂难题,并不是人工智能直接给出的建议就能解决。 37 | 38 | 39 | 40 | ### 二.做好本职工作: 41 | 42 | 坚持本心,切勿浮躁,避免被他人干扰。 43 | 44 | 不了解运维痛点,不解决业务难题,无论运维,SRE,运维开发都是做不好的。 45 | 46 | 干活前多统计,多准备,多思考规避问题,多考虑简化方案。干的时候先挑大块的标准化的方式搞 47 | 48 | 见过运维技术好,搭建各种服务效率,各种参数都知道,可唯独没有任何标准化思维,导致工作累,业务又频繁故障。 49 | 50 | 运维岗位比其他技术岗位更了解技术架构全链路,很多开发和架构解决不了的问题只能依靠运维。 51 | 52 | 做运维部门核心技术人员,核心技术能力才能让自己不可替代。不要区分运维和运维开发,两方面能力都重要。 53 | 54 | 55 | 56 | 57 | 58 | 59 | ### 三.针对运维岗位的一点经验看法: 60 | 61 | ##### 做好技术,技术到了一定程度,多考虑业务。核心是用技术解决业务上的难题,想办法从根本原因解决问题。不能只解决表面问题。少一些花里胡哨的技术和流程。 62 | ##### 多花心思考虑实用性,稳定性,运维可协同维护,开发的用户体验等。 63 | ##### 多梳理业务,没什么解决不了的难题。 64 | ##### 多主导业务,技术和能力才能提高质变。 65 | ##### 监控(三层兜底监控和多维度的监控)和发布(打包,发布,服务注册,平滑上线,流量接入,自动扩容)是最核心重要的工作,需要反复打磨,简单好用,好协同。 66 | ##### 工作标准要高,不能只搞表面,才能不被其他部门骂。 67 | 68 | 69 | 统一业务标准化: 环境一致,数据一致,流程一致。最后才是自动化的实现。 70 | 71 | 业务可观测: 故障第一时间可以报警,链路可追踪,监控图表可事后分析。减少无用信息,快捷有效。 72 | 73 | 业务稳定性: 稳定是核心标准,处理故障后,多分析原因始末,多和业务方和架构师探讨交流,积累架构经验。 74 | 75 | 76 | 77 | ### 四.针对k8s使用的一点经验看法: 78 | 79 | 80 | 好多公司运维部门都是积极使用k8s,但没有规划的使用又会引起好多不易维护的难点痛点: 81 | 82 | 83 | 1.缺少自动化,导致繁重的人肉维护大量yaml文件 84 | 85 | 86 | 如果可以,k8s内部的yaml尽量规避任何人肉改动,全部发布系统标准化生成(deployment,service,hpa,inrgess,vs等等全部统一与模板一致).规避复杂的7层路由策略在k8s中做.尽可能对外入口统一,k8s流量接入与deployment一一对应,就可以实现k8s内部全部标准化自动生成 87 | 88 | 89 | 2.无法统一注册中心,每组k8s有各自的etcd注册,两组k8s中服务互联就会有麻烦,开发可能更喜欢服务框架依赖的各自注册发现方式.导致流量接入混乱.流量平滑,维护复杂,多语言服务互联障碍. 90 | 91 | 92 | 这个情况,要看实际业务场景,多与开发架构师沟通方案,如何推动统一注册发现机制,让开发互调流量和运维的流量接入统一 93 | 94 | 95 | 96 | 97 | ### 五.新工作环境梳理工作思路: 98 | 99 | 100 | 1.优先解决棘手的业务稳定问题 101 | 102 | 103 | 2.多维度监控,确保第一时间发现问题,定位问题根因 104 | 105 | 106 | 3.多与架构交流,沟通稳定性解决方案 107 | 108 | 109 | 4.统一打包和发布,定好标准的全流程,拒绝开发各异的方式,但还能支持开发多种合理的需求,有足够的扩展能力 110 | 111 | 112 | 5.提升自动化工作范围 113 | 114 | 115 | 6.成本控制 116 | 117 | 118 | 7.精准报警,清理无用大量报警 119 | 120 | 121 | 8.清理无用5xx错误,程序error干扰 122 | 123 | 124 | 125 | ### 六.中小公司做到如下标准,就能解决大部分运维痛点: 126 | 127 | ##### 运维标准: 128 | 129 | 1.服务全部标准化,统一打包和部署方式 130 | 131 | 2.监控图精准易用 132 | 133 | 3.监控报警灵敏,避免重复检查次数,触发即报警 134 | 135 | 4.报警维度健全 136 | 137 | 5.尽可能自动化 138 | 139 | 6.自动扩容(需要服务上下线平滑) 140 | 141 | 7.cdn和存储主备自动切换 142 | 143 | 8.跨境质量 144 | 145 | 146 | ##### 开发标准: 147 | 148 | 1.程序日志级别可靠,通过error数量报警 149 | 150 | 2.程序状态码标准,通过5xx状态码报警 151 | 152 | 3.核心服务降级 153 | 154 | 155 | ##### 架构标准: 156 | 157 | 1.统一健康检查接口 158 | 159 | 2.统一下线接口 160 | 161 | 3.全局服务统一注册,不区分语言和服务类型 162 | 163 | 4.注册有权重 164 | 165 | 5.调用方可根据5xx错误次数进行权重熔断 166 | 167 | 6.发布过程平滑,启动预热(可基于权重小流量) 168 | 169 | 7.服务调用打点,调用服务名,被调用服务名,uri,状态 170 | 171 | 8.日志规范可收集 172 | 173 | 9.链路跟踪,前后端串联 174 | 175 | 10.限流,应对雪崩场景 176 | 177 | 11.响应时间 178 | 179 | 12.mysql限制全局兜底limit 180 | 181 | 13.ABtest能力 182 | 183 | -------------------------------------------------------------------------------- /Service/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liquanzhou/ops_doc/7b769b1e0ec83170a1533a494662e80f01135041/Service/.DS_Store -------------------------------------------------------------------------------- /Service/Docker/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liquanzhou/ops_doc/7b769b1e0ec83170a1533a494662e80f01135041/Service/Docker/.DS_Store -------------------------------------------------------------------------------- /Service/Docker/docker安装.sh: -------------------------------------------------------------------------------- 1 | docker 2 | 3 | yum -y install docker-io # 安装docker 4 | service docker start # 启动docker服务 5 | chkconfig docker on 6 | 7 | https://registry.hub.docker.com # docker官方镜像地址 8 | docker search centos # 查找源中镜像 9 | docker pull centos:6 # 从官方下载centos的docker镜像 10 | 11 | docker images # 查看docker镜像 12 | docker ps # 查看docker启动的容器 13 | docker ps -a # 查看docker所有容器 包括未启动的 14 | 15 | 16 | docker run -d -t -i centos:6 /bin/bash # 启动docker隔离的容器 -t 让Docker分配一个伪终端,并绑定到容器的标准输入上. -i 则让容器的标准输入保持打开. -d 守护进程 17 | docker attach ID # 进入后台的容器 指定容器ID # util-linux 也可以进入容器 18 | docker logs ID # 获取容器内输出信息 19 | 20 | docker stop ID # 停止已启动的容器 21 | docker start ID # 启动已停止的容器 22 | docker restart ID # 重启容器 23 | 24 | docker export 7691a814370e > centos_a.tar # 导出容器快照到本地 25 | cat centos_a.tar | docker import - test/centos_a:v1.0 # 从容器快照文件中再导入为镜像 26 | 27 | docker save -o centos.6.tar centos:6 # 保存镜像到文件 28 | docker load --input centos.6.tar # 载入镜像文件 29 | 30 | docker rm 容器ID # 删除终止状态的容器 加-f强制终止运行中的容器 31 | docker rmi test/centos_a:v1.0 # 移除本地镜像 在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器 32 | 33 | 34 | brctl show # 查看网桥 35 | 36 | docker pull library/nginx 37 | 38 | docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx 39 | 40 | mkdir testa # 创建静态资源目录 41 | vim testa/a.txt 42 | aaaaaa 43 | 44 | vim Dockerfile # 创建 Dockerfile 文件 45 | FROM nginx 46 | COPY testa /usr/share/nginx/html # 拷贝前面创建的静态资源目录 47 | 48 | # Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等。当前目录下包含Dockerfile,使用命令build来创建新的image,并命名为 some-content-nginx 49 | docker build -t some-content-nginx . 50 | 51 | docker run --name some-nginx -d some-content-nginx 52 | 53 | docker run --name some-nginx-test1 -d -p 8080:80 some-content-nginx # 暴漏端口的方式 54 | 55 | docker run -d --name db training/postgres 56 | docker run -d -P --name web --link db:db training/webapp python app.py # 新建立容器,并连接db容器 --link name:alias 57 | 58 | curl http://localhost:8080/a.txt 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /Service/Docker/创建私有仓库: -------------------------------------------------------------------------------- 1 | ::::基于CentOS 6.6 2 | 3 | * 修改Docker参数 4 | /etc/sysconfig/docker: 5 | other_args="-H tcp://0.0.0.0:2375 --insecure-registry 192.168.11.247:5000 -H unix:///var/run/docker.sock" 6 | 7 | 启动服务: 8 | service docker start 9 | 10 | * 创建存放images的目录 11 | mkdir -pv /data/registry 12 | 13 | * 启动私有仓库容器, 并映射本地目录 14 | # 启动仓库容器 15 | docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry 16 | 17 | # 可以拉取一个比较小的images做测试 18 | docker pull ubuntu 19 | 20 | # 更改images的tag 21 | sudo docker tag ubuntu 192.168.11.247:5000/ubuntu 22 | 23 | # Push images 24 | sudo docker push 192.168.11.247:5000/ubuntu 25 | 26 | # Pull images 27 | sudo docker pull 192.168.11.247:5000/ubuntu 28 | 29 | # 通过API查看 30 | curl http://192.168.11.247:5000/v1/search 31 | 32 | # 在私有仓库搜索 33 | docker search 192.168.11.247:5000/ubuntu 34 | -------------------------------------------------------------------------------- /Service/Docker/常用软件/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liquanzhou/ops_doc/7b769b1e0ec83170a1533a494662e80f01135041/Service/Docker/常用软件/.DS_Store -------------------------------------------------------------------------------- /Service/Docker/常用软件/Nginx/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liquanzhou/ops_doc/7b769b1e0ec83170a1533a494662e80f01135041/Service/Docker/常用软件/Nginx/.DS_Store -------------------------------------------------------------------------------- /Service/Docker/常用软件/Nginx/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM CentOS-6.6/sshd 2 | 3 | MAINTAINER 汪志鹏 4 | 5 | RUN /bin/touch /tmp/wzp 6 | 7 | RUN /bin/rpm -ivh http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm \ 8 | && /usr/bin/yum install nginx -y 9 | 10 | RUN useradd deploy \ 11 | && echo 'deploy:deploy' | chpasswd \ 12 | && mkdir -p /usr/local/nginx/logs/ \ 13 | && mkdir -p /etc/nginx/files 14 | 15 | COPY assets/nginx.conf /etc/nginx/ 16 | 17 | RUN echo 'deploy:iwangzhipeng' | chpasswd \ 18 | && chown -R deploy.deploy /etc/nginx/ \ 19 | && service sshd start 20 | 21 | EXPOSE 22 22 | EXPOSE 80 23 | EXPOSE 88 24 | 25 | VOLUME ["/etc/nginx/files"] 26 | 27 | WORKDIR /usr/sbin/ 28 | 29 | ENTRYPOINT nginx && tail -f /usr/local/nginx/logs/* 30 | 31 | # CMD ["nginx && tail -f /etc/nginx/*"] 32 | -------------------------------------------------------------------------------- /Service/Docker/常用软件/Nginx/README.md: -------------------------------------------------------------------------------- 1 | Build: 2 | docker build -t "192.168.11.247:5000/centos-6-6/nginx" . 3 | 4 | Run: 5 | docker run -ti -d -v /root/nginx/file:/etc/nginx/file -p 2222:22 -p 8888:80 --name nginx 192.168.11.247:5000/centos-6-6/nginx 6 | -------------------------------------------------------------------------------- /Service/Docker/常用软件/Nginx/assets/files/wzp.conf: -------------------------------------------------------------------------------- 1 | upstream cherry { 2 | server www.baidu.com weight=1; 3 | } 4 | server { 5 | listen 88; 6 | access_log /usr/local/nginx/logs/cherry_access.log newdata; 7 | error_log /usr/local/nginx/logs/cherry_error.log; 8 | location / { 9 | rewrite "^/(.*)$" http://www.baidu.com/$1 break; 10 | #proxy_pass http://cherry/; 11 | #proxy_set_header Host $http_host; 12 | #proxy_set_header X-Real-IP $remote_addr; 13 | #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 14 | #proxy_redirect off; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Service/Docker/常用软件/Nginx/assets/nginx.conf: -------------------------------------------------------------------------------- 1 | user deploy deploy; 2 | worker_processes 2; 3 | error_log /usr/local/nginx/logs/nginx_error.log debug; 4 | pid /usr/local/nginx/logs/nginx.pid; 5 | worker_rlimit_nofile 65535; 6 | events { 7 | use epoll; 8 | worker_connections 65535; 9 | } 10 | 11 | http { 12 | # passenger_root /usr/local/ruby/lib/ruby/gems/1.8/gems/passenger-3.0.12; 13 | # passenger_ruby /usr/local/ruby/bin/ruby; 14 | server_names_hash_bucket_size 128; 15 | include mime.types; 16 | default_type application/octet-stream; 17 | client_max_body_size 100m; 18 | # passenger_max_pool_size 100; 19 | # passenger_max_instances_per_app {{grains['num_cpus']*2}}; 20 | sendfile on; 21 | keepalive_timeout 65; 22 | log_format withdata '$remote_addr - $http_host $remote_user [$time_local] ' 23 | '"$request" $status $body_bytes_sent ' 24 | '"$http_referer" "$http_user_agent" $request_time $content_type $request_body'; 25 | log_format newdata '$remote_addr - $http_host $remote_user [$time_local] ' 26 | '"$request" $status $body_bytes_sent $request_length ' 27 | '"$http_referer" "$http_user_agent" $request_time $upstream_response_time'; 28 | include /etc/nginx/files/*.conf ; 29 | server { 30 | listen 80 default_server; 31 | server_name localhost; 32 | access_log /usr/local/nginx/logs/access.log withdata; 33 | error_log /usr/local/nginx/logs/error.log; 34 | location /nginx_status { 35 | stub_status on; 36 | access_log off; 37 | allow 127.0.0.1; 38 | deny all; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Service/Docker/镜像制作/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos-6.6/base 2 | MAINTAINER 汪志鹏 <634348691@qq.com> 3 | 4 | RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key 5 | RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key 6 | 7 | RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd 8 | 9 | RUN mkdir -p /root/.ssh \ 10 | && chown root.root /root \ 11 | && chmod 700 /root/.ssh 12 | 13 | EXPOSE 22 14 | 15 | COPY assets/.bash* /root/ 16 | 17 | RUN echo 'root:iwangzhipeng' | chpasswd 18 | 19 | # 此处可以增加YumRepo, 我这边提交到GitHub上 暂时不确定地址. 20 | # RUN curl https://www.iOpDev.com/Repo.sh | sh 21 | 22 | RUN chkconfig --level 3 sshd on 23 | 24 | ENV LANG en_US.UTF-8 25 | ENV LC_ALL en_US.UTF-8 26 | 27 | CMD /usr/sbin/sshd -D 28 | -------------------------------------------------------------------------------- /Service/Docker/镜像制作/YumRepo/Repo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 3 | wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 4 | mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup 5 | mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup 6 | wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo 7 | -------------------------------------------------------------------------------- /Service/Docker/镜像制作/assets/.bash_history: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liquanzhou/ops_doc/7b769b1e0ec83170a1533a494662e80f01135041/Service/Docker/镜像制作/assets/.bash_history -------------------------------------------------------------------------------- /Service/Docker/镜像制作/assets/.bash_logout: -------------------------------------------------------------------------------- 1 | # ~/.bash_logout 2 | 3 | -------------------------------------------------------------------------------- /Service/Docker/镜像制作/assets/.bash_profile: -------------------------------------------------------------------------------- 1 | # .bash_profile 2 | 3 | # Get the aliases and functions 4 | if [ -f ~/.bashrc ]; then 5 | . ~/.bashrc 6 | fi 7 | 8 | # User specific environment and startup programs 9 | 10 | PATH=$PATH:$HOME/bin 11 | 12 | export PATH 13 | -------------------------------------------------------------------------------- /Service/Docker/镜像制作/assets/.bashrc: -------------------------------------------------------------------------------- 1 | # .bashrc 2 | 3 | # User specific aliases and functions 4 | 5 | alias rm='rm -i' 6 | alias cp='cp -i' 7 | alias mv='mv -i' 8 | 9 | # Source global definitions 10 | if [ -f /etc/bashrc ]; then 11 | . /etc/bashrc 12 | fi 13 | -------------------------------------------------------------------------------- /Service/Docker/镜像制作/镜像制作: -------------------------------------------------------------------------------- 1 | ::::基于CentOS 6.6 2 | 3 | 安装制作工具 4 | yum -y install febootstrap 5 | 6 | 制作镜像 7 | febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim-minimal -i openssh-server -i openssh-clients centos6 CentOS-6.6_Base http://mirrors.aliyun.com/centos/6.6/os/x86_64/ 8 | 9 | 导入 10 | cd CentOS-6.6_Base 11 | tar -c .|docker import - "centos-6.6/base" 12 | 13 | 创建一个带ssh的images 14 | docker build -t "CentOS-6.6/sshd" . 15 | 16 | 启动一个实例: 17 | docker run -d -p 127.0.0.1:1994:22 CentOS-6.6/sshd 18 | 19 | 导出镜像 20 | docker save IMAGENAME | bzip2 -9 -c>img.tar.bz2 21 | 22 | 导入镜像(换一台机器) 23 | bzip2 -d -c 57 | 58 | Ibiblio 59 | Ibiblio 60 | http://www.ibiblio.org/maven/ 61 | 62 | 63 | PlanetMirror 64 | Planet Mirror 65 | http://public.planetmirror.com/pub/maven/ 66 | 67 | 68 | 69 | 70 | mvn deploy:deploy-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar -DrepositoryId=maven-repository-inner -Durl=ftp://xxxxxxx/opt/maven/repository/ 71 | 72 | 73 | 发布第三方Jar到本地库中: 74 | 75 | mvn install:install-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar 76 | 77 | 78 | -DdownloadSources=true 79 | 80 | -DdownloadJavadocs=true 81 | 82 | mvn -e 显示详细错误 信息. 83 | 84 | mvn validate 验证工程是否正确,所有需要的资源是否可用。 85 | mvn test-compile 编译项目测试代码。 。 86 | mvn integration-test 在集成测试可以运行的环境中处理和发布包。 87 | mvn verify 运行任何检查,验证包是否有效且达到质量标准。 88 | mvn generate-sources 产生应用需要的任何额外的源代码,如xdoclet。 89 | 90 | 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lifxue/archive/2009/10/14/4662902.aspx 91 | 92 | 常用命令: 93 | mvn -v 显示版本 94 | mvn help:describe -Dplugin=help 使用 help 插件的 describe 目标来输出 Maven Help 插件的信息。 95 | mvn help:describe -Dplugin=help -Dfull 使用Help 插件输出完整的带有参数的目标列 96 | mvn help:describe -Dplugin=compiler -Dmojo=compile -Dfull 获取单个目标的信息,设置 mojo 参数和 plugin 参数。此命令列出了Compiler 插件的compile 目标的所有信息 97 | mvn help:describe -Dplugin=exec -Dfull 列出所有 Maven Exec 插件可用的目标 98 | mvn help:effective-pom 看这个“有效的 (effective)”POM,它暴露了 Maven的默认设置 99 | 100 | mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook 创建Maven的普通java项目,在命令行使用Maven Archetype 插件 101 | mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序 102 | mvn dependency:resolve 打印出已解决依赖的列表 103 | mvn dependency:tree 打印整个依赖树 104 | 105 | mvn install -X 想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行 106 | mvn install -Dmaven.test.skip=true 给任何目标添加maven.test.skip 属性就能跳过测试 107 | mvn install assembly:assembly 构建装配Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件 108 | 109 | mvn jetty:run 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用 110 | mvn compile 编译你的项目 111 | mvn clean install 删除再编译 112 | 113 | mvn hibernate3:hbm2ddl 使用 Hibernate3 插件构造数据库 -------------------------------------------------------------------------------- /Service/Maven/Maven安装.sh: -------------------------------------------------------------------------------- 1 | Linux 安装 Maven 2 | 3 | 4 | Maven, 是基于项目对象模型(Project Object Model, POM),通过一小段描述信息来管理项目的构建,报告,文档的软件项目管理工具。 5 | 6 | 目前,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。但是,Ant 的项目管理工具(作为 make的替代工具)不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它元信息(如开发人员/拥有者、版本或站点主页)。 7 | 8 | Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 9 | 10 | Maven这个单词来自于意第绪语,意为知识的积累,最早在Jakata Turbine项目中它开始被用来试图简化构建过程。当时有很多项目,它们的Ant build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。 11 | 12 | 13 | Maven 和 Ant 有什么不同呢? 14 | 15 | Ant 为 Java 技术开发项目提供跨平台构建任务 16 | 17 | Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务 18 | 19 | ​ 20 | 21 | Maven 22 | 23 | Ant 24 | 25 | 标准构建文件 26 | 27 | project.xml 和 maven.xml 28 | 29 | build.xml 30 | 31 | 特性处理顺序 32 | 33 | ${maven.home}/bin/driver.properties 34 | 35 | ${project.home}/project.properties 36 | 37 | ${project.home}/build.properties 38 | 39 | ${user.home}/build.properties 40 | 41 | 通过 -D 命令行选项定义的系统特性,最后一个定义起决定作用。 42 | 43 | 通过 -D 命令行选项定义的系统特性 44 | 45 | 由 任务装入的特性 46 | 47 | 第一个定义最先被处理。 48 | 49 | 构建规则 50 | 51 | 构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。 52 | 53 | 构建规则或多或少是静态的,除非使用