文章目录
〇、前置工作
安装虚拟机
1.先在自己的windows系统的电脑上装一个虚拟机vmware,方便后续学习。
2.安装vmware tools:https://blog.csdn.net/blessed_sy/article/details/81173746
3.ubuntu安装教程:https://blog.csdn.net/m0_46680639/article/details/106018321
4.centos安装教程:https://blog.csdn.net/babyxue/article/details/80970526
后续拉镜像失败,可能原因是虚拟机不能上网,解决:https://blog.csdn.net/zhyulo/article/details/78730009
安装xshell和xftp
如果不是在本机部署,而是在云服务器上部署,那需要用到xshell和xftp进行远程部署和上传文件。
安装xshell教程:https://blog.csdn.net/weixin_40928253/article/details/80621724
安装xftp,进入链接下载就好,一步步安装好就行:下载链接
一、搭建docker
1.搭建docker
Docker官方文档:https://docs.docker.com/
Docker镜像仓库:https://hub.docker.com/search?type=image
Docker镜像仓库国内版:http://hub.daocloud.io/
默认安装路径:/var/lib/docker
步骤一:卸载旧的docker以及常用的docker命令
查看docker版本:
docker version或者docker info
查看正在运行的docker容器有哪些(查看是否已经安装了docker):
docker ps -a
或者docker ps
停止docker的运行:
systemctl stop docker
停止某个docker的运行:
docker stop 容器的id
删除某个docker容器:
docker rm -f 容器的id
查看docker的镜像:
docker images
删除docker的镜像:
docker rmi 容器名称
卸载原来的docker:
yum remove -y docker docker-client docker-client-latest docker-common
docker-latest docker-latest-logrotate docker-logrotate
docker-selinux docker-engine-selinux docker-engine
查看端口占用:
https://jingyan.baidu.com/article/656db9183861cde381249c87.html
上面的命令好像没有卸载掉docker,彻底卸载docker的方法:
https://blog.csdn.net/weixin_42294060/article/details/106188759
步骤二:安装docker
- ubuntu下安装教程:
https://blog.csdn.net/qq_41204464/article/details/97539265
- centos下安装教程:
https://www.cnblogs.com/caijunchao/p/13512410.html
步骤三:其他操作
设置docker开机自启动:
systemctl enable docker
查看docker运行状态:
systemctl status docker
启动docker:
systemctl start docker
2.docker及linux常用命令
切换到root用户(不同系统会有一点点区别):
在终端输入su然后回车
查看docker容器有哪些:
docker ps -a
查询docker中正在运行的容器:
docker ps
查看当前操作系统的环境:
cat /etc/redhat-release
停止某容器:
docker stop 容器id
删除某容器:
docker rm -f 容器id
删除某镜像:
docker rmi 镜像名
设置容器开机自启动(创建时可能忘了设置):
docker update --restart=always 容器id
安装VM tools用来给虚拟机传入文件:
https://blog.csdn.net/panjiansheng123/article/details/69870211/
安装好之后就可以直接从windows系统中把文件拖到虚拟机桌面里面去了
进入文件:
vim 文件名
修改:
按键a或i
保存退出:
按esc然后输入:wq回车
删除文件:
rm 文件名
删除目录(下面那条是强制删除):
rm -r 目录
rm -rf 目录
如何解压zip:
unzip https://www.sohu.com/a/328563822_120047065
tar https://www.html.cn/qa/other/21735.html
创建文件:
vi 文件名
复制文件:
cp 原路径 目标路径
二、docker部署mysql
1.从网络拉取镜像
先进入Docker镜像仓库国内版网站:http://hub.daocloud.io/
搜索所需要的镜像,比如mysql
点击进入mysql镜像,点击版本
点击所需要的版本后面的拉取,并复制拉取命令docker pull daocloud.io/library/mysql:8.0.20
完成后可以通过docker images命令查看镜像是否拉取成功
2.创建mysql的容器
容器创建命令(运执行时删掉换行):
docker run -itd -p 3309:3306 --name mysql8020 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.20 --lower-case-table-names=1
解释:
3309:3306是外部端口3309映射到3306中去,–name后面是容器命名
MYSQL_ROOT_PASSWORD=root设置mysql的root账户的密码为root
最后mysql:8.0.20是前面拉取到的镜像名,–lower-case-table-names=1设置mysql表名忽略大小写
启动:
docker start 容器id
设置容器开机自启动(创建容器时可能忘了设置):
docker update --restart=always 容器id
3.访问mysql容器
进入容器:
docker exec -it mysql8020 bash
登录mysql:
mysql -h 127.0.0.1 -u root -p回车再输入密码
或者试试mysql -h localhost -u root -p回车再输入密码
或者试试mysql -u root -p回车再输入密码
执行:
ALTER user 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
远程访问:
mysql -uroot -proot -h部署的电脑的ip -p --port=3309 # linux
端口是3309,不是3306,别搞错了。
坑:
坑1:表名大小写问题
创建容器时一定要配置–lower-case-table-names=1
不然删掉重新创建容器吧
坑2:group by报错
方法一:进入mysql后执行以下语句(容器重启后会失效):
set global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
方法二:修改docker中mysql容器的配置文件,粘贴(快捷键Ctrl+ Shift+ V)如下配置:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
容器中mysql配置文件所在目录:
/etc/mysql
如何在容器中修改mysql配置:
https://www.cnblogs.com/yzgblogs/p/14279302.html
4.导入sql文件到mysql容器中
用windows电脑远程连接服务器的mysql容器,然后本地navicat操作,更简单也更不容易出错。
三、部署spring boot后端
另外,先安装、配置好maven:https://blog.csdn.net/a805814077/article/details/100545928
1.打包spring boot 项目
step 1 首先,在pom.xml中引入插件依赖:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.version}</version>
<configuration>
<fork>true</fork>
<mainClass>apijson.demo.DemoApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
step 2 修改配置:
修改数据库的ip、端口名、数据库名等
step 3 打包:
step 3 报错了,解决方法:
https://blog.csdn.net/sunshine77_/article/details/102720041
step 4 再来一次step 2,成功:
step 5 可以尝试运行下jar包(这步可跳过):
在jar包目录下运行cmd命令:java -jar cigarette-1.0.0.jar然后回车,可能会遇到端口被占用的问题,pom.xml中配置换个端口就好了。
2.部署方式一:在docker中部署jar包(出错了)
先把jar包从U盘拷贝到任意一个目录:
我是拷贝到:/home/nlp/文档/中,完整目录为:/home/nlp/文档/cigarette-1.0.0.jar
拉镜像:
docker pull java:8
在/home/nlp/文档/下创建目录cigar:
mkdir /home/nlp/文档/cigar/
复制jar包到cigar中:
cp /home/nlp/文档/cigarette-1.0.0.jar /home/nlp/文档/cigar/cigarette-1.0.0.jar
在cigar中创建dockerfile文件:
cat>>dockerfile回车
紧接着键入以下内容后按ctrl+D保存:
FROM java:8
MAINTAINER springboot
ADD cigarette-1.0.0.jar cigarette-1.0.0.jar
EXPOSE 9000
ENTRYPOINT [“java”,“-jar”,“cigarette-1.0.0.jar”]
解释:
FROM: 基础镜像,通过jdk8镜像开始
MAINTAINER: 维护者
ADD: 复制jar包到镜像内,名字也为cigarette-1.0.0.jar
EXPOSE: 声明端口
ENTRYPOINT: docker启动时运行的命令,这里就是容器运行就启动jar服务
创建容器:
在cigar文件夹中运行docker build -t springboot .
springboot是我取的容器名,最后的点不能忘了
启动容器:
docker run -d -p 8086:9000 springboot
8086是外部端口,映射到容器中的9000端口去,我们通过ip:8086就可以访问项目了
3.部署方式二:不使用docker,安装jdk运行jar包
- centos安装jdk1.8教程:https://blog.csdn.net/weixin_42266606/article/details/80863781
- 在jar包目录下执行命令java -jar cigarette-1.0.0.jar
- 开机自动运行jar包教程:https://blog.csdn.net/weixin_36254822/article/details/112623994
修改项目名,我的是cigar_h
修改jdk路径,我的是/usr/local/java/jdk1.8.0_301/bin/java
修改jar包路径,我的是/usr/local/cigar/cigarette-1.0.0.jar
四、部署前端
1.直接用node.js运行
在部署之前,修改ip、端口配置。
- linux安装node.js10+教程:https://blog.51cto.com/u_1693346/2344694
- linux为node.js配环境:
依次修改以下配置文件:
vim ~/.bashrc
两个都要修改,不然环境变量只生效一会
在末尾添加(根据你自己的nodejs安装路径来):
export PATH=/usr/local/nodejs/node-v10.15.0-linux-x64/bin:$PATH
export NODE_PATH=/usr/local/nodejs/node-v10.15.0-linux-x64/lib/node_modules
使配置文件生效:
source ~/.bashrc
- 运行项目:
项目目录中执行命令npm install。
项目目录中执行命令npm run dev运行项目。
2.docker+nginx部署(出错了)
安装nginx镜像: docker pull nginx
进入前端项目所在路径,然后:
创建Dockerfile:
vi Dockerfile
粘贴配置:
FROM nginx:latest
MAINTAINER tracy
COPY dist/ /usr/share/nginx/html/
创建镜像(nginx为镜像名字):
docker build -t nginx .
创建容器:
docker run -d --name nginx -p 8000:80 nginx
外部端口为8000,内部为80
设置容器开机自启动(创建容器时可能忘了设置):
docker update --restart=always 容器id