这是我们OPCJ的第一篇,搭建基础的开发环境。我们的服务会不断增加新组件,我们这里先介绍如何快速搭建开发环境。一般来说Java程序员的电脑上总是会有一些已经配置好的idea、git、maven或者其他的,如果有的话,调整一下直接用就行了。我们这里重点看建立完整的环境该做什么,有些具体的细节不做过多解释,必要的话请读者再Google一下。
目录
1.基础环境搭建
1.1 mac下搭建手册
1.1.1 安装 docker
1.1.2 docker安装mysql
1.1.3 docker安装redis
1.2 后端开发环境配置
1.3 前端开发环境配置
1.4 配置git
1.5 搭建开发工程框架
1.5.1基于git创建空工程
1.5.2 创建module
1.5.3 创建全局pom
1.5.4 修改.gitignore
1.6 初始化数据库
1.6.1 docker启动已经关闭的mysql问题
1.6.2 创建各个服务的数据表
1.基础环境搭建
1.1 mac下搭建手册
1.1.1 安装 docker
Docker是一个虚拟化容器技术,Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行环境,容器之间相互隔离。
1.1.2 docker安装mysql
先启动docker桌面端,然后执行如下命令:
sudo docker pull mysql:5.7
拉取最新的镜像
然后用该镜像创建mysql实例,使用下面的命令来创建:
sudo docker run -d -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
这里对上面的参数做下简单的介绍,如果不想了解这一块直接复制上面的命令执行即可: 配置端口映射:
-p 3306:3306 --name mysql
将容器的3306端口映射到主机的3306端口
配置mysql数据卷挂载
1.-v /mydata/mysql/log:/var/log/mysql(日志文件挂载)
将容器中的日志文件夹挂载到主机对应的/var/log/mysql文件夹中
2.-v /mydata/mysql/data:/var/lib/mysql(数据文件挂载)
将容器中的数据文件夹挂载到主机对应的/var/lib/mysql文件夹中
3.-v /mydata/mysql/conf:/etc/mysql(配置文件挂载)
将容器的配置文件夹挂载到主机对应的/etc/mysql文件夹中
注(这里所提的主机指的是当前的linux主机)
配置用户
-e MYSQL_ROOT_PASSWORD=root
设置初始化root用户的密码
指定镜像资源
-d mysql:5.7
-d:以后台方式运行实例
mysql:5.7:指定用这个镜像来创建运行实例
创建成功后使用下面命令查看下创建好的mysql实例:
docker ps -a
然后使用MysqlBench、Navicat等连一下,测试一下状态,例如使用MysqlBench连接界面如下:
输入用户名root,密码123456,测试连接。不过这里如果输入指定的用户名mysql则连不上,后面看看咋回事。
1.1.3 docker安装redis
1.拉取redis镜像
docker pull redis
2.在本地某个位置创建以下内容
建议将以下内容放在一起,方便以后管理和查看
# 以/docker/redis为例
mkdir -p /docker/redis
mkdir -p /docker/redis/data
touch /docker/redis/redis.conf
touch /docker/redis/redis.bash
3.编辑配置文件
vim /docker/redis/redis.conf
内容为:
# Redis配置文件
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize no
# 指定Redis监听端口,默认端口为6379
port 6379
# 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问
bind 0.0.0.0
#需要密码则打开
requirepass mima
# 持久化
appendonly yes
4.编辑启动脚本
vim /redis/redis.bash
基本内容如下,这里要注意将文件路径替换成你自己的路径,也就是下面的”:“号前面的要替换掉:
docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf
解释一下含义:
docker run redis # 从redis镜像运行容器
-p 6379:6379 # 映射本地6379端口到容器6379端口,前为本地端口
--name redis # 设置容器名称为redis,方便以后使用docker ps进行管理
-v /docker/redis/redis.conf:/etc/redis/redis.conf # 关联本地/docker/redis/redis.conf文件到容器中/etc/redis/redis.conf,同样,前为本地
-v /docker/redis/data:/data # 关联本地/docker/redis/data到容器内/data目录,此为存放redis数据的目录,为方便以后升级redis,而数据可以留存
-d # 后台启动,使用此方式启动,则redis.conf中daemonize必须设置为no,否则会无法启动
redis-server /etc/redis/redis.conf # 在容器内启动redis-server的命令,主要是为了加载配置
5.分配执行权限:
sudo chmod 777 /docker/redis/redis.bash
6.启动测试:
/docker/redis/redis.bash
# 查看是否已启动
docker ps
如果无法启动或者docker ps中无对应内容,将bash中命令复制出来,删除-d参数启动,查看报错信息
使用redis-cli或者rdm访问 localhost:6379
如需访问容器,可使用
docker exec -it redis bash
或直接使用redis-cli访问容器内redis
docker exec -it redis redis-cli [-a mima]
有点问题,能set,但是不能get。
1.2 后端开发环境配置
jdk1.8 和maven3.6
注意在setting.xml中添加阿里云代理
idea指定用自己的maven
1.3 前端开发环境配置
使用VScode,需要安装几个插件:
Vetur —— 语法高亮、智能感知、Emmet 等,包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl需要同时按着)
EsLint —— 语法纠错
Auto Close Tag —— 自动闭合 HTML/XML 标签
Auto Rename Tag —— 自动完成另一侧标签的同步修改
JavaScript(ES6) code snippets —— ES6 语法智能提示以及快速输入,除 js 外还支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
HTML Snippets —— html 快速自动补全
Open in browser —— 浏览器快速打开
Live Server —— 以内嵌服务器方式打开
Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包
1.4 配置git
# 配置用户名
git config --global user.name "username" //(名字)
# 配置邮箱
git config --global user.email "username@email.com" //(注册账号时用的邮箱)
当然这里还可以配置无秘钥使用,具体方法不再赘述。
1.5 搭建开发工程框架
1.5.1基于git创建空工程
我们先在Gitee里创建一个空工程 地址如下:
https://gitee.com/projects/new
路径为opcj,然后做如下设置:
之后点击创建,完成之后,我们在gitee里复制工程的地址:
之后打开idea,选择“File”->"New"->"Project from version control",如下图所示
之后就可以创建出一个空的Java工程。之后我们的代码就都可以通过git来进行管理了。
1.5.2 创建module
接下来,我们创建好需要的几个module,我们的工程暂时分为优惠券coupon、成员member、订单order、产品product和货物ware五个服务。
首先在idea中选择“opcj”,然后右键->"New"->"Module",进入如下的界面:
上面不同版本的IDEA设置方法略有不同,我们当前使用的是idea2022.1.4版本,截图如上所示,这里有几个地方需要关注:
-
Name就是服务的名字,我们所有的服务都统一使用opcj-***的格式
-
Location这个一般默认不用管。
-
JDK,默认是JDK11,我们目前大部分服务使用JDK8就够了,如果版本太高可能导致后面有些jar用不了,所以这里改成JDK8。
-
Archetype,就是一个module的模板,在新版里是必选的,个人体验之后 ,感觉“maven-archetype-quickstart”就比较合适了,所以我们都基于这个来创建。
我们的其他的module为-优惠券coupon、成员member、订单order、产品product和货物ware五个服务。都创建好之后如下:
1.5.3 创建全局pom
在上面的过程中,各个module是独立的,我们创建一个父pom,我们随便选择一个复制到opcj下,里面的内容除了xml头部的信息,其他的都先去掉,然后补充几个module设置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.opcj</groupId>
<artifactId>opcj</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>opcj</name>
<description>父pom文件</description>
<modules>
<module>opcj-ware</module>
<module>opcj-coupon</module>
<module>opcj-member</module>
<module>opcj-order</module>
<module>opcj-product</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<log4j2-version>2.13.3</log4j2-version>
</properties>
</project>
完成之后,我们执行一下“mvn clean install”来编译一下,如果上述操作都正确,则可以正确执行。
1.5.4 修改.gitignore
在创建了上述模板之后 ,我们可以提交一下自己的代码了,但是有些文件没必要上传的,为此我们需要改一下工程下的.gitignore文件,如果你发现某个文件夹下有你不想要的文件,例如mvnw文件,则可以添加这样的命令:
**/mvnw
.idea目录下的文件也是不必上传的,我们可以添加如下的命令:
.idea
然后就可以用git commit 来提交了,如果发现注释掉的还在,可以先执行如下的命令来清理一下git的缓存:
git rm -r --cached .
然后再提交,提交完成之后我们到gitee上查看一下,如果看到如下内容,就说明我们的服务创建成功了:
1.6 初始化数据库
接下来我们来准备数据库的内容。
1.6.1 docker启动已经关闭的mysql问题
我们前面是通过docker来安装mysql的,此时还是要通过docker来启动,如果我们直接使用上面安装mysql时使用的启动命令来启动,可能会提示mysql已经被占用,此时我们可以先执行一下:
docker ps -a
,此时会列出我们本机的docker容器:
我们将mysql的这个删掉:
docker rm a56a5a4d7c9b
然后再启动:
docker run -it -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
这样就可以了。之后我们可以通过mysql工具来测试一下。
后面我们将这些命令写一个启动脚本,这样就不用每次敲这么多命令了。
1.6.2 创建各个服务的数据表
接下来我们将基础数据库给创建好 ,我们做任何项目都是先明确需求,然后再做详细设计,之后设计数据表,最后才是开始写代码。这里我们现将所有的数据库文件都以sql的方式准备好了,放在工程目录的sql文件夹下。备份一下sql是一个非常好的习惯。
这些数据库和表如何设计的,我们后面单独分析,这里先将其全部创建出来再说。