[关闭]
@andrewwang 2017-03-21T00:22:30.000000Z 字数 7688 阅读 1056

运维

运维


命令

常用

  • 硬盘
    df -h // 硬盘空间
  • 文件属性
    linux修改文件所属用户和组
    chmod -R 766 Document // 修改目录Document的权限
    chown -R www-data Document // 修改目录Document的所有者成www-data
    chgrp - R www-data /Document // 修改目录Document的所在者成www-data
  • 文件和目录
    mkdir -p /d1/d2 // 自动创建多层
    ln -s sourcedir distdir // 建立软连接
  • 文件
    find / -name xyz // 指定文件全路径查找(xyz)
    find / -name xyz // 指定文件全路径模糊查找(xyz)
    find . -type f -size +100M // 查找大文件(100M)
    echo > filePath // 清空文件内容
  • 内存
    echo 1 > /proc/sys/vm/drop_caches // 清除不用的内存
    top // 查看内存使用情况,输入shift + m可根据内存使用量进行排序
    top -p 1111 // 查看特定进程号的内存(1111)
  • 进程
  1. ps -ef | grep mongo | awk '{print $2}' | xargs kill -9 // kill名称对应的进程(mongo)
  2. lsof -i :27017 | awk '{print $2}' | xargs kill -9 // kill端口对应的进程(27017)
  • 进程查询
    ps -ef | grep java // 查看匹配名称的进程(java)
    ps -ef | wc -l // 查看运行的进程总数
    ps -fu csvn // 查看特定进程(csvn)
    lsof -i :9000 // 查看端口执行的进程(9000)
  • 网络
    ifconfig | grep inet // ip地址

操作

传输

  • 公网下载
    wget {url}
  • SSH传输传输文件
    上传:scp {localFilePath} {account}@{IP}:{remoteFilePath}
    下载:scp {account}@{IP}:{remoteFilePath} {localFilePath}

自启动配置

在文件/etc/rc.local加入命令,例如:
cd /var/www/project/ && /usr/bin/java -jar project.jar >/dev/null 2>&1 &
sh cmd.sh
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf &
service elasticsearch restart
service iptables stop
linux程序开机自启动的方法详解
Linux如何实现开机启动程序详解
chkconfig命令
Ubuntu下使用sysv-rc-conf管理服务

远程免密码设置

重点步骤如下:
1. 本地:生成公共密钥,用默认值
ssh-keygen -t rsa
2. 本地:公共密钥上传到远程
scp ~/.ssh/id_rsa.pub root@192.168.161.138:/root/.ssh/id_rsa.136.pub
3. 远程:将上传的本地公共密钥加到远程授权列表
cat ~/.ssh/id_rsa.136.pub>>~/.ssh/authorized_keys

2和3可合成一步本地操作:
cat ~/.ssh/id_rsa.pub | ssh root@192.168.161.138 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
cat ~/.ssh/id_rsa.pub | ssh root@192.168.161.138 "cat >> ~/.ssh/authorized_keys"

定时任务

yum -y install crontabs
编辑:crontab -e
重启:service crond restart

  • ssl的crt生成pem
    openssl x509 -in mycert.crt -out mycert.pem -outform PEM

网络

常用

  • ip
  • ifconfig
  • netstat
    netstat –lntp // 查看开启了哪些端口
    netstat –r // 路由表的信息
    netstat –an | grep 8080 // 所有的有效连接信息列表(8080)
    netstat –an | grep -i listen // 目前系统侦听的端口号
    netstat –anp | grep 8080 // 查看连接进程所占用的端口(8080)
  • 网卡
    ifconfig em 192.168.161.121/24 // 设置网卡
    ifconfig em down // 禁用网卡
    nano /etc/sysconfig/network-scripts/ifcfg-em // 编辑网卡
  • 重启网络服务
    service network restart
    service network reload

路由

设置, 永久路由。使用route 命令添加的路由,机器重启或者网卡重启后路由就失效
route -n // 查看路由

网桥(brctl)

配置

防火墙(iptables)

iptables -L -n -v // 查看定义规则的详细信息
service iptables status
service iptables stop
iptables -A INPUT -p tcp --dport 5672 -j ACCEPT // 接受5672端口的TCP访问

OS特性

centos

Ubuntu

  • 安装卸载软件
    安装:
    apt-get install xxxxx
    1. 卸载:
      apt-get remove xxxxx
      apt-get autoremove
  • 系统版本
    lsb_release -a

软件

docker

https://www.docker.com/
Docker入门实战
使用 Docker 搭建 Java Web 运行环境

nginx

  • 文件上传大小配置:conf的http内:client_max_body_size 100m;
  • 添加ssl支持
  • 增加网站:在目录(Ubuntu是/etc/nginx/sites-enabled/,centos是/etc/nginx/conf.d/)增加配置文件,如confFile。
  • 检查nginx配置的语法:nginx -t
  • 重新加载:nginx -s reload
  • 重启:/etc/init.d/nginx restart

apache

增加网站:在目录/etc/apache2/sites-available/增加配置文件,如conFile。centos直接在配置文件底部追加
启用网站:a2ensite confFile
禁用网站:a2dissite confFile
重新加载:service apache2 reload
版本:http -v

静态网站的目录权限设置:
1. 用root创建目录
2. 目录所有者改成ftp账号

tomcat

路径是/usr/local/tomcat/bin/startup.sh,/usr/local/tomcat/bin/shutdown.sh
重启操作

redis

服务部署

  • 启动:/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf &
  • ps -ef |grep redis

客户端命令

  • 本机无密登录:redis-cli
  • 本地密码登录:redis-cli -a 密码
  • 远程登录:redis-cli -a密码 -h 主机名
  • 授权:auth pwd
  • 切换db:select 2
  • key数量:dbsize
  • 获取数据:get key
  • 是否存在:exists key
  • 显示匹配的key:keys *
  • 删除db的数据: flushdb
  • 删除所有数据: flushall

mysql

安装

MySQL 双机热备配置步骤
使用Nginx+Keepalived组建高可用负载平衡Web server集群
Mysql监控执行速度慢的语句
show variables like 'log_slow_queries';
show variables like 'long_query_time';
show variables like 'slow_query_log_file';
SET GLOBAL log_slow_queries = ON;
SET GLOBAL long_query_time = 1;
默认日志目录:/var/lib/mysql/
max_allowed_packet设置,过小导致写入失败
set global log_bin_trust_function_creators=1;

命令

  • 启动:service mysql restart
  • 登录客户端:mysql -u root -p
  • 备份
    1. 新建mysql备份账号
      登录
      GRANT LOCK TABLES, SELECT ON . TO ba@localhost IDENTIFIED BY '4Q2ifQXq5DxgT8wY';
    2. 备份
      mysqldump -uba -p4Q2ifQXq5DxgT8wY eastnb > eastnb.db
  • UTF8的数据库创建:CREATE DATABASE db1 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  • JDBC查询条件输入中文,查询为空
    String url = "jdbc:mysql://127.0.0.1:3306/mydata?useUnicode=true&characterEncoding=utf-8";
  • MySQL Workbench的安全更新模式
    SET SQL_SAFE_UPDATES=0;

客户端命令

  • 显示变量:SHOW VARIABLES LIKE 'max_allowed_%';
  • 显示所有数据库:show databases;
  • 选择数据库:use {%database};
  • 显示所有表:show tables;

ActiveMQ

centos

安装
全部同Ubuntu。

Ubuntu

MongoDB

centos

Ubuntu

安装

  • 默认配置文件/etc/mongod.conf,默认使用的数据库文件路径是/data/db/。
  • 运行服务:
    mongod --dbpath=/data/db --fork --logpath=/data/db/mongod.log
  • 关闭服务:
    启动mongo客户端:mongo
    输入:
    use admin
    db.shutdownServer()
  • 废弃的运行方式:
    ps -ef | grep mongo | awk '{print $2}' | xargs kill -9
    mongod &
  • 检查是否启动,lsof -i :27017
  • 远程访问配置:mongodb.conf
    屏蔽bind_ip = 127.0.0.1
    启用auth = true
  • mongod是服务端,mongo是客户端

命令

  • 查询
    db.system.users.findOne({user:'andrew'})
    db.system.users.find()
  • 模糊查询
    {"topic": {$regex:/男人.*/i}}

管理

官方手册
MongoDB基本管理命令
MongoDB 创建数据库
Mongodb3.0 配置身份验证db.createUser
MongoDB数据库中关于roles权限的说明

  1. 超级管理员权限:
    use admin
    db.createUser( { user: "adm", pwd: "pwd", roles: [ "root"] } )
  2. 单库读写权限:
    use db2
    db.createUser( { user: "db2RW", pwd: "pwd", roles: [ { role: "readWrite", db: "db2" }]})
  3. 多库权限:
    use admin
    db.createUser( { user: "andrew", pwd: "pwd", roles: [ { role: "readWrite", db: "db1" } , { role: "readWrite", db: "db2" }]})

RabbitMQ

官网

centos

安装
1. rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2. yum install erlang
3. wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.4/rabbitmq-server-3.3.4-1.noarch.rpm
4. yum install rabbitmq-server-3.3.4-1.noarch.rpm
--------3.6.5-1的rabbitmq,对应epel没找到
yum install rabbitmq-server-3.6.5-1.noarch.rpm
5. service rabbitmq-server start

Ubuntu

安装,apt安装,部分命令调整如下:
wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
sudo apt-key add rabbitmq-signing-key-public.asc

web管理系统安装

  • 端口55672其实是15672
    iptables -A INPUT -p tcp --dport 5672 -j ACCEPT
    iptables -A INPUT -p tcp --dport 15672 -j ACCEPT
  • /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
  • /etc/init.d/rabbitmq-server restart
  • netstat -ntlp |grep 15672
  • http://192.168.161.136:15672/

账号管理和角色分配

  • rabbitmqctl add_user account password
  • rabbitmqctl set_user_tags account administrator
  • rabbitmqctl set_permissions -p / account '.' '.' '.*'

Python

CentOS安装Python3.6
1. 目录/usr/bin/下只需要改文件yum。
2. 注意python版本的不同,具体版本号通过ls /usr/bin/获取。如版本号是2.6(yum使用的),则#!/usr/bin/python 改为 #!/usr/bin/python2.6。
Ubuntu安装Python3.5

ZooKeeperTODO

客户端Curator

Hadoop

Spark

管理系统Zeppelin

Storm

Disconf

https://www.oschina.net/p/disconf
http://www.cnblogs.com/zhangxh20/p/5464103.html

Ruby

Mac升级
mac安装
rvm install 2.3.3
gem install bundler

Maven

m2安装在个人目录。如/Users/andrew/.m2/,/root/.m2/等

Git

git 免除账号密码的设置

虚拟化工具

  • ESXi
  • kvm

运维软件

持续集成

jenkins(推荐)

Ubuntu安装
service jenkins restart
jenkins credentials & git ssh 认证
Process leaked file descriptors error on JENKINS:-Dhudson.util.ProcessTree.disable=true
解决无法切换到jenkins用户的问题
jenkins 入门教程(上)

使用:
工作目录参数:%workspace%

walle(放弃)

基于ansible
https://www.walle-web.io/docs/index.html
https://github.com/meolu/walle-web/blob/master/docs/README-zh.md

运维

SaltStack(大规模时推荐)

ZeroMQ

Ansible(推荐)

SSH
自动化运维工具Ansible详细部署
Jenkins+Ansible+Gitlab自动化部署三剑客

Puppet(放弃)

自创语言

监控

Linux常用监控指标

Open-Falcon(推荐)

资料
API

Nagios+Cacti

Zabbix

系统

日志分析

大规模系统:用logstash之类的
小系统:用Jenkins创建日志查询任务,执行即可查看。配置步骤
1. 启用jenkins账号的bash(centos特有)
2. 切换账号:su jenkins
3. 配置ssh的config:加入日志服务器的IP和账号
4. jenkins账号免登录ssh(日志服务器)

利用ssh和tail实时监控应用日志

运维接口清单

接口 地址 说明
心跳状态 /ops/heartbeat 监控为主
软件信息 /ops/version 所有类库的编译版本和编译时间
服务状态 /ops/service 开发的服务状态,如短信通道,定时任务

系统安装目录的结构

配置文件需设置profile。

  1. etc/产品名
  2. src:源代码
  3. sh:命令
  4. bin
  5. jar包,配置文件(“application.properties”)
  6. log:/var/log/产品名
  7. errordebug
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注