Linux - SSH 保持连接

方式一:服务端配置

vim /etc/ssh/sshd_config

修改参数:

1
2
3
ClientAliveInterval 60  # 服务端每 60s 向客户端发起一次响应
ClientAliveCountMax 10 # 如果客户端超过 10 次每响应则掐断连接
restart ssh / service ssh reload

方式二:客户端配置(推荐)

/etc/ssh/ssh_config 或者 ~/ssh/config 添加:

1
2
Host *
ServerAliveInterval 60

then:

1
chmod 600 ~/.ssh/config

Linux - 文件上传与下载

scp命令

scp 是 source copy 的缩写,菜鸟教程

从服务器下载文件到本地

如:将服务器中 hexo.tar.gz 复制到本地当前路径

scp root@120.78.69.82:/opt/hexo.tar.gz .

1
note:远程服务器文件路径需要是绝对路径

上传文件到服务器

上传本地当前路径下的 nginx.conf 到远程服务器根目录下
scp nginx.conf root@120.78.69.82:~/

note:不支持上传文件夹,但是可以上传多个文件,如:

1
2
3
scp ./* root@120.78.69.82:~/nginx-container-config/cert
2190670_yuzh.xyz.key 100% 1675 40.0KB/s 00:00
2190670_yuzh.xyz.pem 100% 3651 116.9KB/s 00:00

Linux - 无密码访问 linux 服务器

  1. 本地生成 SSKEY

command: ssh-keygen

then:

1
2
3
-rw-------@ 1 harry  staff   1.8K Apr  6 09:38 id_rsa 密钥
-rw-r--r--@ 1 harry staff 399B Apr 6 09:38 id_rsa.pub 公钥
-rw-r--r-- 1 harry staff 4.5K May 28 11:43 known_hosts
  1. 将公钥复制到远程服务器的 ./ssh/authorized_keys

Linux - 查看端口占用及网络情况

netstat
常用参数

  • -a 所有信息
  • -u 显示 UDP 协议的连接状况
  • -t 显示 TCP 协议的连接状况
  • -l listening,显示监控中的通信
  • -n numeric,直接显示 IP
  • -p programs,与此通信绑定的程序

如何解决端口占用?

  1. netstat -tulnp
  2. 根据端口号找到PID
  3. kill -9 PID

Linux - 磁盘管理

查看系统磁盘占用情况:

df -h

1
2
3
4
5
6
7
8
[root@jstuvn95c6ed5x /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 36G 2.0G 95% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 2.5M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 380M 0 380M 0% /run/user/0

查看文件占用大小:

su -sh*

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
[root@jstuvn95c6ed5x /]# du -sh *
401M acs
0 bin
138M boot
4.0K data
0 dev
37M etc
90M home
0 lib
0 lib64
16K lost+found
4.0K media
501M mnt
4.0K opt
du: cannot access ‘proc/1743/task/1743/fd/4’: No such file or directory
du: cannot access ‘proc/1743/task/1743/fdinfo/4’: No such file or directory
du: cannot access ‘proc/1743/fd/4’: No such file or directory
du: cannot access ‘proc/1743/fdinfo/4’: No such file or directory
0 proc
660M root
2.5M run
0 sbin
4.0K srv
0 sys
152K tmp
1.9G usr
17G var

删除 docker 镜像缓解磁盘压力

docker rmi -f $(docker image | grep ‘erp’ | awk ‘{print $3}’)

awk 是行处理器命令,通常用来格式化文本信息, 依次对每一行进行处理,然后输出。

awk '{print $3}' 的意思是提取当前文本中的第三行,$0 代表全部,不是第一行。

1
2
3
其实直接使用 docker 内置命令也可以
docker rmi $(docker image ls -qa)
PS:不要加 `-f` 参数,线上有容器正在使用镜像运行,不是开玩笑的😂。

Linux - 解压缩

解压缩

tar

  • tar -zcvf 压缩后的文件名 目标文件
  • tar -zxvf 解压文件名

Hexo迁移至Docker

一、本地迁移

一)将之前的博客地址根文件夹拷贝一份复制到指定位置,用作与容器共享的数据卷。

1
2
3
4
5
6
7
~/Workspace/docker-hexo  $ pwd
/Users/harry/Workspace/docker-hexo
~/Workspace/docker-hexo $ ll
total 8
-rw-r--r--@ 1 harry staff 482B Jun 17 17:10 Dockerfile
drwxr-xr-x@ 15 harry staff 480B Jun 17 17:19 harrys-blog # 根目录
~/Workspace/docker-hexo $

二)编写 Dockerfile 脚本,构建镜像。

docker build -f Dockerfile -t harrys-blog:latest .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
FROM centos
MAINTAINER harry<yuzh233@gmail>
EXPOSE 4000
RUN cd / && mkdir docker-hexo && cd docker-hexo

WORKDIR /docker-hexo

# install latest node
RUN yum install -y gcc-c++ make \
&& curl -sL https://rpm.nodesource.com/setup_12.x | bash - \
&& yum -y install nodejs \
&& node -v

# install git
RUN yum -y install git \
&& git --version

# install hexo
RUN npm install -g hexo-cli

# CMD ["sh","-c","hexo g && hexo s"]
ENTRYPOINT ["sh","-c","cd /harrys-blog && hexo g && hexo s"]

三)运行容器,指定数据卷文件路径

docker run -d -p 4000:4000 -v ~/Workspace/docker-hexo/harrys-blog/:/harrys-blog harrys-blog:latest

二、迁移到远程服务器

一)创建阿里云私有仓库并推送镜像

1
2
3
$ sudo docker login --username=yuzh233 registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/yuzh/harrys-blog:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/yuzh/harrys-blog:[镜像版本号]

二)使用 source copy 上传文件到服务器

1
scp hexo.gz root@120.78.69.82:/hexo.gz

三)运行容器,指定数据卷文件路径

docker run -d -v ~/harrys-blog:/harrys-blog -p 4000:4000 registry.cn-hangzhou.aliyuncs.com/yuzh/harrys-blog

四)运行 nginx 容器,将其中 /etc/nginx 目录拷贝到宿主机,停止容器

五)运行一个新的容器,挂载本地 nginx 配置到容器中

docker run -d -p 80:80 -v ~/nginx-container-config/:/etc/nginx nginx

nginx.conf:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
user  nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;


events {
worker_connections 1024;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;

upstream hexo {
server 120.78.69.82:4000;
}

server {
# 默认监听80端口,这样就不需要指定端口访问。
listen 80;
# listen 443;
# 用户访问时的域名。
server_name yuzh.xyz;

# ssl on;
listen 443 ssl;
ssl_certificate cert/yuzh.xyz.pem;
ssl_certificate_key cert/yuzh.xyz.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;

location / {
# nginx通过前面的 hexo 转发到指定的网站,访问 hexo 就是访问 120.78.69.82:4000
proxy_pass http://hexo;
index index.html index.htm;
}
}

}

20190609 spring-boot | part3

Spring Boot Reference Guide
2.1.5.RELEASE
https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#using-boot

这个章节将详细介绍更多细节关于你如何使用Spring Boot。它涵盖了一些主题(covers topics),例如构建系统、自动配置、和如何运行你的应用。我们同样涵盖了一些 Spring Boot 最佳实战。虽然Spring Boot没有什么特别之处(它只是你可以使用的另一个类库而已。)这里有一些建议,如果遵循(when allowed),将会使你的应用开发进度相对容易一些(easier)。

20190608 spring-boot | part2 - 11,12

Spring Boot Reference Guide
2.1.5.RELEASE
https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#getting-started-first-application

11. Developing Your First Spring Boot Application

This section describes how to develop a simple “Hello World!” web application that highlights some of Spring Boot’s key features. We use Maven to build this project, since most IDEs support it.

20190603 spring-boot | part2 - 8,9,10

Spring Boot Reference Guide
2.1.5.RELEASE
https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#getting-started

If you are getting started with Spring Boot, or “Spring” in general, start by reading this section. It answers the basic “what?”, “how?” and “why?” questions. It includes an introduction to Spring Boot, along with installation instructions. We then walk you through building your first Spring Boot application, discussing some core principles as we go.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×