搜索
简帛阁>技术文章>linux服务器上部署项目:docker的上手、在docker中部署mysql、部署jar包、部署node.js前端项目

linux服务器上部署项目:docker的上手、在docker中部署mysql、部署jar包、部署node.js前端项目

文章目录

  • 〇、前置工作
    • 安装虚拟机
    • 安装xshell和xftp
  • 一、搭建docker
    • 1.搭建docker
    • 2.docker及linux常用命令
  • 二、docker部署mysql
    • 1.从网络拉取镜像
    • 2.创建mysql的容器
    • 3.访问mysql容器
    • 4.导入sql文件到mysql容器中
  • 三、部署spring boot后端
    • 1.打包spring boot 项目
    • 2.部署方式一:在docker中部署jar包(出错了)
    • 3.部署方式二:不使用docker,安装jdk运行jar包
  • 四、部署前端
    • 1.直接用node.js运行
    • 2.docker+nginx部署(出错了)
  • 五、windows上从头搭建环境
    • 1.持久层mysql
    • 2.后端jdk
    • 3.前端node.js

〇、前置工作

安装虚拟机

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

五、windows上从头搭建环境

1.持久层mysql

设置开机自启

2.后端jdk

3.前端node.js

文章目录〇、前置工作安装虚拟机安装xshell和xftp一、搭建docker1搭建docker2dockerlinux常用命令二、docker部署mysql1从网络拉取镜像2创建mysql容器3访
测试本机项目是否能正常运行(环境:主机要有maven,java环境,服务器:java环境jar需要tomact支持就能运行)然后通过启动类模块pomxml设置为jar类型把主项目进行mave
前段时间做了个node全栈项目,服务端技术栈是nginx+koa+postgresql。其中centos搭建环境和部署都挺费周折,部署测试服务器,接着上线时候又部署生产环境服务器。这中间就有很
方法一、直接构建jar运行镜像将项目打包,传到服务器指定目录该目录下创建Dockerfile文件viDockerfileDockerfile写入如下指令FROMopenjdk:11MAIN
怎么部署web项目docker容器?docker生态系统最吸引人地方在于,我们可以任意下载并使用数以万计已有容器。下面演示如何使用Apache容器作为Web服务器。(1)首先确保我们电脑已经
一次服务器使用docker部署egg项目下载docker下载mysql运行mysql配置密码进入mysql下载redis运行redis同时设置密码下载nginx上传服务器文件部署启动nginx前端
一:我使用是阿里云ubuntu164系统。项目数据库:1数据源2spring:3datasource:4type:comzaxxerhikariHikariDataSource5drivercla
1部署方式Springboot和普通web应用程序不一样,其本质上是一个Java应用程序,那么又如何部署呢?通常来说,Springboot部署会采用两种方式:全部打包成一个jar,或者打包成一个war
Centos7环境下准备工作准备好打包好项目和tomcat镜像开放8080端口查看所有开放端口firewallcmdzonepubliclistports开放8080端口firewallcmdzo
明:SpringBoot由于内嵌了如Tomcat,Jetty和Undertow这样容器,也就是说可以直接跑起来,用不着再像Spring项目还需要外置Tomcat等容器来进行部署工作了,通过启动启