谷粒商城----环境搭建篇

声明
本文是根据尚硅谷视频讲解的谷粒商城项目,手动实操过后以及踩坑后的心得体会,笔记会根据分为几大关键点进行讲解,码字不易,请勿转载发布!
环境搭建篇:仅讲解如何搭建一个可运行的环境,不包括部署集群,属于基础篇章

linux环境搭建

下载 visualBox 和 vagrant

vagrant init centos/7  初始化一个centos7系统
vagrant up             启动虚拟机环境
vagrant ssh            连上虚拟机
vagrant reload         重启虚拟机

什么是网络地址转换NAT

就是如果其他主机要访问虚拟机,必须由windows端口如3333开辟给虚拟机端口如3306。这样每在linux里安一个软件都要进行端口映射不方便,(也可以在virualBox里挨个设置)。
解决方案:给虚拟机一个固定的ip地址,windows和虚拟机可以互相ping通。这样直接访问虚拟机ip就相当于直接访问虚拟机

更改Vagrantfile更改虚拟机ip,修改其中的config.vm.network "private_network",ip:"192.168.56.10",配置完后vagrant reload重启虚拟机

虚拟机安装软件

配置源

# 备份原yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 使用新yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 生成缓存
yum makecache

安装docker

#卸载系统之前的docker 
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 安装yum-utils包                  
sudo yum install -y yum-utils
# 配置镜像
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker    
sudo yum install docker-ce docker-ce-cli containerd.io
# 启动docker
sudo systemctl start docker
# 设置开机自启动
sudo systemctl enable docker
# 查看版本
docker -v
# 查看虚拟机docker镜像
sudo docker images

配置镜像加速

登录阿里云按照步骤:https://cr.console.aliyun.com/cn-qingdao/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://chqac97z.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装mysql-docker

# 拉取镜像到本地
sudo docker pull mysql:5.7
# --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
# 查看成功启动的镜像
docker ps
# 进入已启动的容器
docker exec -it mysql bin/bash

mysql配置修改,因为有目录映射,所以我们可以直接在镜像外执行

# 进入文件
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
# 重新启动mysql
docker restart mysql

安装redis-docker

# 在虚拟机中,如果直接挂载的话docker会以为挂载的是一个目录,所以我们先创建一个文件然后再挂载
mkdir -p /mydata/redis/conf
# 创建文件
touch /mydata/redis/conf/redis.conf
# 拉取redis镜像
docker pull redis
# 启动容器
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
# 直接进去redis客户端。
docker exec -it redis redis-cli	
# 默认没有持久化,配置文件开启持久化
vim /mydata/redis/conf/redis.conf
# 插入下面内容
appendonly yes
# 重新启动redis
docker restart redis
# 设置开机自启
docker update redis --restart=always

安装nginx-docker

# 拉取nginx镜像
docker pull nginx:1.10
# 随便启动一个nginx实例,只是为了复制出配置,放到docker里作为镜像的统一配置
docker run -p 80:80 --name nginx -d nginx:1.10
# 进入mydata目录
cd /mydata
# 创建nginx文件夹
mkdir nginx
# 把nginx里的东西复制出来,然后在外部 /mydata/nginx有了一堆文件
docker container cp nginx:/etc/nginx .
# 进入nginx目录
cd /mydata/nginx/
# 创建conf目录
mkdir conf
# 将nginx目录下的内容移动到conf目录下
cd /mydata
mv nginx conf
# 由于移除了,所以nginx文件夹不存在了,所以创建一个nginx文件夹,将conf移动到nginx下
mkdir nginx
mv conf/ nginx/
# 停掉nginx
docker stop nginx
# 移除此容器,因为只是要得到配置文件而已
docker rm nginx
# 创建新的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
# 注意一下这个路径映射到了/usr/share/nginx/html,我们在nginx配置文件中是写/usr/share/nginx/html,不是写/mydata/nginx/html
# 设置开机自启
docker update nginx --restart=always

搭建域名访问环境

正向代理:可以清楚知道我要访问什么内容(网址),但是由于直接访问访问不到,所以需要利用代理服务器帮助访问寻求

反向代理:不知道实际的服务是什么(隐藏真实的ip),nginx服务器是将真正服务器的地址存放在nginx,然后客户端通过ip访问nginx,然后由nginx匹配到规则后代理到真正服务器, 比如我们只知道网关的域名,实际上网关的真实ip和将要怎么转发是由nginx控制的,不是我们通过一个实际的地址直接访问(也就是隐藏了服务器的内部信息)

DNS域名解析

先解析本机是否有相应的映射规则,解析本机的host文件,根据域名解析到对应的地址,由于每次修改hosts文件太麻烦了,因此,安装SwitchHosts
谷粒商城----环境搭建篇_第1张图片

配置nginx.conf,负载均衡到网关

谷粒商城----环境搭建篇_第2张图片

cd /mydata/nginx/conf/conf.d/
cp default.conf mall.conf
vim mall.conf

谷粒商城----环境搭建篇_第3张图片

nginx动静分离

以前,无论是动态或是静态请求,都会交给nginx,再由Nginx转交给网关,由网关交给后台服务的集群,假设现在产生了很多首页的请求,一个就占用了微服务一半的资源,两个就会占满,最终吞吐量每秒就会只有两三个左右

所以将静态资源直接放在nginx, 由nginx直接将资源返回,而动态资源还是交由网关处理,最终给予真正的服务

将原idea的静态资源static文件夹,全部移到服务器的/mydata/nginx/html/目录下

谷粒商城----环境搭建篇_第4张图片

安装elasticsearch-docker

# 拉取 elasticsearch 和 kibana镜像
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
# 创建配置文件
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data	
chmod -R 777 /mydata/elasticsearch/
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
# 启动容器
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.4.2
# 开机自启
docker update elasticsearch --restart=always
# 启动kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 -d kibana:7.4.2
# 开机自启
docker update kibana  --restart=always

安装rabbitmq-docker

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
docker update rabbitmq --restart=always

前端vscode插件

Auto Close Tag        Auto Rename Tag          Chinese       ESlint

HTML CSS Support      HTML Snippets            JavaScript ES6

Live Server           open in brower           Vetur

git

修改总项目的.gitignore

**/mvnw
**/mvnw.cmd
**/.mvn
**/target/
.idea
**/.gitignore

数据库表参考:https://gitee.com/HanFerm/gulimall/tree/master/sql文件

ps:gulimall_admin里面的schedule_job表要清空,不然启动renrenfast模块会报获取定时任务CronTrigger出现异常

参考链接
https://blog.csdn.net/hancoder/article/details/106922139

你可能感兴趣的:(商城项目,linux,运维,docker,java)