1 Star 4 Fork 4

穿裤衩闯天下 / vmtemplateserver

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

vmnepentheserver

看完之后回来做个小问卷吧,帮助我促进项目的完善 忘忧项目使用问卷

介绍

忘忧大陆-修仙一样交友

分担忧愁,让烦恼减半 分享快乐,让乐趣加倍

帮助用户解决烦恼,忘记忧愁,放松心情,快乐交友等打造一站式社交平台,弹幕式心情分享,及新颖的即时聊天方式,带给用户不一样的交流体验,让用户之间的交流充满趣味性,提高心情愉悦度,达到忘记烦恼的目的。

banner

环境配置

首先说下服务运行的软硬件环境,主要是服务器,数据库,以及http反向代理

  • 服务器,可以是任何可运行代码编译环境(物理机、VPS、自己的电脑、等)都可以,我这里远端主要是使用Ubuntu本地调试用自己的电脑
    • Ubuntu V16.04.6 LTS
  • 数据库,这里用到了两个
    • MongoDB 所有数据存储 V4.2.8
    • Redis 长链接缓存 V3.0.6
  • Nginx 反向代理+静态网页服务 V1.10.3
  • Nodejs 服务器运行 V14.19.1

目录结构

vmnepentheserver
├── app
│   ├── controller // 用户输入与输出
│   |   ├── xxx.js // 其它处理
│   |   └── user.js
│   ├── extend // 框架扩展
│   |   ├── context.js // 扩展 ctx
│   |   └── helper.js // 帮助类
│   ├── io
│   |   ├── controller.js // socket 控制器
│   |   |   └── im.js // socket 数据包入口
│   |   └── middleware.js // socket 中间件
│   |       ├── connection.js // 链接中间件,只是做个分发
│   |       └── packet.js // 数据包处理中间件,目前没啥啊处理
│   ├── middleware // 中间件
│   |   ├── auth.js // 身份认证
│   |   └── error_hander.js // 错误处理
│   ├── model // 数据库模型
│   |   ├── xxx.js // 其它模型
│   |   └── user.js // 用户模型
│   ├── router // 路由
│   |   ├── admin.js // 管理员路由配置
│   |   ├── common.js // 公用路由配置
│   |   ├── im.js // im 路由配置
│   |   ├── info.js // 用户信息路由配置
│   |   └── user.js // 登录注册路由配置
│   ├── schedule // 定时任务
│   |   └── dayTask.js // 每天执行的定时任务
│   |   └── monthTask.js // 每月执行的定时任务
│   |   └── weekTask.js // 每周执行的定时任务
│   ├── service // 业务逻辑服务
│   |   ├── xxx.js // 其它逻辑服务
│   |   └── user.js // 用户逻辑服务
│   ├── validator	// 自定义参数校验规则
│   |   ├── content.js // 内容信息校验规则
│   |   └── user.js // 用户信息校验规则
|   └── router.js // 路由配置
├── config // 配置目录,需要自己根据模板复制出对应环境的配置文件
|   ├── config.default.js
|   ├── config.local.js
│   ├── config.local.template.js // 本地环境配置模板
│   ├── config.pre.js
│   ├── config.pre.template.js // 预发环境配置模板
│   ├── config.prod.js
│   ├── config.prod.template.js // 线上环境配置模板
|   ├── config.unittest.js
|   ├── config.unittest.template.js 	// 单元测试配置模板
|   └── plugin.js // 插件配置
├── test // 单元测试
│   └── service // 服务相关单元测试文件,这里并没有实现详细的单元测试,主要用作数据库初始化
|       ├── category.test.js
|       ├── commodity.test.js
|       ├── config.test.js
|       ├── profession.test.js
|       ├── role.test.js
|       └── version.test.js
├── app.js // 入口类,可以做一些初始化操作
├── package.json // 依赖配置文件
├── vmrun.sh // 启动脚本
└──vmtemplateserver.postman_collection.json // postman 接口导出文件,可直接导入 postman 进行接口测试

配置说明

config目录下添加了几个配置模板,所有待配置信息都能在config.default.js文件中找到,不同环境配置只是将其中部分配置的值进行修改,根据实际需要进行修改就行,需要自己根据需要复制相应的文件进行配置,复制文件后删除模板文件中的template即可,如 config.local.template.js->config.local.js PS:不论开发调试和上线发布,第一步都需要进行数据初始化,这个只需要执行一次就好

config.local.template.js // 本地调试配置模板
config.pre.template.js // 线上调试配置模板
config.prod.template.js // 线上运行配置模板
config.unittest.template.js // 单元测试配置模板

所有待配置信息都能在config.default.js文件中找到,不同环境配置只是将其中部分配置的值进行修改,根据实际需要进行修改就行 PS:不论开发调试和上线发布,第一步都需要进行数据初始化,这个只需要执行一次就好

本地开发

# 运行单元测试初始化数据库
$ cp config.unittest.template.js config.unittest.js
$ npm run test

# 创建本地运行配置文件 config.local.js 修改配置文件内相关信息为自己的
$ cp config.local.template.js config.local.js
# 终端运行
$ npm i
$ npm run dev
$ open http://localhost:5920/

# 也可以导入`WebStorm`进行编译运行,工具栏选择 `Run->Edit Configurations` 添加 `npm` 运行,其中 `Scripts` 填 `debug`or`dev`

上线发布

# 运行单元测试初始化数据库
$ cp config.unittest.template.js config.unittest.js
$ npm run test

# 创建发布运行配置文件 config.prod.js 修改配置文件内相关信息为自己的
$ cp config.prod.template.js config.prod.js
# 安装发布依赖
$ npm i --production
# 打包发布代码
$ tar -czvf ../vmnepentheserver.tgz .

# 将打包的代码上传到要发布的服务器上,解包,运行
$ tar -xzvf vmnepentheserver.tgz .
$ ./vmrun.sh

域名配置

项目部署完成之后,默认只能通过ip+port来访问,一般正常项目都需要配置访问域名,这里我使用nginx说下我的配置,不一样的同学可以自己搜索所用服务器相关配置

# 首先进到 nginx 配置目录下,我的是 /etc/nginx/sites-available 下
$ cd /etc/nginx/sites-available
# 新建并编辑配置,这个名字可以随便取,内容参考下方配置
$ vim nepenthe
# 保存之后需要连接当前配置到 /etc/nginx/sites-enabled/ 下
$ ln -s /etc/nginx/sites-available/nepenthe /etc/nginx/sites-enabled/nepenthe
# 重启 nginx
$ /etc/init.d/nginx restart

Nginx 代理配置

这里开启了https访问,证书用的是阿里云免费证书,一年有效期,到期需要自己更新,怎么申请免费证书不再赘述,记得修改其中的域名为自己的

server {
	listen 80;
	server_name nepenthe.vmloft.com;

	rewrite ^(.*)$ https://$host$1 permanent;
}
server {
	listen 443 ssl;
	server_name nepenthe.vmloft.com;

	ssl on;

	ssl_certificate /var/www/certs/nepenthe.vmloft.com.pem;
	ssl_certificate_key /var/www/certs/nepenthe.vmloft.com.key;
	#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
	ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
	#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
	ssl_prefer_server_ciphers on;
	ssl_verify_client off;

    // 正向代理配置(静态站点)
	location / {
		root /var/www/vmnepenthe/home;
		index index.html;
		try_files $uri $uri/ = index;
	}
	// 正向代理配置(静态站点)
	location /admin {
		alias /var/www/vmnepenthe/admin;
		index index.html
		try_files $uri $uri/ = 404;
	}
    // 反向代理配置(rest api 接口)
	location /api {
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header Host $http_host;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_pass http://127.0.0.1:5920;
	}
	// 反向代理WebSocket
    location /im {
        proxy_pass http://127.0.0.1:5920;
        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;

        proxy_redirect off;
        proxy_buffering off;
    }
}

接口调试

这里方便大家调试,我把我的 postman 数据导出来了,大家可以导入到自己 postman 进行测试,接口文件放在了项目根目录下 vmnepentheserver.postman.json 不会用 postman 的话自行搜索下吧,很简单很方便

这里需要注意导入的只是接口数据,环境配置需要你自己进行配置,主要就是 {{host}} {{Authorization}} 这两个参数

更多

总体介绍 忘忧大陆项目整体介绍 开发迭代 更新记录

项目客户端下载体验

开源仓库地址

沟通交流

可以通过以下方式找到我,获取最新信息,以及技术支持

公众号: 穿裤衩闯天下

公众号: 穿裤衩闯天下

QQ 群: 901211985 个人 QQ: 1565176197

QQ 交流群 个人 QQ

支持赞助

如果你觉得当前项目帮你节省了开发时间,想要支持赞助我的话 👍,可以扫描下方的二维码打赏请我吃个鸡腿 🍗,你的支持将鼓励我继续创作 👨‍💻‍,感谢 ☺️ 赞助列表

支付宝捐赠 微信捐赠

LICENSE

MIT License Copyright (c) 2022 lzan13

MIT License Copyright (c) 2022 lzan13 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个使用 Eggjs 开发的服务器模板项目,包含了比较完整的用户信息处理、角色管理、分类、职业、发帖、匹配、评论、关注、喜欢 等功能 展开 收起
NodeJS 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
NodeJS
1
https://gitee.com/lzan13/vmtemplateserver.git
git@gitee.com:lzan13/vmtemplateserver.git
lzan13
vmtemplateserver
vmtemplateserver
master

搜索帮助