最近因为学习的缘故,想到公司项目基本分为客户的正式环境以及公司内网的测试环境,就想着着手将自己“吃灰”的树莓派拿出来当作家里的内网测试环境,作为平时练手的平台;云主机则作为正式环境,来挂载一些经过验证测试过的项目。
一、上手树莓派
1、安装系统
这里如果没有树莓派之类的也可以使用家里老旧的电脑重复利用。
首先需要安装个人比较熟悉的linux系统,这里安装的是centos7.9,因为云主机上设置的也是centos,个人认为比ubuntu使用起来舒服一些,不论是可视化界面还是纯终端。
安装步骤:
- 首先下载centos的系统 清华云地址
- 使用SDFormatter格式化tf卡
- 使用win32diskimager烧录系统
- 使用diskgenius扩展系统盘容量
- 在SD卡的根目录创建名为SSH的文件(无后缀)
- 这里使用有线连接,使用Advanced IP Scanner扫描出已开机的树莓派ip地址(一般会有两个地址,可以通过分辨是否是开机状态来判断可连接地址)
- 使用putty用SSH远程连接
- 账号root,默认密码centos
- 进入系统后运行
yum upgrade
这部分借鉴了本站大佬的博客网站,里面着重还讲了关于内网穿透以及docker的部分使用,有兴趣的可以提前去了解一下。
2、安装项目运行需要的环境
前后端分离我目前还是用的老两件:Vue和SpringBoot,因此需要安装nginx、Java环境以及mysql服务。
Java环境
首先是Java环境。这边选择的是openjdk,依据个人需要的版本进行安装。
# 搜索jdk版本有哪些
yum search jdk
# 选择个人需要的版本进行安装
yum install 【jdk版本】
# 验证一下Jdk是否安装成功
Java -version
Mysql服务
# 首先先确认centos版本
cat /etc/redhat-release
# 去mysql yum存储库中下载对应的地址
<https://dev.mysql.com/downloads/repo/yum/>
# 安装下载的发行包
wget 地址.rpm
yum localinstall xxxxx.rpm
# 安装mysql
yum install mysql-community-server
# 启动mysql
service mysqld start
# 停止mysql
service mysqld stop
# 检查mysql服务器状态,查看pid端口号
service mysqld status
# 查看临时密码: 有时效
grep 'temporary password' /var/log/mysqld.log
# 登录mysql修改密码 :有一定的密码强度要求
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '你自己的密码';
Nginx搭建
# 安装 epel库
sudo yum install epel-release
# 安装 nginx
sudo yum install nginx
# 查看 nginx信息
sudo yum info nginx
#启动服务
sudo systemctl start nginx
#开机自启
sudo systemctl enable nginx
# 查看nginx各个组件版本
rpm -qa | grep nginx
# 查看nginx服务
ps -ef | grep nginx
# 静态网页目录:/usr/share/nginx/
# 配置文件:/etc/nginx/
# 查看nginx配置文件路径是否正确
nginx -t
# 修改配置后重新加载nginx配置
nginx -s reload
# 即可通过http://<server_ip>:<port> 访问项目首页
二、翻车集锦
💡 在前一家公司的打杂的时候有幸让我有机会完成一整个小项目,自己从零到一的体验还是蛮不错的,但是之前的是windows服务器,就真。挺无语的。这一次部署也不能说是轻车熟路,只能说是河边湿鞋。犯的都是大无语事件,希望对大家有一些启发。(建议使用docker)
1、nginx安装访问默认地址不显示
-
如果是现实的拒绝访问绝对绝对要去看一下系统防火墙是否开放nginx的默认端口,默认端口号一般为80。
# 查看firewall的状态 firewall-cmd --state # 查看防火墙规则(貌似不是很清晰) firewall-cmd --list-all # 查询端口是否开放 firewall-cmd --query-port=80/tcp # 开放80端口 firewall-cmd --permanent --add-port=80/tcp # 移除端口 firewall-cmd --permanent --remove-port=80/tcp # 重启防火墙(修改配置后要重启防火墙) firewall-cmd --reload
2、mysql服务器使用dbeaver连接不上(部分)
- 部分的意思是需要通过ssh通道进行连接;
- 一般来说ssh通道是因为当前环境和mysql服务器不在一个内网环境中才需要使用的远程连接方法,但是当前的mysql和我的电脑是在同一个路由底下,按道理应该不会出现这种情况;
- 全网搜索了后发现一个严重的问题,之前有过怀疑3306的端口我没有打开,但是使用ufw查看防火墙状态是关闭状态,而开放端口也是成功的。后面才发现ufw一点用没有,还是要用centos自带的firewall命令去操作端口以及防火墙的状态;
- 理论上讲是和nginx同一个错误,都是大无语事件了,聪明的大家应该都不会碰到这类问题。
3、jdk版本和项目的jdk版本不一致
- 起初没有太去关心本地环境的jdk版本,后面重新下了一个和服务器环境一致的jdk配置上去重新打包了就可以了。
- 使用idea的朋友可以参考这篇文章更换jdk环境。
三、一些常见的命令记录
# 防火墙操作
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 进程管理
# 查看所有进程
ps -A
# 查找特定进程
ps -ef | grep ssh
# 查看动态进程排名信息
top
# 杀死进程
kill pid
# 远程访问服务器
ssh 用户名@服务器地址
# jar包后台运行 以及log信息的记录
nohup java -jar order-manage-service-0.0.1-SNAPSHOT.jar >> ( 日志存放绝对路径) /idtest.log 2>&1 &
四、心得
其实没啥心得,例行做一个总结。一开始准备做这个事情,到后面没想到花了两个晚上才搞定,期间还去请教了公司的大佬,最后发现是防火墙的锅真的是有点难受了,还是因为部署的经验太少,linux的实操和理解不够导致的。
但是越发觉得docker是真的很棒的东西了,不需要再这样繁琐的自己搭建配置环境,直接通过docker容器实现配置,非常轻松而且干净、一致性、移植性都很强,后面有机会需要去实操一下。
接下去可能可以实现的有(并不了解,可能说的有问题):内网穿透、nginx前端Vue项目的部署、前后端项目的自动化部署、NodeJs后端等等。