uniapp智慧停车场系统微信小程序h5、APP源码 智能停车系统源码 安装搭建部署教程

news2024/11/16 9:23:57

【APP】: flutter(原生混合框架,不是web封装,原生应用,一套代码直接生成原生Android和ios应用),既不损失性能,也能降低开发成本
【小程序/h5/公众号】:uni-app(底层框架Vue)
【后台管理】:vue-element-admin

服务端:
【java框架】:[springboot2] [dubbo2.7.3]
【数据库对接】:[mybatis]
【即时通讯IM】:netty4
【数据库】:MySQL(常规业务数据和重要数据存储),Mongodb(存储聊天内容),Redis(缓存高频非实时数据),Elasticsearch(海量数据全文检索和大型数据日志服务)
【负载均衡和转发】:nginx
在这里插入图片描述
在这里插入图片描述
源码下载链接:

安装教程

1、安装JAVA环境
2、安装zookeeper

cd ~
wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

解压压缩包
tar -zxvf zookeeper-3.4.14.tar.gz

开始部署zookeeper(下面我均简称zk)
创建zk目录
mkdir /usr/local/zookeeper/

复制zk到指定目录
cd ~
cp -R zookeeper-3.4.14/* /usr/local/zookeeper/

cd /usr/local/zookeeper/conf/

cp zoo_sample.cfg zoo.cfg

启动zk
sh /usr/local/zookeeper/bin/zkServer.sh start

启动成功如下:
在这里插入图片描述
3、安装nginx
api.你的域名.com(前端用户接口服务)
admin.你的域名.com(后台管理,放静态html文件的)
duty.你的域名.com(老年版岗亭,放静态html文件的)
duty2.你的域名.com(高级复杂版岗亭,放静态html文件的)

设置转发和负载均衡策略 在api域名网站的配置文件添加如下内容
在这里插入图片描述

location /ip {
  default_type application/json;
  return 200 "{\"data\":\"$remote_addr\"}";
}
location / {
      try_files $uri $uri/ @router;
      index index.html;
      error_page  404  /index.html;
  }
  location @router {
      rewrite ^.*$ /index.html last;
  }

location ~ /(auth|friends|ucenter|appVersion|staff)/.*$ {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-For $http_x_forwarded_for;
        proxy_pass http://ucenter;
    }
    location ~ /(file)/.*$ {
        proxy_pass http://file;
    }
    location ~ /(carpark|carparkcar|carparklog|carparkorder|carparkcartype|carparkpackage|carparkCheckpoint|carparkChargingRules)/.*$ {
        proxy_pass http://carpark;
    }
    location ~ /(sms)/.*$ {
        proxy_pass http://sms;
    }
    location ~ /(coupon|pay|payNotify|staffCouponSetting|couponActivity|account)/.*$ {
        proxy_pass http://pay;
    }
    location ~ /(areas)/.*$ {
  proxy_pass http://areas;
}
location ~ /(ad|adlinks)/.*$ {
        proxy_pass http://ad;
    }

    location ~ /(authAdmin|friendsAdmin|departmentAdmin|roleAdmin|ucenterAdmin|weixinConfigAdmin)/.*$ {
        proxy_pass http://userAdmin;
    }
    location ~ /(carparkAdmin|carparkDeviceAdmin|carparkCheckPointDeviceAdmin|carparkcartypeAdmin|carparkUseLogAdmin|carparkpackageAdmin|carParkReleaseLogAdmin|carparkOrderAdmin|carparkLinkUserAdmin|cfCarParkPaymentAgencyAdmin|carparkLoginAdmin|carParkCarLimitAdmin|carparkcarAdmin|carParkSpecialCarAdmin|carparkpackageLogAdmin)/.*$ {
        proxy_pass http://carparkAdmin;
    }
    location ~ /(orderAdmin|paymentAgencyAdmin|payCouponAdmin|userPaymentAgencyAdmin|couponActivityAdmin|accountAdmin|dailyIncomeStatistics)/.*$ {
        proxy_pass http://payMentAdmin;
    }
    location ~ /(adAdmin|adlinksAdmin)/.*$ {
        proxy_pass http://adAdmin;
    }
    location ~ /(chargingStationAdmin|chargingStationDeviceAdmin|cfChargingStationLinkUserAdmin|chargingPortAdmin|chargingRulesAdmin|chargingUseLogAdmin)/.*$ {
        proxy_pass http://chargingAdmin;
    }
    location ~ /(chargingStation|chargingStationDevice|cfChargingStationLinkUser|chargingPort|chargingRules|chargingUseLog)/.*$ {
        proxy_pass http://charging;
    }`

api网站配置文件最后再继续添加如下内容(这里我只拿了两台服务器做负载均衡,分别是192.168.0.115,192.168.0.223这两台,你部署的时候根据你自己的实际情况来填写ip和设置可用服务器,没啥特殊情况强烈建议使用局域网ip)

upstream ucenter {
server 192.168.0.115:8080;
server 192.168.0.223:8080;
}
upstream file {
server 192.168.0.115:8088;
server 192.168.0.223:8088;
}
upstream carpark {
server 192.168.0.115:8089;
server 192.168.0.223:8089;
}
upstream sms {
server 192.168.0.115:8085;
server 192.168.0.223:8085;
}
upstream userAdmin {
server 192.168.0.115:8091;
server 192.168.0.223:8091;
}
upstream carparkAdmin {
server 192.168.0.115:8092;
server 192.168.0.223:8092;
}
upstream pay {
server 192.168.0.115:8096;
server 192.168.0.223:8096;
}
upstream payMentAdmin {
server 192.168.0.115:8097;
server 192.168.0.223:8097;
}
upstream pack {
server 192.168.0.115:8079;
server 192.168.0.223:8079;
}
upstream areas {
server 192.168.0.115:8094;
server 192.168.0.223:8094;
}
upstream ad {
server 192.168.0.115:8099;
server 192.168.0.223:8099;
}
upstream adAdmin {
server 192.168.0.115:8100;
server 192.168.0.223:8100;
}
upstream chargingAdmin {
server 192.168.0.115:8102;
server 192.168.0.223:8102;
}
upstream charging {
server 192.168.0.115:8103;
server 192.168.0.223:8103;
}

4、fastDFS安装部署
在这里插入图片描述

cd ~
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz -O libfastcommonV1.0.7.tar.gz
wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz -O FastDFS.tar.gz
wget http://mirrors.sohu.com/nginx/nginx-1.8.0.tar.gz
yum install -y gcc gcc-c++
yum -y install libevent

下面我们开始部署

tar -zxvf libfastcommonV1.0.7.tar.gz -C /usr/local/
cd /usr/local/libfastcommon-1.0.7/
./make.sh && ./make.sh install
cp /usr/lib64/libfastcommon.so /usr/lib/

5、安装tracker

cd ~
tar -zxvf FastDFS.tar.gz -C /usr/local/
mv /usr/local/fastdfs-5.05 /usr/local/FastDFS
cd /usr/local/FastDFS/
./make.sh && ./make.sh install
/bin/cp -rf /usr/local/FastDFS/conf/* /etc/fdfs/
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
sed -i 's/base_path=\/home\/yuqing\/fastdfs/base_path=\/home\/fastdfs/g' tracker.conf
sed -i 's/http.server_port=8080/http.server_port=80/g' tracker.conf
mkdir -p /home/fastdfs

启动tracker

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

配置和启动storage

cd /etc/fdfs/

【*小心】:下面部分”这里填你的ip”一定要换填为当前服务器公网ip

sed -i 's/192.168.209.121:22122/这里填你的ip:22122/g' storage.conf
sed -i 's/8888/88/g' storage.conf
sed -i 's/store_path0=\/home\/yuqing\/fastdfs/store_path0=\/home\/fdfs_storage /g' storage.conf
sed -i 's/base_path=\/home\/yuqing\/fastdfs/base_path=\/home\/fastdfs/g' storage.conf
mkdir -p /home/fdfs_storage

通过防火墙开启相关端口

firewall-cmd --zone=public --add-port=22122/tcp --permanent
firewall-cmd --zone=public --add-port=88/tcp --permanent
firewall-cmd --zone=public --add-port=23000/tcp --permanent
firewall-cmd --reload

启动storage

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

配置fastdfs-nginx-module

cd ~

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local

cd /usr/local/fastdfs-nginx-module/src/

sed -i 's/\/usr\/local/\/usr/g' config

cp mod_fastdfs.conf /etc/fdfs/

sed -i 's/base_path=\/tmp/base_path=\/home\/fastdfs/g' /etc/fdfs/mod_fastdfs.conf

sed -i 's/url_have_group_name = false/url_have_group_name = true/g' /etc/fdfs/mod_fastdfs.conf

sed -i 's/tracker_server=tracker:22122/tracker_server=你自己的ip:22122/g' /etc/fdfs/mod_fastdfs.conf

sed -i 's/store_path0=\/home\/yuqing\/fastdfs/store_path0=\/home\/fdfs_storage/g' /etc/fdfs/mod_fastdfs.conf

cp /usr/lib64/libfdfsclient.so /usr/lib/

mkdir -p /var/temp/nginx/client

安装nginx
在这里插入图片描述
在这里插入图片描述
启动nginx

/usr/local/nginx/sbin/nginx

6、nginx + fastdfs 的开机自启动
虚拟机每次启动之后都要重新启动一下fastdfs 和 nginx服务,比较麻烦,所以增加开机自启动;

编辑 /etc/rc.d/rc.local 文件,增加启动项;
6-1、编辑文件

`vim /etc/rc.d/rc.local`

6-2、增加如下:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/usr/local/nginx/sbin/nginx

6-3、在centos7中, /etc/rc.d/rc.local 文件的权限被降低了,需要给rc.local 文件增加可执行的权限;

`chmod +x /etc/rc.d/rc.local`

7、运行服务
如果你已成功在线自动打包,将安装包发到(下载到)你服务器的某个目录
下面的xxxx表示你自己的安装包名称

unzip XXXX.zip
mkdir -p /www/java/jar
mv XXXX/* /www/java/jar/
mkdir -p /www/java/log
cd /www/java
wget http://203.195.208.183/base-service.sh

启动基础服务脚本(重启服务器后启动zookeeper,fastDFS,nginx)
wget http://203.195.208.183/start.sh 启动(重启)服务脚本
wget http://203.195.208.183/stop.sh 停止服务脚本
sh start.sh启动(重启)服务,如果你哪天想关闭服务,直接执行sh stop.sh就行了,要注意的是这两个命令都要在/www/java目录下执行

开放端口

firewall-cmd --zone=public --add-port=8080-8100/tcp --permanent
firewall-cmd --reload

如果你的服务器设置的有安全组,记得去安全组把这些端口也要开放(8080-8100的tcp)

查看服务是否已经启动成功

netstat -lnpt|grep 808*

在这里插入图片描述
【用户基础数据相关】:http://你的服务器ip:8080/swagger-ui.html
【停车场相关】:http://你的服务器ip:8089/swagger-ui.html
【短信】:http://你的服务器ip:8085/swagger-ui.html
【文件上传】:http://你的服务器ip:8088/swagger-ui.html
【支付相关】:http://你的服务器ip:8096/swagger-ui.html

慎用命令
如果你发现你服务起不来,但是内存占用还很高,那试试下面的命令(注意!如果你服务器还有其它Java服务慎用此命令,乖乖重启,再启动这个服务,因为我们不知道你其它java程序的运行机制)

ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9

再使用我们启动基础服务器脚本

sh /www/java/base-service.sh

8-1、windows系统下jar打包
在这里插入图片描述
在这里插入图片描述
打包完成之后,把jar包复制好,上传到你服务器上去
在这里插入图片描述
8-2、在linux上,直接执行我们的一键打包脚本
在这里插入图片描述
这些脚本都在源代码文件里面,自行上传即可
在这里插入图片描述
jar包上传到服务

mkdir -p /www/java/log
mkdir -p /www/java/logs

把你jar包上传到/www/java目录下
在这里插入图片描述
解压压缩包,

unzip jar.zip

给目录权限

chmod 755 /www/java/*.sh

现在我们启动服务

sh start.sh

大概等1-2分钟后,使用指令查看服务是否有启动起来

netstat -lnpt|grep 808*

正常启动效果如下
在这里插入图片描述

动态分布式
微服务: 微服务治理框架我们采用了阿里巴巴的Dubbo框架,是目前市场上性能当之无愧的扛把子,每个功能都是一个独立的服务,让我们的应用高可用,提高容灾性,理论上只要你舍得出钱部署服务器,几百万用户真实流量是完全不成问题的。该框架支持灰度发布,让我们的服务更新迭代永不停机
在这里插入图片描述
海量数据优化: 数据库主从模式,微服务框架让主从更方便,数据读写分离,再也不担心高峰期和推广而来的海量并发了

什么是停车场系统
停车场列表
在这里插入图片描述
绑定收款账号
在这里插入图片描述
停车场收费规则设置
在这里插入图片描述
绑定通道(进出口)
在这里插入图片描述
在这里插入图片描述
是要是控制允许保安直接点击岗亭端的视频口下面的开关闸按钮进行开关闸,选“是”开关闸按钮会显示出来,如下图
在这里插入图片描述
进出口(通道)硬件绑定
在这里插入图片描述
在这里插入图片描述
led文字内容和语音播报
点击停车场列表硬件—-》点击led显示编辑
在这里插入图片描述

非专业人员,不要随意动,一定是要在自己公司拥有源代码,并且具有开发能力的前提下进行修改,因为里面的内容受到java代码控制和替换等!
在这里插入图片描述

特殊替换,例如已经固定的模板内容,java代码会做部分替换:
在这里插入图片描述

永远固定不会变的内容:

在这里插入图片描述
停车记录
记录了车辆的车牌号,所属单位或者业主楼栋,停车场,进出场时间,进出场通道,值班人员,停车时长,免停时间(赠送停车时间),应收,实收,车辆品牌,车牌颜色,车位编号,进出场大小图等信息
在这里插入图片描述
停车和人员绑定
绑定之后,对应的用户可以看到自己绑定的停车场数据,收入,财务报表等。
一般可绑定的人员为:保安,物业人员管理员,物业工作人员等
在这里插入图片描述
车类定制(车辆限制)
停车场设置的收费模式,免停时间,进出限制等都是统一通用的,但是当某些车辆类型或者甚至某辆车需要单独“私有化”设置和限制时,这时候就需要创建特定一类的车辆定制,凡是绑定了该车类的车牌号都有该类车的属性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DeepSpeed-Chat 打造类ChatGPT全流程 笔记一

这篇文章主要是对DeepSpeed Chat的功能做了一些了解,然后翻译了几个主要的教程了解了一些使用细节。最后在手动复现opt-13b做actor模型,opt-350m做reward模型进行的chatbot全流程训练时,踩了一些坑也分享出来了。最后使用训练后的模型做servi…

计算机组成原理(课堂测验3次)

3、同步通信与异步通信的主要区别是什么,说明通信双方如何联络。 同步通信和异步通信的主要区别是:前者有公共时钟线,所有设备按统一的时序、同一的传输周期进行信息传输,通信双方按约定好的时序联络;后者没有公共时钟…

探秘直链网盘:高效传输、便捷分享的存储利器!

什么是直链网盘? 直链网盘是一种用于存储和共享文件的在线服务。它为用户提供了一个方便的方式来存储和访问他们的文件,而无需依赖本地存储设备。直链网盘的主要特点是它们可以生成直接下载链接,允许用户快速下载文件,而不需要进…

使用 Sigstore 签名的 Elastic Stack 容器镜像!

作者:Maxime Greau 软件供应链攻击不断增加。 这就是为什么这个主题是安全领导者的首要任务。 在这方面,这篇博文重点介绍了使用 Sigstore 对 Elastic Stack 容器镜像进行签名的新功能,以便: 保护 Elastic 软件供应链工作流程为…

java面试Day14

1.如何使用 Redis 实现一个排行榜? Redis实现排行榜是Redis中一个很常见的场景,主要使用的是ZSet进行实现,下面是为什么选用ZSet: 有序性:排行榜肯定需要实现一个排序的功能,在Redis中有序的数据结构有List…

Tauri:跨平台探索之旅

一、简介 Tauri 是一个跨平台 GUI 框架,与 Electron 的思想基本类似。都是属于跨平台技术的解决方案 优缺点快速分析 我们一般会把tauri作为 Electron 的替代方案,electron优点咱们不看,这里就提两个electron比较明显的问题: 安装…

高考志愿填报的个人看法,希望能对你有所启发

各省高考成绩已出,又到一年高考季。张雪峰提到:“普通家庭不要光谈理想,也要谈落地。”志愿怎样填报、选专业还是选学校、什么专业好就业、高考志愿主要看什么? 作为一名过来人,今天就站在小部分群体的角度来聊聊&…

自动化测试常见的三大问题及解决方案

各位小伙伴们,大家好,今天给大家带来的是关于自动化测试常见的三大问题及解决方案,希望给遇到这三大问题的你一些帮助 一,就是我们定位元素的时候,定位不到或有时定位得到,有时定位不到。 特别是喜欢复制…

策略模式(Strategy)

定义 策略是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。 前言 1. 问题 你打算为游客们创建一款导游程序。该程序的核心功能是提供美观的地图,以帮助用户在任何城市…

数据结构 手撕顺序表(动态版)+代码详解

⭐️ 顺序表介绍 顺序表是线性表的一种。 🌠什么是线性表呢? 线性表是数据结构的一种,一个线性表是 n n n个具有相同特性的数据元素的有限序列。常见的线性表:顺序表、链表、栈、队列、字符串… 🌠什么是顺序表呢&…

Docker + Wasm = 王炸!!!

Docker 宣布推出与 WebAssembly 集成 (DockerWasm) 的首个技术预览版,并表示公司已加入字节码联盟 (Bytecode Alliance),成为投票成员。 Bytecode Alliance(字节码联盟)由 Mozilla、Fastly、Intel 与 Red Hat 联合成立&#xff0c…

Redis的优化(二)

Redis的高可用 一、主从复制优化主从复制的作用主从复制流程主从复制实验 二、Redis 哨兵模式哨兵模式的作用故障转移机制主节点的选举原则哨兵模式的实验 三、Redis群集模式集群的作用Redis集群的数据分片搭建Redis群集模式实验 ●主从复制:主从复制是高可用Redis的…

路由协议基本术语

文章目录 1、自治系统AS2、EGP和IGP3、度量标准和度量值4、管理距离5、路由协议与路由算法6、路由环路问题 1、自治系统AS Internet中,自治系统就是处于同一个管理机构(如一个ISP)控制下的路由器和网络群组 在同一个自治系统中的所有路由器…

Python3 标准库概览 | 菜鸟教程(十八)

目录 一、Python3 标准库中的模块 (一)os 模块 (二)sys 模块 (三)time 模块 (四)datetime 模块 (五)random 模块 (六)math 模块…

RabbitMQ笔记(持续更新中~)

1.消息队列 1.1 MQ的相关概念 1.1.1 什么是MQ MQ(message queue),从字面上看,本质是个队列,FIFO先进先出,只不过队列中存放的内容是消息而已,还是一种跨进程的通信机制,用于上下游…

Pandas之Series(一)

Hi😊😊~大家好呀~最近两天釉色酱在学习python中的数据分析的一个基本库——pandas。今天就先学习pandas中最基本的数据结构Series。下面我们一起进入Series的世界吧!😝 Pandas简介: Pandas是一种基于Python语言的快速…

sklearn.model_selection模块介绍

数据集划分方法 train_test_split train_test_split(*arrays, test_sizeNone, train_sizeNone, random_stateNone, shuffleTrue, stratifyNone)参数包括: test_size:可选参数,表示测试集的大小。可以是一个表示比例的浮点数(例…

Android:ViewPager2

简介 ViewPager2内部使用RecyclerView实现,并提供了增强功能 特性 支持水平、垂直方向布局 android:orientation “vertical” 支持从右到左 android:layoutDirection “rtl” 禁止滑动 setUserInputEnabled() 可修改Fragment集合 对可修改的Fragment集合进行分…

深入探究Bean生命周期的扩展点:Bean Post Processor

概要 在Spring框架中,Bean生命周期的管理是非常重要的一部分。在Bean的创建、初始化和销毁过程中,Spring提供了一系列的扩展点,使开发者能够在不破坏原有功能的基础上,对Bean的生命周期进行定制化操作。其中,Bean Post…

LLM记录202304-202306

RLHF RAFT RAFT: Reward rAnked FineTuning for Generative Foundation Model Alignment code RRHF RRHF: Rank Responses to Align Language Models with Human Feedback without tears code p i = ∑ t lo