谷粒商城 - 项目环境搭建

2023-05-16

文章目录

    • 1、安装 linux 虚拟机
    • 2、安装docker
    • 3、docker安装mysql
    • 4、docker安装redis
    • 5、开发环境统一
      • 1、Maven
      • 2、Idea&VsCode 插件
      • 3、安装配置git
    • 6、创建git仓库
    • 7、创建对应项目模块
    • 8、创建对应数据库
    • 9、页面clone人人开源
    • 10、Node.js
    • 11、代码生成器clone renren-generator
    • 12、docker安装nginx
    • 13、docker安装elasticsearch
    • 14、docker安装ik分词器
    • 15、docker安装rabbitmq


1、安装 linux 虚拟机

  • 下载&安装VirtualBox

https://www.virtualbox.org/,需要开启CPU 虚拟化

  • 下载&安装Vagrant

    • https://app.vagrantup.com/boxes/search vagrant 官方镜像仓库
    • https://www.vagrantup.com/downloads Vagrant 下载
  • 使用 vagrant 命名查看是否安装成功

  • 打开window cmd窗口,运行 vagrant init centos/7,即可初始化一个centos7系统

  • 运行 vagrant up 即可启动虚拟化。系统root用户的密码是vagrant

  • vagrant其他常用命令

    • vagrant ssh :自动使用vagrant用户连接虚拟机
  • 默认虚拟机的ip地址不是固定ip,开发不方便

    • 修改vagrantfile(文件在C盘自己的用户下面)
      config.vm.network"private_network",ip:"192.168.56.10"
      这里的ip需要在物理机下使用ipconfig命令找到
      使用 vagrant reload 重启虚拟机
      在这里插入图片描述

    • 重新使用vagrant up启动机器即可。然后在vagrant ssh连接机器

    • 在vagrant中查看ip使用ip addr命令

  • 默认只允许ssh登录方式,为了后来操作方便,文件上传等,我们可以配置允许账号密码登录
    Vagrant ssh进去系统之后;
    vi /etc/ssh/sshd_config
    修改PasswordAuthentication yes/no
    重启服务 service sshd restart

  • 以后可以使用提供的 ssh连接工具直接连接

  • 网络设置:cd /etc/sysconfig/network-scripts/进入文件夹后,修改ifcfg-eth1文件 vi ifcfg-eth1
    在这里插入图片描述
    添加红色区域的配置,保存重启虚拟机service network restart,此时我们在ping baidu.com 就可以通了,至此网络设置完毕。
    在这里插入图片描述

  • 修改 linux 的 yum 源
    1)备份原 yum 源
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    2)使用新 yum 源
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
    3)生成缓存
    yum makecache

  • 安装wget
    使用 yum install wget 命令

  • 安装解压命令
    使用 yum install -y unzip 命令

注意:VirtualBox,会与包括带不限于如下软件冲突,需要卸载这些软件,然后重启电脑;冲突的软件;红蜘蛛,360,净网大师(有可能)等。

这里如何大家想使用 VMware15 中安装 Centos7 的话,可以访问此地址【有图文详解】
https://blog.csdn.net/weixin_45606067/article/details/109962484

2、安装docker

Docker安装文档:https://docs.docker.com/engine/install/centos/
Docker学习网站:https://www.runoob.com/docker/centos-docker-install.html

  • 卸载系统之前的docker
sudo yum remove docker \
         docker-client \
         docker-client-latest \
         docker-common \
         docker-latest \
         docker-latest-logrotate \
         docker-logrotate \
         docker-engine
  • 初始化一些插件
sudo yum install -y yum-utils \
	device-mapper-persistent-data \
	lvm2
  • docker 安装地址
官方源地址(比较慢):
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

阿里云:
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学源:
sudo yum-config-manager \
    --add-repo \
    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  • 安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
  • 启动docker
sudo systemctl start docker
  • 其他命令
    docker -v:检查docker版本
    sudo docker images:检查下载的镜像有
    sudo systemctl enable docker:开机自启动

  • 配置docker镜像加速

正常我们在docker hub中下载,这样配置完速度快

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://076wf9i1.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

3、docker安装mysql

1、下载镜像文件

sudo docker pull mysql:5.7

2、创建实例并启动

su root 密码为vagrant,这样就可以不写sudo了
# --name指定容器名字 -v目录挂载 -p指定端口映射  -e设置mysql参数 -d后台运行
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数说明:

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -v /mydata/mysql/conf:/etc/mysql:将配置文件挂载到主机
  • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  • -v /mydata/mysql/data:/var/lib/mysql:将配置文件夹挂载到主机
  • -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
[root@localhost conf]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
eda306bfe708        mysql:5.7           "docker-entrypoint.s…"   6 minutes ago       Up 6 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

3、mysql配置

[root@localhost conf]# docker exec -it mysql /bin/bash
root@2e748e81e92e:/# ls
bin   dev                         entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint-initdb.d  etc            lib   media  opt  root  sbin  sys  usr
root@2e748e81e92e:/# cd /etc/mysql/
root@2e748e81e92e:/etc/mysql# ls
my.conf
root@2e748e81e92e:/# exit;
===============================================================================


vi /mydata/mysql/conf/my.conf 

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

保存(注意该配置不是collection而是collation)

docker restart mysql

4、设置启动docker时,即运行mysql

docker update mysql --restart=always

4、docker安装redis

1、下载镜像文件

需要在root用户下su root

docker pull redis

2、创建实例并启动

# 在虚拟机中
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
[root@localhost conf]# docker  ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
9fdecd41ac5c        redis               "docker-entrypoint.s…"   21 seconds ago      Up 15 seconds       0.0.0.0:6379->6379/tcp              redis

3、连接到docker的redis

# 直接进去redis客户端。
[root@hadoop-104 ~]# docker exec -it redis redis-cli
127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> get key1
"v1"
127.0.0.1:6379> exit

注意:这里我们重启redis后,在去 get kyey1 的时候,发现返回的是 nil

解决方案:进入cd /mydata/redis/conf文件夹中,使用vim redis.conf 编辑文件,加入appendonly yes保存后退出;重启redis,就可以获取到了。

4、设置redis容器在docker启动的时候启动

docker update redis --restart=always

5、开发环境统一

1、Maven

<mirrors>
	<mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>
<profiles>
	<profile>
		<id>jdk-1.8</id>
     	<activation>
	       	<activeByDefault>true</activeByDefault>
			<jdk>1.8</jdk>
	     </activation>
	     <properties>
	     	<maven.compiler.source>1.8</maven.compiler.source>
	     	<maven.compiler.target>1.8</maven.compiler.target>
	     	<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		</properties>
	</profile>
</profiles>

2、Idea&VsCode 插件

在这里插入图片描述在这里插入图片描述

3、安装配置git

1、下载git:https://git-scm.com

2、配置git,进入git bash

# 配置用户名
git config --global user.name "username"		//名字
# 配置邮箱
git config --global user.email "username@email.com"    //注册账号时用的邮箱

3、配置ssh免密登录

https://gitee.com/help/articles/4181#article-header0

进入git bash;使用:ssh-keygen -t rsa -C "xxxxx#xxx.com" 命令。连续三次回车。
一般用户目录下会有:
在这里插入图片描述
或者 cat ~/.ssh/id_rsa.pub
登录进入gitee,在设置里面找到 SSH KEY 将 .pub 文件的内容粘贴进去
使用 ssh -T git@gitee.com 测试是否成功即可

6、创建git仓库

在这里插入图片描述

后端项目源码:https://gitee.com/StarSea007/gulimall-parent
前端项目源码:https://gitee.com/StarSea007/gulimall-vue

7、创建对应项目模块

在这里插入图片描述

8、创建对应数据库

在这里插入图片描述

9、页面clone人人开源

人人开源项目源码:https://gitee.com/renrenio

在这里插入图片描述

  • renren-fast:后台项目页面
  • renren-fast-vue:前台项目页面
    以上两个一般前后分离项目一起使用
  • renren-security:不适用于前后分离的项目,页面使用的是模板引擎
  • renren-generator:代码生成器,可在线生成entity、xml、dao、service、vue、sql代码,减少开发任务。
  • renren-fast-adminlte:前台项目页面,主要使用html页面及插件写的。

克隆到本地:

git clone https://gitee.com/renrenio/renren-fast-vue.git

git clone https://gitee.com/renrenio/renren-fast.git

将拷贝下来的“renren-fast”删除“.git”后,拷贝到“gulimall”工程根目录下,然后将它作为gulimall的一个module

 

创建“gulimall_admin”的数据库,然后执行“renren-fast/db/mysql.sql”中的SQl脚本

修改“application-dev.yml”文件,默认为dev环境,修改连接mysql的url和用户名密码

spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://192.168.56.10:3306/gulimall_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
            username: root
            password: root

 

启动“gulimall_admin”,然后访问“http://localhost:8080/renren-fast/”

在这里插入图片描述

10、Node.js

前端开发,少不了node.js ; Node.js是一个基于Chrome V8 引擎的JavaScript 运行环境。

http://nodejs.cn/api/

我们关注与node.js的npm功能就行;

NPM是随同NodeJS一起安装的包管理工具,JavaScript-NPM;Java-Maven;

1)官网下载安装node.js,并使用 node -v 检查版本
2)配置npm 使用淘宝镜像
npm config set registry http://registry.npm.taobao.org/

将项目用VSCode打开,在终端中执行以下命令

npm install

npm run dev

在这里插入图片描述

11、代码生成器clone renren-generator

克隆下的项目删除.git 文件,将该项目放置到“gulimall”的跟路径下,然后添加该Module,并且提交到github上。

修改配置

renren-generator/src/main/resources/generator.properties

#代码生成器,配置信息

mainPath=com.kuang
#包名
package=com.kuang.gulimall
moduleName=ware
#作者
author=starsea
#Email
email=starsea@mail.com
#表前缀(类名不会包含表前缀)
tablePrefix=wms_

运行“renren-generator”

访问:http://localhost:80/

在这里插入图片描述

点击“renren-fast”,能够看到它将“renren-fast”的所有表都列举了出来:

在这里插入图片描述

选择所有的表,然后点击“生成代码”,将下载的“renren.zip”,解压后取出main文件夹,放置到“gulimall-product”项目的main目录中。

12、docker安装nginx

  • 随便启动一个 nginx 实例,只是为了复制出配置
    • docker run -p 80:80 --name nginx -d nginx:1.10
  • 在mydata文件夹下创建nginx文件夹:mkdir nginx
  • 将容器内的配置文件拷贝到当前目录:docker container cp nginx:/etc/nginx . 别忘了后面的点
  • 终止原容器:docker stop nginx
  • 移除原容器:docker rm nginx
  • 修改文件名称:mv nginx conf
  • 在创建文件夹:mkdir nginx,把这个 conf 移动到/mydata/nginx 下:mv conf nginx/
  • 执行以下命令
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
  • 设置开机启动nginx:docker update nginx --restart=always
  • 在nginx 的 html 文件夹下创建 index.html,测试是否能够正常访问:http://192.168.56.10/index.html
    • 写入<h1>gulimall</h1>
  • 在nginx 的 html 文件夹下创建 fenci.txt,测试是否能够正常访问:http://192.168.56.10/es/fenci.txt(为了测试自定义ik分词器)
    • 写入 尚硅谷乔碧罗

13、docker安装elasticsearch

1、下载镜像文件

# 存储和检索
docker pull elasticsearch:7.6.2
# 可视化检索数据
docker pull kibana:7.6.2

查看虚拟机可用内存free -m

2、创建ElasticSearch实例

(1)配置

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml

(2)启动Elasticsearch

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e  "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.6.2

以后再外面装好插件重启即可;

(3)测试

查看elasticsearch版本信息: http://192.168.56.10:9200/ ,发现没有反应;使用docker ps查看,发现elasticsearch出现了错误导致没有启动成功,使用 docker logs 容器id查看日志错误;
报错原因:由于我们挂载到外部的,导致目录结构没有权限访问;
解决方法:使用chmod -R 777 /mydata/elasticsearch/ 命令目录权限为可读可写的。
至此我们重新启动docker start 840d 【使用 dockers ps -a 查看为何是840d】后,在次访问9200端口,就可看到如图就证明启动成功了:

{
    "name": "0adeb7852e00",
    "cluster_name": "elasticsearch",
    "cluster_uuid": "9gglpP0HTfyOTRAaSe2rIg",
    "version": {
        "number": "7.6.2",
        "build_flavor": "default",
        "build_type": "docker",
        "build_hash": "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
        "build_date": "2020-03-26T06:34:37.794943Z",
        "build_snapshot": false,
        "lucene_version": "8.4.0",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}

特别注意
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \ 测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了ES。

设置开机启动elasticsearch

docker update elasticsearch --restart=always

3、创建Kibana实例

(1)配置

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 -d kibana:7.6.2

http://192.168.56.10:9200:一定要改为自己虚拟机

(2)设置开机启动kibana

docker update kibana --restart=always

(3)测试

使用postman查看显示elasticsearch 节点信息 http://192.168.56.10:9200/_cat/nodes

127.0.0.1 76 95 1 0.26 1.40 1.22 dilm * 0adeb7852e00

也可以在docker官网查看到kibana:https://hub.docker.com/_/kibana

访问Kibana:http://192.168.56.10:5601
在这里插入图片描述

14、docker安装ik分词器

注意:不能用默认 elasticsearch-plugin install xxx.zip 进行自动安装,
需查看 https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2 对应 es 版本安装;

docker exec -it 容器id /bin/bash

进入 es 容器内部 plugins 目录

下载ik压缩包:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
解压到指定文件夹下:unzip elasticsearch-analysis-ik-7.6.2.zip -d ik
移除下载的压缩文件:rm –rf *.zip
可以确认是否安装好了分词器
cd ../bin
elasticsearch plugin list:即可列出系统的分词器
退出容器内部:exit;
重启:docker restart elasticsearch

测试分词器

1)使用默认

POST _analyze
{
  "text": "我是中国人"
}

2)使用分词器

POST _analyze
{
  "analyzer": "ik_smart", "text": "我是中国人"
}

3)另外一个分词器

POST _analyze
{
  "analyzer": "ik_max_word", "text": "我是中国人"
}

观察测试结果,能够看出不同的分词器,分词有明显的区别,所以以后定义一个索引不能再使用默认的 mapping 了,要手工建立 mapping,因为要选择分词器。

自定义词库

修改 /mydata/elasticsearch/plugins/ik-analyzer/config 中的IKAnalyzer.cfg.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 扩展配置</comment>
	<!--用户可以在这里配置自己的扩展字典 -->
	<entry key="ext_dict"></entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords"></entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<entry key="remote_ext_dict">http://192.168.56.10/es/fenci.txt</entry> 
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

修改完成后,需要重启elasticsearch容器,否则修改不生效。docker restart elasticsearch

在 kibana 中测试分词效果:
在这里插入图片描述

更新完成后,es 只会对新增的数据用新词分词。历史数据是不会重新分词的。如果想要历史数据重新分词。需要执行:
POST my_index/_update_by_query?conflicts=proceed

15、docker安装rabbitmq

1、拉取rabbitmq镜像

docker pull rabbitmq:management

2、创建并启动

docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p \
25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management

3、设置开启自启

docker update rabbitmq --restart=always

4、浏览器访问 http://192.168.38.22:15672

用户名/密码:guest/guest
在这里插入图片描述


如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谷粒商城 - 项目环境搭建 的相关文章

随机推荐