《DevOps故障排除Linux服务器运维最佳实践》,推荐下这本书,我没有仔细读,只是大概翻了下
- 作为入门级读物,是极好的
- 有指导原则,也有具体的方法
- 列出了常见的故障,以及排查方法,是一本手把手的教程
《DevOps故障排除Linux服务器运维最佳实践》,推荐下这本书,我没有仔细读,只是大概翻了下
svn merge trunk 到branch
合并成功的,但设置不了合并信息,就是通过 但通过下面的指令获取不了已经合并过的版本号
svn pget svn:mergeinfo
发现正常的合并应该有下面的日志才对
Recording mergeinfo for merge of
可以设置并获取到
TortoiseSVN 1.9 合并成功,可以设置并获取到合并信息
在svn服务器上执行下面的指令即可
sudo svnadmin upgrade svn_repos_dir
# 上面的指令会导致svn_repos_dir目录下部分文件变为root所有
# 需要还原目录权限
sudo chown -R apache.apache svn_repos_dir
上次从1.6升级到1.8,没有做处理(也不知道要处理)
我们想增加多一个出口,只有特定的内网源IP才从这里出,所以,有了这个测试
# 增加路由表
sudo /bin/cp /etc/iproute2/rt_tables /data/backup/tmp/rt_tables.${RANDOM}
sudo echo '201 adsl' >> /etc/iproute2/rt_tables
# 添加路由策略,此处以联通出口为例
sudo ip route add default via xx.xxx.83.113 dev em1:0 table adsl
# 查看路由策略
ip route show table adsl
# 设置路由规则
sudo ip rule add from 172.16.28.26 lookup adsl
# 查看规则
ip rule show
# 删除路由规则
sudo ip rule del from 172.16.28.26 lookup adsl
没有太多情怀,本文主要是解决问题的
这里是身份证明部分
User, Server, CA,这三者是PKI中的三个角色。User方接收到Server发出的证书,并通过User自身客户端(浏览器或者其他APP等程序)内含的已信任CA(根证书)列表来做校验,只有证实该Server提供的https证书是已信任CA签发的,https通信才可以继续。
假设一个买电脑的情景:A要买电脑,A不熟悉,怕被骗,A知道朋友B对电脑这些很熟,所以他找了B,让B帮忙介绍靠谱的商家,于是B就介绍了商家C给A,后面的交易就是A和C之间(好像有点装…的感觉)进行。
上述A就是User,B就是CA,C就是Server
申请证书时候,需要给CA机构提供证书签发申请CSR文件(certificate sigining request)。大部分支持https的web服务程序都可以生成CSR文件。步骤如下:
也可以让证书供应商直接生成私钥和签过名的证书
可以自建CA
知识点:
来到这里,发现我的表达是多么苍白无力
# 1m可以处理4000个session
ssl_session_cache shared:SSL:20m;
# 缓存
ssl_session_timeout 10m;
# 设置HSTS
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
# Online Certificate Status Protocol,在线证书状态协议
ssl_stapling on
# openssl dhparam -out /data/conf/nginx/cert/dhparam.pem 2048
ssl_dhparam /data/conf/nginx/cert/dhparam.pem;
# 检测远程服务器的证书
openssl s_client -connect google.com:443 | openssl x509 -text
nmap --script ssl-enum-ciphers -p 443 www.example.com
# 快速生成自签名的ssl证书,10年有效期
openssl req -new -x509 -nodes -out www.example.com.crt -keyout www.example.com.key -days 3650 -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=Microhard/CN=wwww.example.com"
# 获取证书指纹
openssl x509 -fingerprint -in xxx.crt
检查网站https的安全性并打分,同时会提供建议
openssl s_client -connect www.example.com:443| openssl x509 -text
大部分同学可以打开,但有个同学就打不开,chrome也是最新版,最后发现是证书不完整,缺了个中级根证书
如果我们用ssllabs检查,它会直接给出提示
This server's certificate chain is incomplete. Grade capped to B.
# 证书路径里也有提示
Extra download
解决,当然是下载中级根证书添加了,可以去证书供应商,但更方便的方法是直接在测试页面下载,在页面右边,有个下载按钮,可以直接下载完整的证书
server {
listen 443 ssl;
ssl_certificate /etc/nginx/cert/bjornjohansen.no.certchain.crt;
ssl_certificate_key /etc/nginx/cert/bjornjohansen.no.key;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 60m;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GC
M-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:EC
DHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-
RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
ssl_dhparam /etc/nginx/cert/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/cert/trustchain.crt;
# resolver 8.8.8.8 8.8.4.4;
#add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Strict-Transport-Security "max-age=31536000" always;
}
过往,大家是root用户,scp/rz文件到远程机器,读写都没有问题,但目前大家都是用个人的普通账号去登录,需要scp/rz更新文件的时候,就比较麻烦:需要先scp/rz到一个临时目录,再通过sudo把文件mv过去
如果客户端是Linux,比较好做,大不了写个脚本,把scp和mv的步骤都写进去,就可以了。
如果客户端是win,想通过rz上传,服务器端就需要先cd到临时目录,上传了,再通过sudo把文件mv过去。
不是好办法
chmod -R 777 xxx
这里再介绍一个方法:setfacl
大家都知道chown只能对一个用户和一个组设置权限,当遇到多组的情况,就处理不了,而setfacl则可以处理多用户,多组
# 先设置开启acl,CentOS系统,默认应该是支持的
# 但我之前遇到某云的系统,defaults挂载参数,却需要再添加acl才可以
mount -o acl /data
# 设置johncan组对test_acl可以读写,这里可以设置任意多个组
cd /data/backup/tmp
setfacl -m g:johncan:rwx -R test_acl/
# 获取权限
getfacl test_acl/
# 以下为输出内容
# file: test_acl/
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
group:johncan:rwx
mask::rwx
other::rwx
一 | 二 | 三 | 四 | 五 | 六 | 日 |
---|---|---|---|---|---|---|
« 5月 | ||||||
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |