公钥批量发送

#!/bin/bash
#免交互分发公钥
for ip in 7 8 31 41 51
do
sshpass -p 1 ssh-copy-id  -o StrictHostKeyChecking=no "root@172.16.1.$ip"
done

rsync服务端


uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = yes
auth users = rsync_backup
secrets file = /etc/rsyncd.passwd
log file = /var/log/rsyncd.log
######################################
[data]
path = /data

跳板机

配置在环境变量 /etc/bashrc

#!/bin/bash
#jumpserver
lb01=10.0.0.5
lb02=10.0.0.6
web01=10.0.0.7
web02=10.0.0.8
web03=10.0.0.9
nfs=10.0.0.31
backup=10.0.0.41
db01=10.0.0.51
m01=10.0.0.61
zabbix=10.0.0.71

menu(){
        cat <<-EOF
        +-------------------------+
        |     1) lb01             |
        |     2) lb02             |
        |     3) web01            |
        |     4) web02            |
        |     5) web03            |
        |     6) nfs              |
        |     7) backup           |
        |     8) db01             |
        |     9) m01              |
        |     10) zabbix          |
        |     h) help             |
        +-------------------------+
EOF
}
#菜单函数
menu

#连接函数
connect(){
  ping -c 1 -w 1 $1 &>/dev/null
  if [ $? -eq 0 ];then
    ssh root@$1
  else
    echo -e "\033[5;4;40;31m 别连了,我的哥,$2:$1机器都没开!!!\033[0m"
  fi
}

#控制不让输入ctrl+c,z
trap "" HUP INT TSTP
while true
do
    read -p "请输入要连接的主机编号:" num
    case $num in
            1|lb01)
              connect $lb01 lb01
                    ;;
            2|lb02)
              connect $lb02 lb02
                    ;;
            3|web01)
              connect $web01 web01
                    ;;
            4|web02)
              connect $web02 web02
                    ;;
            5|web03)
                  connect $web03 web03
                    ;;
            6|nfs)
              connect $nfs nfs
                    ;;
            7|backup)
                  connect $backup backup
                    ;;
            8|db01)
                   connect $db01 db01
                    ;;
            9|m01)
                    connect $m01 m01
                    ;;
            10|zabbix)
                    connect $zabbix zabbix
                    ;;
            h|help)
                    clear
                    menu
                    ;;
            close)
                    break
                    ;;
    esac
done

数据库远程授权

grant all on wordpress.* to wp@'172.16.1.%' identified by '123456';##设置远程链接用户和权限

关联php

location ~ \.php$ {
                root /code/wordpress;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

全栈https

upstream upstream {
    server 10.0.0.7:80;
    server 10.0.0.8:80;
}

server {
    listen 443 ssl;
    server_name blog.linux.com zh.linux.com;
    ssl_certificate   /etc/nginx/ssl_key/server.crt;
    ssl_certificate_key  /etc/nginx/ssl_key/server.key;

    location / {
    proxy_pass http://upstream;
    include proxy_params; 
    }
}

server {
    listen 80;
    server_name blog.linux.com;
    return 302 https://$server_name$request_uri; 
}
server {
    listen 80;
    server_name zh.linux.com;
    return 302 https://$server_name$request_uri;
}

nginx官方源

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

防火墙富规则例子

允许10.0.0.1主机能够访问http服务,允许172.16.1.0/24能访问10050端口
[root@web01 services]# firewall-cmd --add-rich-rule="rule family=ipv4 source address=10.0.0.1 service name=http accept"
默认public区域对外开放所有人能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器
[root@m01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh drop'

nginx 通用优化

[root@nginx ~]# cat nginx.conf
user www;                   #nginx进程启动用户
worker_processes auto;      #启动的worker数量与cpu核心数一致即可
worker_cpu_affinity auto;   #cpu亲和

error_log /var/log/nginx/error.log warn;    #错误日志
pid /run/nginx.pid;
worker_rlimit_nofile 35535;     #每个work能打开的文件描述符,调整至1w以上,负荷较高建议2-3w

events {
    use epoll;                  #使用epoll高效网络模型
    worker_connections 10240;   #限制每个进程能处理多少个连接,10240x[cpu核心]
}

http {
    include             mime.types;        #nginx文件类型
    default_type        application/octet-stream;    #文件类型里面没有的,默认下载
    charset utf-8;      #统一使用utf-8字符集

    #定义日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #定义json日志格式              
    log_format json_access '{"@timestamp":"$time_iso8601",'
                      '"host":"$server_addr",'
                      '"clientip":"$remote_addr",'
                      '"size":$body_bytes_sent,'
                      '"responsetime":$request_time,'
                      '"upstreamtime":"$upstream_response_time",'
                      '"upstreamhost":"$upstream_addr",'
                      '"http_host":"$host",'
                      '"url":"$uri",'
                      '"domain":"$host",'
                      '"xff":"$http_x_forwarded_for",'
                      '"referer":"$http_referer",'
                      '"status":"$status"}';

    access_log  /var/log/nginx/access.log  json_access;    #访问日志

    server_tokens off;  #禁止浏览器显示nginx版本号
    client_max_body_size 200m;  #文件上传大小限制调整

    #文件高效传输,静态资源服务器建议打开
    sendfile            on;
    tcp_nopush          on;
    #文件实时传输,动态资源服务建议打开,需要打开keepalive
    tcp_nodelay         on;
    keepalive_timeout   65;

    #Gzip 压缩
    gzip on;
    gzip_disable "MSIE [1-6]\.";    #针对IE浏览器不进行压缩
    gzip_http_version 1.1;
    gzip_comp_level 5;      #压缩级别
    gzip_buffers 16 8k;     #压缩的缓冲区
    gzip_min_length 1024;   #文件大于1024字节才进行压缩,默认值20
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg;

    #虚拟主机
    include /etc/nginx/conf.d/*.conf;
}

php.ini优化

#;;;;;;;;;;;;;;;;;
# Error  logging ;  #错误日志设置
#;;;;;;;;;;;;;;;;;
expose_php = Off                        # 关闭php版本信息
display_error = Off                     # 屏幕不显示错误日志
error_reporting = E_ALL                 # 记录PHP的每个错误
log_errors = On                         # 开启错误日志
error_log = /var/log/php_error.log      # 错误日志写入的位置
date.timezone = Asia/Shanghai           # 调整时区,默认PRC

#;;;;;;;;;;;;;;;
# File Uploads ;    #文件上传设置
#;;;;;;;;;;;;;;;
file_uploads = On           # 允许文件上传
upload_max_filesize = 300M  # 允许上传文件的最大大小
post_max_size = 300M        # 允许客户端单个POST请求发送的最大数据
max_file_uploads = 20       # 允许同时上传的文件的最大数量
memory_limit = 128M         # 每个脚本执行最大内存

[Session]       #会话共享
session.save_handler = redis
session.save_path = "tcp://172.16.1.51:6379"

;php禁止危险函数执行(取决于实际情况,需要和开发沟通)
disable_functions = chown,chmod,pfsockopen,phpinfo

php-pm进程管理配置文件/etc/php-fpm.d/www.conf

;第一部分,fpm配置
include=/etc/php-fpm.d/*.conf

;第二部分,全局配置(php-fpm.conf)
[global]
pid = /var/log/php-fpm/php-fpm.pid         #pid文件存放的位置
error_log = /var/log/php-fpm/php-fpm.log   #错误日志存放的位置
log_level = error        #日志级别, alert, error, warning, notice, debug
rlimit_files = 65535     #php-fpm进程能打开的文件数
events.mechanism = epoll #使用epoll事件模型处理请求

;第三部分,进程池定义
[www]       #池名称
user = www  #进程运行的用户
group = www #进程运行的组
;listen = /dev/shm/php-fpm.sock #监听在本地socket文件
listen = 127.0.0.1:9000         #监听在本地tcp的9000端口
;listen.allowed_clients = 127.0.0.1 #允许访问FastCGI进程的IP,any不限制 

pm = dynamic                    #动态调节php-fpm的进程数
pm.max_children = 512           #最大启动的php-fpm进程数
pm.start_servers = 32           #初始启动的php-fpm进程数
pm.min_spare_servers = 32       #最少的空闲php-fpm进程数
pm.max_spare_servers = 64       #最大的空闲php-fpm进程数
pm.max_requests = 1500          #每一个进程能响应的请求数
pm.process_idle_timeout = 15s;  #超时没有请求就释放进程
pm.status_path = /phpfpm_status #开启php的状态页面

;第四部分,日志相关
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/phpfpm_error.log
php_admin_flag[log_errors] = on

;慢日志
request_slowlog_timeout = 5s    #php脚本执行超过5s的文件
slowlog = /var/log/php_slow.log #记录至该文件中

;慢日志示例
[21-Nov-2013 14:30:38] [pool www] pid 11877
script_filename = /usr/local/lnmp/nginx/html/www.quancha.cn/www/fyzb.php
[0xb70fb88c] file_get_contents() /usr/local/lnmp/nginx/html/www.quancha.cn/www/fyzb.php:2

配置keepalived

#主节点配置
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_id lb01            #身份识别
}
vrrp_instance VI_1 {
    state MASTER            #默认身份是master
    interface eth0            #VIP加在哪块网卡
    virtual_router_id 51    #分组
    priority 150            #优先级
    advert_int 3            #沟通间隔
    authentication {
        auth_type PASS        #认证方式 以明文密码的方式
        auth_pass 1111        #密码是多少
    }
    virtual_ipaddress {
        10.0.0.3            #VIP的地址
    }
}

#备节点配置
global_defs {
   router_id lb02
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 3
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
}

常用ansible内置变量

#查看所有详细信息
[root@m01 ~]# ansible web01 -m setup

#获取IP地址
[root@m01 ~]# ansible web01 -m setup -a "filter=ansible_default_ipv4"

#获取主机名
[root@m01 ~]# ansible web01 -m setup -a "filter=ansible_fqdn"

#获取内存信息
[root@m01 ~]# ansible web01 -m setup -a "filter=ansible_memory_mb"

#获取磁盘信息
[root@m01 ~]# ansible web01 -m setup -a "filter=ansible_devices"

#其他参数
ansible_all_ipv4_addresses:仅显示ipv4的信息。
ansible_devices:仅显示磁盘设备信息。
ansible_distribution:显示是什么系统,例:centos,suse等。
ansible_distribution_major_version:显示是系统主版本。
ansible_distribution_version:仅显示系统版本。
ansible_machine:显示系统类型,例:32位,还是64位。
ansible_eth0:仅显示eth0的信息。
ansible_hostname:仅显示主机名。
ansible_kernel:仅显示内核版本。
ansible_lvm:显示lvm相关信息。
ansible_memtotal_mb:显示系统总内存。
ansible_memfree_mb:显示可用系统内存。
ansible_memory_mb:详细显示内存情况。
ansible_swaptotal_mb:显示总的swap内存。
ansible_swapfree_mb:显示swap内存的可用内存。
ansible_mounts:显示系统磁盘挂载情况。
ansible_processor:显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus:显示cpu个数(只显示总的个数)。

禁止root用户登陆

[root@zls ~]# sed -i  's@#PermitRootLogin yes@PermitRootLogin no@g' /etc/ssh/sshd_config
[root@zls ~]# systemctl restart sshd

rwx对目录的影响

目录只有r权限: 具有浏览目录及子目录权限
 不能进入目录
 1.能使用ls命令浏览目录及子目录, 同时会提示权限拒绝
 2.能使用ls -l命令浏览目录及子目录, 会带问号,同时只能看到文件名
 总结: 目录只有r权限,仅仅只能浏览内的文件名,无其他操作权限

写入权限(w)
 单纯的w权限没有任何意义。
 如果目录只有w权限: 具有增加、删除或修改目录内文件名权限(需要x配合)
 //注意: 如果目录有w权限, 可以在目录内创建文件, 删除文件(跟文件本身权限无关)
 不能进入目录、不能复制目录、不能删除目录、不能移动目录

执行权限(x)
 目录只有x权限
 1.只能进入目录
 2.其他什么都做不了

#文件, x权限小心给予,建议赋予r或rw即可
#目录, w权限小心给予,建议无特殊需求赋予rx即可
Copyright © 高程程 all right reserved,powered by Gitbook修订于: 2021-05-18 21:15:10

results matching ""

    No results matching ""