单节点 gpmall
一、什么是咕泡商城(GPmall)
咕泡商城(GPmall)是一个基于Java开发的电商系统。它旨在提供一个完整的电商平台解决方案,包括用户管理、商品管理、购物车、订单管理、支付集成等功能。这个项目通过模块化的设计,将各个功能模块独立开发,并使用微服务架构来实现高扩展性和高可维护性。
咕泡商城的主要功能:
- 用户管理:处理用户的注册、登录、权限管理等操作。
- 商品管理:支持商品的添加、删除、更新和分类管理。
- 购物车:实现用户将商品添加到购物车、修改商品数量、移除商品等操作。
- 订单管理:管理用户的订单创建、支付、订单状态跟踪等功能。
- 支付集成:支持多种支付方式的集成,实现从购物到支付的完整交易流程。
- 评论和反馈:支持用户对商品进行评论和打分,增强用户体验。
二、咕泡商城(GPmall)的作用
咕泡商城提供了一个真实的项目案例,涵盖了从前端到后端的完整技术栈
三、配置 gpmall
IP | 主机名 |
---|---|
192.168.75.100 | gpmall |
1. 基础配置
1.1 配置主机名
$ hostnamectl set-hostname gpmall
$ hostnamectl
Static hostname: gpmall
Icon name: computer-vm
Chassis: vm
Machine ID: 4edf9db48dd74d02b42a6aa1f6f88418
Boot ID: e87a5452ca724c819470932a7cf6020d
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.el7.x86_64
Architecture: x86-64
1.2 修改 host
$ sudo vi /etc/hosts
# 添加以下内容
192.168.75.100 mall
1.3 配置 yum 源
将提供的 packages 包上传到服务器的 /root
目录下,并配置本地 local.repo
文件,且,自带的 CentOS.repo
文件不要移除
$ sudo vi /etc/yum.repos.d/local.repo
# 添加以下内容
[mall]
name=mall
baseurl=file:///root/gpmall-repo
gpgcheck=0
enabled=1
$ sudo yum repolist
1.4 安装基础服务
# 安装 Java 环境
$ sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
# 检查 Java 环境
$ java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
# 安装 Redis 缓存服务
$ sudo yum insstall -y redis
# 安装 Elasticsearch 服务
$ sudo yum install -y elasticsearch
# 安装 Nginx 服务
$ sudo yum install -y nginx
# 安装 MariaDB 数据库
$ sudo yum install -y mariadb mariadb-server
安装 ZooKeeper 服务,将提供的 zookeeper-3.4.14.tar.gz 上传至 /root
目录下
# 然后解压
$ sudo tar -zxf zookeeper-3.4.14.tar.gz
# 启用配置文件
$ cd /root/cd zookeeper-3.4.14/conf/
$ sudo mv zoo_sample.cfg zoo.cfg
# 启动 ZooKeeper 服务
$ cd /root/zookeeper-3.4.14/bin/
$ sudo ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 查看 ZooKeeper 状态
$ sudo ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: standalone
安装 Kafka 服务,将提供的 kafka_2.11-1.1.1.tgz 上传至 /root
目录下
# 解压
$ sudo tar -zxf kafka_2.11-1.1.1.tgz
# 启动 Kafka
$ cd /root/kafka_2.11-1.1.1/bin/
$ sudo ./kafka-server-start.sh -daemon ../config/server.properties
# 检查 Kafka 是否运行
$ jps
2098 QuorumPeerMain
2422 Kafka
2491 Jps
# 安装 net-tools
$ sudo yum install -y net-tools
# 继续检查 Kafka 是否运行
$ netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 993/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1195/master
tcp6 0 0 :::45041 :::* LISTEN 2422/java
tcp6 0 0 :::22 :::* LISTEN 993/sshd
tcp6 0 0 :::41912 :::* LISTEN 2098/java
tcp6 0 0 ::1:25 :::* LISTEN 1195/master
tcp6 0 0 :::9092 :::* LISTEN 2422/java
tcp6 0 0 :::2181 :::* LISTEN 2098/java
# 当看到 Kafka 服务和 9092 端口时,说明 Kafka 服务已启动
2. 启动服务
2.1 启动数据库并配置
# 修改数据库配置文件
$ sudo vi /etc/my.cnf
# 添加以下内容
[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
# 启动数据库
$ sudo systemctl start mariadb
# 设置 root 用户的密码为 123456 并登录
$ mysqladmin -uroot password 123456
$ mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.18-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
# 给本地用户 root 用户对所有数据库和所有表授予所有权限,并且使用密码 123456 来进行身份验证,并允许本地主机的 root 用户将这些权限授予给其他用户
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY '123456' with GRANT OPTION;
Query OK, 0 rows affected (0.001 sec)
# 给所有主机的 root 用户对所有数据库和所有表授予所有权限,并且使用密码 123456 来进行身份验证,并允许所有主机的 root 用户将这些权限授予给其他用户
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456' with GRANT OPTION;
Query OK, 0 rows affected (0.001 sec)
# 将 gpmall.sql 上传至 '/root' 目录下
# 创建数据库 gpmall
MariaDB [(none)]> CREATE DATABASE gpmall;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> USE gpmall;
Database changed
MariaDB [gpmall]> SOURCE /root/gpmall.sql
......
......
Query OK, 0 rows affected (0.000 sec)
# 退出 MariaDB
MariaDB [gpmall]> Ctrl-C -- exit!
Aborted
# 设置开机自启
$ sudo systemctl enable mariadb
2.2 启动 Redis 服务
# 修改 reids 配置文件
$ sudo vi /etc/redis.conf
# 注释掉以下内容
bind 127.0.0.1 # 第 61 行
# 修改以下内容,把 yes 改成 no
protected-mode no # 第 80 行
# 启动 redis 服务
$ sudo systemctl start redis
$ sudo systemctl enable redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
2.3 启动 Elasticsearch 服务
# 修改 Elasticsearch 配置文件
$ sudo vi /etc/elasticsearch/elasticsearch.yml
# 添加以下内容
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-credentials: true
# 将以下 4 条语句前的 # 去掉,并修改 network.host 的 IP 为本机 IP
cluster.name: my-application # 第 20 行
node.name: node-1 # 第 26 行
network.host: 192.168.75.100 # 第 58 行
http.port: 9200 # 第 62 行
# 启动 Elasticsearch 服务,并配置开机自启
$ sudo systemctl start elasticsearch
$ sudo systemctl enable elasticsearch
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
3. 修改全局变量
# 修改 hosts 文件
$ sudo vi /etc/hosts
# 在下面添加以下内容
192.168.75.100 kafka.mall
127.0.0.1 mysql.mall
192.168.75.100 redis.mall
192.168.75.100 zookeeper.mall
4. 部署前端
将 dist
目录上传至 /root
目录下,接着将 dist
目录下的文件都复制到 nginx 默认项目路径
# 下载 dist.7z
$ sudo wget http://moka.anitsuri.top/images/gpmall/dist.7z
# 解压
$ sudo tar -zf dist.7z
$ sudo rm -rf /usr/share/nginx/html/*
$ sudo cp -rvf /root/dist/* /usr/share/nginx/html/
修改 nginx 配置文件
$ sudo vi /etc/nginx/conf.d/default.conf
# 填入以下内容
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /user {
proxy_pass http://127.0.0.1:8082;
}
location /shopping {
proxy_pass http://127.0.0.1:8081;
}
location /cashier {
proxy_pass http://127.0.0.1:8083;
}
#error_page 404 /404.html;
}
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5. 部署后端
将提供的 4 个 jar 包上传到 /root
目录下,并启动
# 下载 4 个 jar 包
$ wget http://moka.anitsuri.top/images/gpmall/shopping-provider-0.0.1-SNAPSHOT.jar
$ wget http://moka.anitsuri.top/images/gpmall/user-provider-0.0.1-SNAPSHOT.jar
$ wget wget http://moka.anitsuri.top/images/gpmall/gpmall-shopping-0.0.1-SNAPSHOT.jar
$ wget wget http://moka.anitsuri.top/images/gpmall/gpmall-user-0.0.1-SNAPSHOT.jar
$ nohup java -jar shopping-provider-0.0.1-SNAPSHOT.jar &
$ nohup java -jar user-provider-0.0.1-SNAPSHOT.jar &
$ nohup java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar &
$ nohup java -jar gpmall-user-0.0.1-SNAPSHOT.jar &
# 检查 jar 包是否全部运行
$ ps -aux | grep java
......
......
root 6035 30.8 11.1 4648208 429316 pts/0 Sl 11:12 0:36 java -jar shopping-provider-0.0.1-SNAPSHOT.jar
root 6072 33.5 12.7 4659628 493684 pts/0 Sl 11:12 0:34 java -jar user-provider-0.0.1-SNAPSHOT.jar
root 6134 55.7 13.5 4656336 524608 pts/0 Sl 11:12 0:44 java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar
root 6194 59.8 10.1 4615356 391872 pts/0 Sl 11:13 0:34 java -jar gpmall-user-0.0.1-SNAPSHOT.jar
root 6263 0.0 0.0 112828 976 pts/0 R+ 11:14 0:00 grep --color=auto java
6. 网址访问
Chrome 浏览器里输入 http://192.168.75.100
访问页面
然后点击右上角的 “头像” 进行登录,并使用 用户名: test 密码: test 进行登录操作
登陆后可以进行购买操作,单击首页 “坚果 R1”(李姐万岁!)
点击 “现在购买”
至此,单机部署应用完成
四、问题与解决
1. 各个服务的 log 文件 以及 检查命令
- redis:
/var/log/redis/redis.log
- Elasticsearch:
/var/log/elasticsearch/my-application.log
- nginx:
- 访问日志:
/var/log/nginx/access.log
- 错误日志:
/var/log/nginx/error.log
- 访问日志:
- ZooKeeper:
- Kafka:
- 主日志:
/root/kafka_2.11-1.1.1/logs/server.log
- 输出日志:
/root/kafka_2.11-1.1.1/logs/kafkaServer.out
- 主日志:
- MySQL(MariaDB):看
/etc/my.cnf
我配置的是log_error = /var/log/mysql/mariadb_error.log
- 那几个 jar 包的日志:
nohup.out
- 查看那几个 jar 包是否运行:
ps -aux | grep java
2. 遇到的问题
如果想要有完整的观看体验,请点击这里
Comments NOTHING