记录一次线上环境配置以及测试

    最近几天再忙学校自动填表的线上项目部署,遇到了不少问题,为防止以后忘记,在此特地记录一下。

mysql插入操作报错

报错信息为

1
$:incorrect value .......... for column 1

    中间省略号为一串乱码,一般这种问题就和编码相关,去查了一下,mysql默认编码为latin1,插入中文数据会报错,需要对表和数据库的编码进行修改。
    去stackoverflow上面查询对应的解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#For database
ALTER DATABASE
databasename
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;

#For table
ALTER TABLE
tablename
CONVERT TO CHARACTER SET utfmb4
COLLATE utf8mb4_unicode_ci;

#For column
ALTER TABLE
table_name
CHANGE column_name column_name
VARCHAR(191)
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

    由于历史原因,mysql的unicode编码为3个字节,所以得将字符编码设置为utf8mb4(话说我本地的mysql好像版本新一些8.0,不用改编码也能跑,centos7给👴爬)。

    这里出现了一个COLLATE字段,可以简单理解为字段组织排序的方式,ci尾缀代表case insensitive。更详细的可以参考掘金的这篇博客

    修改字符集之后插入成功

ssh远程连接+debug过程

    按理来说这个其实比较简单,就是按照

1
$:ssh username@ip_address

初次输入密码,在本地生成公钥私钥文件

1
ssh-keygen -t rsa -b 4096

更多参数可以查手册,默认是2048位的。之后通过scp命令传输文件将公钥传输到.ssh文件夹下面,并且传输内容到authorized_keys中。

1
scp local/path/.ssh/id_rsa.pub username@ip_address: remote/path/.ssh/uploaded_file_name

On remote side

1
2
3
cat ~/.ssh/uploaded_file >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

chmod stands for change mod, which means changes to different access level.
    突然写起英文2333,这上面的步骤都很简单,但是在我原来的PC上都不管用,最后的原因是因为我的$HOME变量中含有中文。所以问题的解决方案就是修改中文用户名为英文,具体过程就不再啰嗦了。
    大致就是注销当前账号,使用administrator登录,修改用户文件夹和注册表中的路径名字,在切换回来。就可以不用使用密码远程连接主机了。

额外啰嗦

为了使主机更加安全,可以禁用密码验证,修改/etc/ssh/sshd_config文件,将password authentication修改为false,记得修改之前备份文件.

1
2
3
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
#centos7使用这中格式的指令
systemctl restart sshd

本来还想把cron定时运行脚本以及grep查找指令也写一下,时间太晚了就先写这么多了。

记录一次线上环境配置以及测试

http://woshizs.com/2020/09/08/online-test/

作者

Jason Heywood

发布于

2020-09-08

更新于

2020-10-14

许可协议