1. 租ECS云服务器
服务器推荐顺序:
- 阿里云
- 腾讯云
- 华为云
一般选择1核2G
即可,选择按使用量计费。
通过命令ssh root@xx.xxx.xxx.xxx #(公网ip)
,然后输入购买服务器时设置的密码即可连接到服务器。之前如果没生成过公钥的,需要先在本地使用命令ssh-keygen
一路回车生成公钥再登录。
如果是重置过服务器,那么之前就会有记录,重新登录时会报错,此时需要在文件中将该服务器的配置删掉再登录。
vim .ssh/known_hosts # 进入后删除该服务器的配置
2. 配置服务器
CentOs
创建用户(默认的root
权限过高,需要使用拥有sudo
权限的用户进行操作)
useradd acs # acs 为自己想取的用户名
passwd acs
# 设置密码
chmod -v u+w /etc/sudoers # 给 sudoers 文件可写权限
vim /etc/sudoers # 修改该文件,给用户 acs 添加权限
# 进入后先输入 /Allow root 找到 root ALL=(ALL) ALL 所在位置
# i 进入编辑模式,在 root ALL=(ALL) ALL 下一行写入 acs ALL=(ALL) ALL
# 按ESC 然后输入 :wq 保存并退出
chmod -v u-w /etc/sudoers # 收回 sudoers 文件可写权限
su acs # 使用新账户登录系统
然后exit
退出,在本地配置免密登录:
vim .ssh/config # 没有该文件会自动创建
在文件中添加如下语句
Host springboot_server # 后面这个是给服务器取的名字
HostName xx.xxx.xxx.xxx # 后面这个是公网ip
User acs # 后面这个是刚刚添加的用户名
保存并退出
在终端中输入ssh-copy-id springboot_server
然后输入密码完成免密登录配置,之后就可以使用使用ssh springboot_server
直接登录,而不需要输入密码。
然后我们先不登录,先将一些祖传配置文件传过去。
使用scp xxx springboot_server:
将需要的文件传到服务器(没有就不传),注意一定要有冒号:
scp .bashrc .vimrc .tmux.conf server_name: # server_name需要换成自己配置的别名
然后登录服务器
先装一个tmux
(所有工作尽量在tmux
中完成,避免发生意外丢失工作进度)
sudo yum update # 先更新数据源,网络不好可能会报错,尽量在网络环境良好时操作
sudo yum install tmux
3. 安装docker
然后在tmux
中安装docker
(docker安装步骤(官网))
安装完成后输入docker
会有一些提示,说明安装成功!
然后启动docker
:sudo systemctl start docker
安装成功之后,将用户在docker
中赋予sudo
权限:sudo usermod -aG docker $USER
,以便该用户可以使用 docker
而无需使用 sudo
。之后需要退出重新登录才会生效,否则执行docker
相关命令会提示没有权限。
之后就可以使用scp
命令把自己的镜像传到服务器了
然后使用命令docker load -i django_lesson_1_0.tar
将镜像文件解压到docker
中。
运行镜像:
# 中间是需要使用的端口号映射配置,例如 -p 20000:22 会将在外界访问服务器20000端口时自动映射到容器的22端口
docker run -p 20000:22 -p 443:443 -p 80:80 -p 3000:3000 -p 3001:3001 -p 3002:3002 -itd --name kob_server django_lesson:1.0
然后就可以进到docker
中了:docker attach kob_server
(镜像是ubuntu
)
之后给创建用户并赋予sudo
权限,再按ctrl + p, strl + q
挂载容器(退出但不销毁)。
同样的,可以将将祖传的配置文件传到容器中
4. 容器中安装各种服务
然后在容器中安装mysql
sudo apt-get install mysql-server
sudo apt-get update
sudo apt-get install mysql-server
然后启动mysql
:sudo service mysql start
进入mysql
:mysql -uroot -pxxxxx
在mysql
中执行sql
语句:ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
以修改密码。
创建数据库并创建表:
create database kob;
use kob;
source /home/acs/create_table.sql; # 提前准备好的创建数据库表的sql文件
exit;
安装java
sudo apt-get install openjdk-8-jdk
5. 打包项目到容器中
然后就是将项目打包传到容器中运行了
后端项目先clean
再package
即可。
前端项目修改请求地址运行npm run build
将后端项目的jar包分别发送到容器中运行
java -jar xxx.jar # 运行
需要停止的话
ps -ef | grep xxx.jar # 查询程序的进程号
kill -s 9 xxxx # 后面是查询到的进程号
6. 配置许可证以及nginx等
配置key, pem, nginx.conf
在这之前先将配置文件复制到root目录下(为了使配置nginx.conf时文件格式好看点)
sudo cp .bashrc .vimrc .tmux.conf /root
具体的域名、许可证、证书申请及nginx
配置可参考其他文章。
最后启动nginx
sudo /etc/init.d/nginx start # 如果运行结果是fail的话需要查看错误日志对应修改
结束。
题外话: 需要在本地连接容器中的数据库,可以参考Navicat 连接远程服务器里 docker 中的 mysql
才疏学浅,有问题请指正。