由于运维的项目都是在服务器上,有的是在客户服务器上操做,因此咱们必须熟练使用各类***和远程链接工具;php
好比open***、360connect,easy connect,微软自带的***和远程,还有***堡垒机,teamware,向日葵等等;必须很是熟悉各类链接方式,固然不乏当初最艰苦的客户拍照片,我给说命令的很是原始低效率的工做方式。总之,连上服务器,进行操做就是最终目的。
html
当咱们跟项目经理要来各类各样的链接方式并费劲九牛二虎之力连上的时候,Please show time;
nginx
首先第一个巨大的坑,网卡的误操做,在上线环境中,网卡的操做通常是不容许的,由于涉及到本地的映射,以及项目的延误等等;web
若是咱们须要改配置文件添加DNS或者网关的时候,咱们须要的是重启命令;docker
service network restart | systemctl restart networkbash
必定不要用 ifdown 命令,用完 ifdown 之后,你不会有机会用 ifup 命令的。你的远程就会断开,没有办法再次连上,只能让机房管理人员去启动网卡。服务器
2.查看内存;
session
一开始一直觉得 free -[h|g|m] , free 下边对应的就是剩余内存数;后来才知道原来 available 下边对应的才是服务器剩余内存;
运维
Centos 7系列能够用 h 选项进行查看,Centos 6系列就只能用 g or m 选项才能够,并且6系列查看内存也是很大的坑;curl
Centos 7:available 参数对应的即为当前剩余内存;
[root@cms ~]# free -h total used free shared buff/cache available Mem: 15G 6.4G 4.8G 109M 4.1G 8.2G Swap: 7.7G 1.2G 6.5G
Centos 6: -/+ buffers/cache: 参数后的第二个参数即为当前剩余内存;
[root@Web-A ~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@Web-A ~]# free -m total used free shared buffers cached Mem: 32051 31140 910 0 1919 26859 -/+ buffers/cache: 2361 29689 Swap: 8015 7 8008
3.服务器整个 Apache 部署替换为 Nginx 部署;留下痛苦的泪水,熬了好多个夜。
首先是对配置文件进行复写,这个须要进行统计域名,统计对应端口等,而后在进行复写。这个不是最重要的,我写一下最后的替换上线。
首先把配置文件写入到 /conf.d/ 目录下 ,而后进行书写检查,检查经过在停 Apache,启动nginx或者reload,让开发和测试进行统一测试,查看各类各样的问题。
这个步骤必定不能乱,事先写好,让领导检查一遍,而后在进行急速的替换。这样极大的减小的项目的下线时间。之因此写这个是由于当时我就直接把Apache停了,项目直接下线了,耽误了你们不少时间。
4.Docker中的Nginx的https部署;我也写一下步骤;
①.首先查看容器的映射目录和端口。
查看端口是查看是否有 443 端口;
查看目录是SSL证书的目录是否在映射目录下,没在的话,须要复制到映射的 /home 目录下;以供容器内的nginx使用;
[root@localhost ~]# docker port DOCEKR_NAME 82/tcp -> 0.0.0.0:82 83/tcp -> 0.0.0.0:83 888/tcp -> 0.0.0.0:62080 80/tcp -> 0.0.0.0:80 81/tcp -> 0.0.0.0:8 [root@localhost ~]# docker inspect DOCEKR_NAME "Binds": [ "/home:/storage" ],
②.由于这个要求是对 聚视 https证书进行部署,因此须要我咱们须要找到 jushi 的 nginx 配置文件;
在nginx主配置文件中有关于 443 的配置内容,须要复制下来,粘贴到 jushi的配置文件下边,jushi的80配置文件内容也须要,粘贴到 443 的配置文件内容下,以供443端口进行解析配置;
我在挂载下边新建了个目录,把证书复制到映射目录下。而后在配置文件中进行修改。
ssl_certificate "/storage/peopel-ssl-key/people.pem"; ssl_certificate_key "/storage/peopel-ssl-key/people.key";
sh-4.2# cat /etc/nginx/conf.d/jushi.conf server { listen 80; root /web/html; location / { ssi on; ssi_silent_errors on; ssi_types text/shtml; index index.shtml index.html index.htm index.php list.shtml; } location ~ \.php/?.*$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } } server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /web/html; ssl_certificate "/storage/peopel-ssl-key/people.pem"; ssl_certificate_key "/storage/peopel-ssl-key/people.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { ssi on; ssi_silent_errors on; ssi_types text/shtml; index index.shtml index.html index.htm index.php list.shtml; } location ~ \.php/?.*$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
③.修改完配置文件以后。进行书写检查;无报错后 reload nginx;
nginx -t nginx -s reload
④.找出第一步的端口映射关系和目录映射关系;而后 export 出来并 import 一个镜像;stop 老镜像,并从新启动新镜像。加入443端口;
export须要的是容器ID;
[root@localhost ~]# docker export c68bb01a7e90>docker_cms.tar [root@localhost ~]# docker import docker_cms.tar IMAGE_NAME [root@localhost ~]# docker container stop DOCEKR_NAME [root@localhost ~]# docker run -tdi --name DOCEKR_NAME2 --restart=always --privileged -p 80:80 -p 81:81 -p 82:82 -p 83:83 -p 888:62080 -p 443:443 -v /home:/storage IMAGE_NAME init
⑤.检查端口关系,并进行测试。
netstat -tnlp
5.关于使用ab进行压力测试的坑;
①.通常在服务器本地进行压力测试,使用 127.0.0.1 进行测试;
②.登陆进去的接口还须要获取 session ;有些还须要用 postman 进行取值;
③.都要使用双引号,由于 ab 命令不能识别 url 中的 & 符号,curl 命令也是如此;