项目依赖
需要全局安装
cross-env
命令:npm install -g cross-env
其他
node
依赖:npm install
nginx 配置
server {
listen 80 default;
return 500;
}
server {
listen 80;
server_name orz.show;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
index index.html index.htm index.nginx-debian.html;
server_name orz.show;
ssl on;
ssl_certificate /var/www/new.cloverliang.me/config/ssl/fullchain.pem; # 证书路径
ssl_certificate_key /var/www/new.cloverliang.me/config/ssl/privkey.pem; # key路径
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
client_max_body_size 1000m; # 最大上传文件大小限制
# 跨域配置
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
proxy_pass http://127.0.0.1:3000; # 设置反向代理
proxy_set_header Host $host; # 保留代理之前的host
proxy_set_header X_Real_IP $remote_addr; # 保留代理之前的真实客户端ip
proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for; # 保存代理的ip地址
}
location ^~ /share {
root /var/www/;
}
}
防火墙配置
安装ufw
sudo apt-get install ufw
开启防火墙
sudo ufw enable
禁止端口
sudo ufw default deny
开启22端口
sudo ufw allow 22
开启80端口
sudo ufw allow 80
开启443端口
sudo ufw allow 443
开启443端口
sudo ufw allow 3306
安装 mysql
sudo apt-get install mysql-server mysql-client
设置mysql远程登录 修改文件
/etc/mysql/mysql.conf.d/mysqld.cnf
注释bind-address = 127.0.0.1
登录mysql 执行命令grant all on *.* to username@'%' identified by 'password';
flush privileges;
mysql重启
/etc/init.d/mysql restart
安装nginx
sudo apt-get install nginx
- 重启nginx
service nginx restart
- 重启nginx
安装git
sudo apt-get install git
- git生成ssh key
ssh-keygen
- git生成ssh key
安装node 先安装nvm
命令:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
关闭命令行重新开启执行命令:
nvm install --lts
pm2 启动项目
pm2 start npm -- start
总需求/远期规划
作者区分大小写用户个人中心记住登录前地址 方便跳转博客展示页加标题导航评论加入表情支持消息中心注销用户不能回复更改用户头像数据格式登录 注册页面增加用户被访问时的个人中心页面sql合并导航栏提示未读消息
404 错误页 (包括 博客信息未找到 和 普通 404)
图床接口
后台接口整理优化
前后端分离 骨架方案
后台管理整体需求
后台接口使用
ts
开发webpack
打包log 错误处理和正常log分文件保存
增加一个上传图片的页面(接口已经有了,目前使用form-data上传,以后大文件考虑使用分片上传)
近期需求
增加搜索功能和页面 参照苹果网站样式留言内容正则 不替换换行因为要支持Markdown 所以空白字符需要保留导航分类页面 及其子页面防止注入攻击设计参考models 和 controllers 文件夹对应后台管理增加博客文章功能编辑博客文章功能管理后台文章详情背景图回显地址有误增加查看评论数据功能所有状态字段统一 0 表示删除 1 表示正常 2 表示隐藏评论锚点评论数据的删除 屏蔽 恢复功能评论增加不显示状态 前后台都需要改 取数据时总评论中不包括关于页的 关于页的另算
评论被删除就不应该展示出来关于页编辑和修改及评论查看功能toast提示回收站功能 总的回收站 显示文章 用户 评论的删除数据所有的非数据库删除都提示移动到回收站
用户的屏蔽功能 (不是删除)
字数上限限制 后台字数上限及评论等的上限
后台管理没有数据提示
新用户注册提醒
开启了mysql多语句查询, 优化及风险控制
后台管理简单响应式设计
彻底删除用户bug 获取评论时评论者数据获取为null
增加批量修改
开发规范
master 分支 线上稳定版本 只允许和dev分支合并
dev 分支 开发分支 只负责合并其他分支和测试
其他分支 均由dev分支而来 只有当功能开发完成后才可以合并到dev分支 命名规则 开发者昵称+开发功能名字+时间 eg: cloverliang_search_180830
bug 允许直接从master分支获取修复分支 但是合并只允许合并到dev分支 命名规则 开发者昵称+hotfix+时间 eg: cloverliang_hotfix_180830
除了master分支 dev分支 和没有开发完的分支 其余分支应在合并并确认无误后删除
master 分支在提交后 应在当前commit上设置版本号(即tag)
版本号命名规范与原则
- 软件版本号由四部分组成: <主版本号>.<子版本号>.<阶段版本号>.<日期版本号>
eg: 1.1.1.180830
版本号修改规则
- 主版本号(1): 当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化 一般不兼容上一个主版本号
- 子版本号(1): 当功能有一定的增加或变化,比如增加了对权限的控制,增加自定义视图等功能 必须向下兼容不能直接删除功能 如需删除可以将该功能标记为即将删除 在下一个主版本中删除该功能
- 阶段版本号(1): 一般是bug修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复严重bug即可发布一个修订版
- 日期版本号(180830): 格式
yymmdd
用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号注意事项
- 版本号前不要加v
- 不要再数字前补0 eg: 01.12.03
- 每一位版本号需要递增 不允许跳跃
- 子版本号递增时 阶段版本号归0 主版本号递增时 子版本号和阶段版本号归0
2022-04-06 21:43:04
关于我的
喜欢
啊咧,登陆后才能评论哦!