记一次线上服务器重装系统全过程
本文由 小茗同学 发表于 2022-07-24 浏览(1209)
最后修改 2022-07-24 标签:linux 系统 mysql tomcat node git

其实整个系统重装和迁移在6月12晚上就完成了(花了好几个小时,一直搞到凌晨),只不过由于mysql换了版本导致时间插入一直有问题,一直没时间解决,今天才把重装过程补上来。

背景

现在在用的ECS服务器还是2015年买的,当时为了省空间故意挑选了比较老的centos6.5系统,空间是省下来了,后面暴露的问题越来越多了。时间来到了2022年,连centos官方都已经放弃维护了,我用的却还是上古时代的6.5,使用yum要么是一大堆的软件没有对应的源,要么就是安装不了,要么就是各种报错,甚至到最后连最基本的git clone都报错,升级git也报错,都是一大堆基础软件(比如gcc)版本太老,每次修改了git代码只能手动文件复制上去,整个系统几乎处于无法维护状态。不得已终于忍不住决定对服务器系统进行升级,把服务器上需要备份的一些文件备份,数据库、各种配置文件导出,然后直接重置系统到Alibaba Cloud Linux 3

服务器操作

磁盘挂载

http://blog.haoji.me/linux-mount-aliyun-data-disk.html

修改ssh端口

vim /etc/ssh/sshd_config
Port 8888 # 这里只是示例
service sshd restart
# 在ECS后台修改防火墙开启8888端口

开启ssh免密登录

设置Mac电脑免密码登录服务器,本地电脑操作:

ssh-keygen -C "Mac电脑" # 如果之前已经生成过可以跳过
# 然后复制 ~/.ssh/id_rsa.pub 文件内容到剪贴板(也就是公钥)

服务器操作:

vim ~/.ssh/authorized_keys # 没有这个文件就新建,有就修改
# 将本机电脑的公钥粘贴到这里

本机电脑执行ssh -p 8888 root@121.x.x.x,不出意外的话此时已经不需要密码了。

如果不想每次都输入端口、账号、IP,还可以再简单一点,本地电脑执行:

vim ~/.ssh/config # 没有就新建,有就修改

Host ecs # 服务器别名,后续可以通过 ssh ecs 直接登录
HostName 121.196.**.** # 服务器公网IP
Port 8888 # 服务器SSH端口
User root # 服务器账号
IdentityFile ~/.ssh/id_rsa # 私钥文件(这个id_rsa就是常说的pem文件)

此时本地电脑再执行ssh ecs,不出问题的话即可免密登录成功。

软件安装

受限于博客代码依赖,部分软件只能安装如下版本:

本次安装中,jdk和tomcat因为比较简单,采用普通解压安装,其它均采用yum安装。

需要开机自启的:

  • tomcat
  • mysql
  • nginx
  • memcached
  • node

基础软件安装

这个好像最后没用到

yum install xclip # 剪贴板命令

jdk

tar -zxvf jdk-7u79-linux-x64.tar.gz
mv jdk1.7.0_79/ /home/java/jdk-1.7
vim /etc/profile # 编辑环境变量,末尾追加如下内容

# set java environment
export JAVA_HOME=/home/java/jdk-1.7
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

source /etc/profile # 使环境变量生效
java -version # test

参考:http://blog.haoji.me/install-java-environment.html

tomcat

tar -zxvf apache-tomcat-7.0.47.tar.gz
mv apache-tomcat-7.0.47 /home/tomcat/tomcat-7.0
cd /home/tomcat/tomcat-7.0/
vim conf/server.xml # 编辑端口,增加utf-8设置

<Connector port="8081" URIEncoding="UTF-8" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

# 至此安装完毕,后面是配置开机自启

vim bin/catalina.sh # 文件最前面追加如下内容,chkconfig等2个注释不能删

#!/bin/sh

# chkconfig: 2345 10 90
# description:Tomcat service
JAVA_HOME=/home/java/jdk-1.7
CATALINA_HOME=/home/tomcat/tomcat-7.0

cp bin/catalina.sh /etc/init.d/tomcat # 复制文件,tomcat就是新服务的名称,可以随便改
chmod 755 /etc/init.d/tomcat # 修改权限
chkconfig --add tomcat # 添加开机自启
chkconfig --list # 查看是否添加成功
service tomcat start # 测试启动
service tomcat stop # 测试关闭

参考:http://blog.haoji.me/linux-tomcat.html

mysql

服务器之前的mysql是5.5,这次安装的是mysql@5.7,想着都是5.x,问题应该不大,但是运行了一段时间后发现各种问题不断,其中主要是插入日期类型会莫名其妙报一些错,查了一些资料大概率和 sql_mode 有关,但是各种尝试都没能解决,而且也实在是没精力没时间去操心这东西了,最后不得已重新安装了5.5版本。

5.5和5.7还是有一些差别的,读者可根据自己需要选择阅读,这里都记录一下。

mysql5.7的安装

阿里云服务器默认通过yum install mysql安装的是最新的8.x版本,我的博客比较老最高只能使用5.7版本,所以需要自定义安装源。

wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装完后会在 /etc/yum.repos.d 下多2个文件
yum -y install mysql57-community-release-el7-11.noarch.rpm 
# 正式安装mysql,注意不要用“yum install mysql-server”,这个还是会安装默认的最新版本
# nogpgcheck 是忽略签名,不加这个的话会报错
yum install mysql-community-server --nogpgcheck
# 启动mysql服务(停止是stop)
systemctl start mysqld.service
# 查看mysql服务是否已启动(可选)
systemctl status mysqld.service
# 查找默认密码(mysql5.7开始默认密码是随机的,需要手动找到它,并且必须修改密码)
cat /var/log/mysqld.log| grep password
# 修改密码(注意,密码必须包含大小写字母、数字、符号)
# 密码如果太简单会报错:mysqladmin: unable to change password; error: 'Your password does not satisfy the current policy requirements'
mysqladmin -u root -p password 你的新密码
Enter password: #【输入旧密码,回车即修改成功】
# 进入控制台
mysql -uroot -p
# 设置远程可以访问
mysql > grant all privileges on *.* to root@'%' identified by '你的密码';
# 刷新配置
mysql > flush privileges;
mysql > exit;
# 重启mysql服务
systemctl restart mysqld.service
# 设置开机自启
systemctl enable mysqld.service
# 此时可以测试远程能否连接成功(注意防火墙需要打开3306端口)
vim /etc/my.conf
# 修改默认utf-8编码,这里省略

mysql5.5的安装

还是用上面的安装源,只不过安装版本默认指向了5.7,需要手动改为5.5。这里特别注意,如果以前安装过mysql,最好把所有可能和mysql相关的都删除干净,否则可能会启动失败。

首先通过yum remoe mysql-community-server卸载之前按安装的版本,然后分别使用whereis mysql 和 find / -name mysql查找系统中所有有关mysql的地方(貌似后者已经包括了前者,可以只采用find查找),然后依次删除对应文件夹即可,这里千万要谨慎操作,避免误删无关文件。

wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装完后会在 /etc/yum.repos.d 下多2个文件
# 搜索所有的和mysql相关的安装包,可以看到5.5默认被禁用
yum repolist all | grep mysql
# 编辑mysql的repo文件,将默认的5.7从1改为0,将要安装的5.5从0改为1
vim /etc/yum.repos.d/mysql-community.repo
# 开始安装,注意不管安装哪个版本,名字都固定是“mysql-community-server”
yum install mysql-community-server
# 启动mysql服务(停止是stop)
systemctl start mysqld.service
# 查看mysql服务是否已启动(可选)
systemctl status mysqld.service
# 设置密码
mysqladmin -u root password 你的密码
# 进入控制台
mysql -uroot -p
# 设置远程可以访问
mysql > grant all privileges on *.* to root@'%' identified by '你的密码';
# 刷新配置
mysql > flush privileges;
mysql > exit;
# 设置utf-8编码并修改默认的packet大小(这个非常重要,否则导入一些比较长的SQL语句会报错)
vim /etc/my.cnf

[client]
default-character-set=utf8

[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
init_connect='SET NAMES utf8'
max_allowed_packet = 128M

[mysql]
default-character-set=utf8

# 重启mysql服务
systemctl restart mysqld.service
# 设置开机自启
systemctl enable mysqld.service
# 此时可以测试远程能否连接成功(注意防火墙需要打开3306端口)

参考:

nginx

yum install nginx
nginx # 启动
curl localhost # test
  • 修改配置:vim /etc/nginx/nginx.conf
  • 启动:nginx
  • 重新加载:nginx -s reload
  • 停止:nginx -s stop
  • 配置开机自启:vim /etc/rc.d/rc.local,然后添加一行“nginx”即可。

memcached

yum install memcached
# 立即启动
memcached -p 11211 -d -u root -m 100 -c 256 -P /tmp/memcached.pid -l 127.0.0.1
# 设置开机自启
vim /etc/rc.d/rc.local
# 添加如下内容
memcached -p 11211 -d -u root -m 100 -c 256 -P /tmp/memcached.pid -l 127.0.0.1

禁止外网访问:http://blog.haoji.me/linux-memcached.html#jin-zhi-wai-wang-fang-wen-Memcached

git

yum install git
git --version # 2.27.0
ssh-keygen -C "你的备注"
# 配置GitHub公钥

node

yum install nodejs
node -v # v14.18.2
yum install npm
npm -v # 6.14.15
npm i -g cnpm # 安装cnpm

防火墙配置

省略