《分布式微服务电商》专题(三)-环境搭建

1.准备Linux服务器

1.1.安装Linux虚拟机

  • 下载Linux发行版Centos iso镜像
    我们日常使用较多的是Windows系统,但是它却不是优秀的服务器操作系统。因此,本地进行开发时,推荐将应用部署在Linux上。

  • 安装VirtualBox
    VirtualBox下载:https://www.virtualbox.org/

  • 安装Xshell
    用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。虽然在虚拟机里也可以进行操作,但体验并不好。例如当我们所使用的是云服务器时,直接使用Xshell连接服务器便可进行远程操作,而不需要去打开云服务器的管理界面,同时还免去每次都要输入账号密码的麻烦。

1.2.购买腾讯云

首先进入腾讯云的官网:https://cloud.tencent.com/?fromSource=gwzcw.150044.150044.150044 注册后进行认证。

认证完了后选择 产品 - 云服务器 。如下图:
在这里插入图片描述

2.安装Docker

2.1.使用yum命令在线安装

yum install docker

2.2.安装后查看Docker版本

docker -v

2.3.启动与停止Docker

启动docker:service docker start
停止docker:service docker stop
重启docker:service docker restart
查看docker状态:service docker status
开机启动:chkconfig docker on

3.安装mysql

3.1.搜索镜像

docker hub上面查找mysql镜像

docker search mysql

[root@localhost ~]# docker search mysql
INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                             MySQL is a widely used, open-source relati...   8458      [OK]       
docker.io   docker.io/mariadb                           MariaDB is a community-developed fork of M...   2914      [OK]       
docker.io   docker.io/mysql/mysql-server                Optimized MySQL Server Docker images. Crea...   626                  [OK]
docker.io   docker.io/centurylink/mysql                 Image containing mysql. Optimized to be li...   60                   [OK]
docker.io   docker.io/centos/mysql-57-centos7           MySQL 5.7 SQL database server                   59                   
docker.io   docker.io/mysql/mysql-cluster               Experimental MySQL Cluster Docker images. ...   49                   
docker.io   docker.io/deitch/mysql-backup               Automated and scheduled mysql database dum...   40                   [OK]
docker.io   docker.io/tutum/mysql                       Base docker image to run a MySQL database ...   32                   
docker.io   docker.io/bitnami/mysql                     Bitnami MySQL Docker Image                      29                   [OK]
docker.io   docker.io/schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic back...   28                   [OK]
docker.io   docker.io/linuxserver/mysql                 A Mysql container, brought to you by Linux...   21                   
docker.io   docker.io/prom/mysqld-exporter                                                              20                   [OK]
docker.io   docker.io/centos/mysql-56-centos7           MySQL 5.6 SQL database server                   15                   
docker.io   docker.io/circleci/mysql                    MySQL is a widely used, open-source relati...   13                   
docker.io   docker.io/mysql/mysql-router                MySQL Router provides transparent routing ...   12                   
docker.io   docker.io/arey/mysql-client                 Run a MySQL client from a docker container      10                   [OK]
docker.io   docker.io/imega/mysql-client                Size: 36 MB, alpine:3.5, Mysql client: 10....   6                    [OK]
docker.io   docker.io/openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 ima...   6                    
docker.io   docker.io/yloeffler/mysql-backup            This image runs mysqldump to backup data u...   6                    [OK]
docker.io   docker.io/fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron t...   4                    [OK]
docker.io   docker.io/genschsa/mysql-employees          MySQL Employee Sample Database                  2                    [OK]
docker.io   docker.io/jelastic/mysql                    An image of the MySQL database server main...   1                    
docker.io   docker.io/ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                0                    [OK]
docker.io   docker.io/monasca/mysql-init                A minimal decoupled init container for mysql    0                    
docker.io   docker.io/widdpim/mysql-client              Dockerized MySQL Client (5.7) including Cu...   0                    [OK]

3.2.拉取镜像

[root@localhost ~]# docker pull docker.io/mysql
Using default tag: latest
Trying to pull repository docker.io/library/mysql ... 
latest: Pulling from docker.io/library/mysql
0a4690c5d889: Pull complete 
98aa2fc6cbeb: Pull complete 
0777e6eb0e6f: Pull complete 
2464189c041c: Pull complete 
b45df9dc827d: Pull complete 
b42b00086160: Pull complete 
bb93567627c7: Pull complete 
bda91ab2ec35: Pull complete 
50b4c0c50b33: Pull complete 
70c2999bc788: Pull complete 
3cf3e568e51b: Pull complete 
c80d654aa77e: Pull complete 
Digest: sha256:b1b2c176a45f4ff6875d0d7461fe1fdd8606deb015b38b69545f72de97714efd
Status: Downloaded newer image for docker.io/mysql:latest

3.3.查看镜像

[root@localhost ~]# docker images mysql
REPOSITORY          TAG                 IMAGE ID            CREATED                  SIZE
docker.io/mysql     latest              2151acc12881        Less than a second ago   445 MB
docker.io/mysql     <none>              7bb2586065cd        2 months ago             477 MB

3.4.启动镜像

使用mysql镜像

docker exec -it MySQL运行成功后的容器ID /bin/bash

docker run -di --name mysql_0803 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码

3.5.进入MySQL容器,登陆MySQL

进入mysql容器

docker exec -it mysql_0803 /bin/bash

登陆mysql

mysql -u root -p

外部Win10也来连接运行在dokcer上的mysql服务
我们在我们本机的电脑上去连接虚拟机Centos中的Docker容器,这里192.168.247.130是虚拟机操作系统的IP
关闭防火墙

firewall-cmd --state
service firewalld stop
firewall-cmd --state

3.6.Mysql连接权限

在这里插入图片描述
原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制;客户端不支持新的加密方式。

解决方案:
修改用户(root)的加密方式

步骤1:进入mysql容器内部

[root@localhost ~]# docker exec -it mysql01 bash   ## mysql01是容器的别名,这里也可以用容器的id代替

步骤2:登录mysql

root@e285125c99d6:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

步骤3:设置用户配置项

  • 查看用户信息
mysql> select host,user,plugin,authentication_string from mysql.user; 
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | root             | caching_sha2_password | $A$005$HF7;krfwhkKHp5fPenQm4J2dm/RJtbbyjtCUVdDCcboXQw3ALxsif/sS1 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+

备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码

  • 修改加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  ### 123456 mysql的登录密码
flush privileges;

然后再查看用户信息

mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | root             | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)
  • 测试:连接成功
    在这里插入图片描述

4.安装redis

4.1.拉取Redis镜像

[root@localhost ~]# docker pull redis
Using default tag: latest
Trying to pull repository docker.io/library/redis ... 
latest: Pulling from docker.io/library/redis
f5d23c7fed46: Pull complete 
831c20fd50cb: Pull complete 
bc2a0f25caa5: Pull complete 
745ac314a007: Pull complete 
6deeca231441: Pull complete 
6291e84f5373: Pull complete 
Digest: sha256:854715f5cd1b64d2f62ec219a7b7baceae149453e4d29a8f72cecbb5ac51c4ad
Status: Downloaded newer image for docker.io/redis:latest

4.2.创建Redis容器

[root@localhost ~]# docker run -di --name=my_redis -p 6388:6379 redis
f0980b9a56e90a5c3564591f9dfb1c7ecf1f9223d85c011d3aea41aeb14c9d27
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
f0980b9a56e9        redis               "docker-entrypoint..."   8 seconds ago       Up 7 seconds        0.0.0.0:6388->6379/tcp   my_redis

4.3.客户端测试

在你的本地电脑命令提示符下,用window版本redis测试
在这里插入图片描述

5 开发环境统一

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>
	

配置 jdk 1.8 编译项目

<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>

5.2 Idea&VsCode

idea 安装 lombok、mybatisx插件 Translation插件 等等…

Vscode 安装开发必备插件

Vetur ——语法高亮,智能感知 包含格式化功能,Alt+Shift+F (格式化全文) ,Ctrl+K Ctrl+F (格式化选中代码,两个Ctrl需要同时按着)
EsLint 一一 语法纠错
Auto Close Tag 一一 自动闭合HTML/XML标签
Auto Rename Tag 一一 自动完成另-侧标签的同步修改
JavaScript(ES6) code snippets 一一 ES6 语法智能提示以及快速输入,除j外还支持.ts, .jsx, .tsx, .html, .vue;省去了配置其支持各种包含is代码文件的时间

VsCode开发vue 常用插件

猜你喜欢

转载自blog.csdn.net/BruceLiu_code/article/details/114556274