本地开发环境搭建
- 这篇讲的是本地开发环境搭建,服务器的环境搭建移步:http://uninote.com.cn/book/1027/4361
步骤:
- git clone git@git.uninote.com.cn:eson/mynote.git
- cd mynote
- 创建 mynote 数据库,执行 sql 下所有的脚本
- 配置 redis 链接,basic/config/local_redis.php,见下面的配置文件说明。如果直接修改默认配置,注意不要提交到 git 中。
- 配置 es。一般不用自己搭建 es 服务,用共享的即可,在 local_params.php 中添加下面的配置:
'es_host' => 'es.uninote.com.cn',
'es_port' => '9200',
'es_index' => 'xxxxxxxx', <---- 这里取一个自己独特的名字,避免冲突
- 配置 gogs。gogs的安装请自行查阅官网。安装完成后在 local_params.php 中添加下面的配置(请根据自己的实际情况配置,我这 0.19 为 api 接口地址,0.21 为 gogs 服务地址):
'gogs_api_url' => "http://192.168.0.21:3000/api/v1", // gogs 的地址
'gogs_token' => '26ccc9640d75df8e35f294079a1fafe30a89c145', // 访问 gogs /user/settings/applications 生成
'gogs_url' => "http://192.168.0.21:3000/",
'gogs_inner_host' => "",
'gogs_actor' => 'unote', // 任意 gogs 账号,但必须有管理员权限
'gogs_webhook_push_host' => 'http://192.168.0.19',
- 配置 nginx,供参考:
# mynote nginx 配置文件
server {
charset utf-8,gbk;
client_max_body_size 128M;
listen 85;
include enable-php.conf;
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/www/:/tmp/:/proc/";
root /home/www/mynote/basic/web;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ^~/docs {
deny all;
location ~ .*\.(html|htm|js|css|png|jpg|jpeg|gif|txt)?$ {
allow all;
}
}
access_log /home/www/wwwlogs/mynote_80.log;
error_log /home/www/wwwlogs/mynote_80.error.log;
}
- 或者 apache(httpd-vhosts.conf):
<VirtualHost a.mynote.my:80>
ServerAdmin webmaster@a.mynote.my
DocumentRoot "E:\uninote\mynote\basic\web"
<Directory "E:\uninote\mynote\basic\web">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ServerName a.mynote.my
ServerAlias a.mynote.my
ErrorLog "logs/a.mynote.my-error.log"
CustomLog "logs/a.mynote.my-access.log" common
DirectoryIndex index.html
RewriteCond E:/uninote/mynote/basic/web/%{REQUEST_FILENAME} !-f
RewriteCond E:/uninote/mynote/basic/web/%{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</VirtualHost>
依赖的服务
- mysql/redis/gogs/es 注意检查是否正常
- 使用了 yii 的 queue,启动方式:在根目录下执行:
yii queue/listen
- 所有的队列任务,都放在 basic/jobs 中,相关的配置项:
'edit.async-push' => 1, // 异步 push 延迟时间(s)
'edit.async-re-push' => 60, // 异步 push 出错后 re-push 延迟时间(s)
'edit.es-sync' => 1, // 异步 es update 延迟时间(s)
'edit.es-re-sync' => 60, // 异步 es update 出错后 re-update 延迟时间(s)
配置文件说明
- 基于 yii 的配置规则
- 默认的配置都加入了 git 管理
- 本地(自己)的配置以 local_*.php 形式存在,比如 local_redis.php,此配置中的内容将与 redis.php 中的配置合并,并且优先级更高。更多设计详情参见 http://cybdoc.uninote.com.cn/pub/config_my.html
- 开发常用配置
'debug.tel_code' => 1, // 忽略手机验证码,随便输入即可
用 powder 来测试接口
git clone git@git.uninote.com.cn:cyb/powder.git
cd powder
git checkout mynote
npm install
- 新建 'vue.config.my.js', 加入以下内容:
module.exports = function (config) {
config.devServer.proxy['/'] = {
ws: false, // proxy websockets
target: 'http://a.mynote.my', // <------------- 这里改成自己的本地接口路径
changeOrigin: true,
};
};
- npm run serve
- 成功后访问下面的地址:
# 注意修改自己的端口
http://localhost:8080/?api=mynote&mi=mynote
powder 使用说明
一个类似于 postman 的工具,但增加了很多定制功能
初始化测试数据: http://uninote.com.cn/video/mynote-powder-init.mp4 基本用法说明: http://uninote.com.cn/video/mynote-powder-usage.mp4 注意,必须保证这里没有报错了,再开发,否则会因为环境问题浪费很多时间
基本使用
- 查阅所有接口的集合,和文档说明
- 所有接口的必填参数基本都能(通过依赖的接口调用(递归的))自动生成,省去了凑参数的麻烦
- 新的开发,还是以 postman 这种为主
高阶用法(新接触的同学可以忽略)
- 基本可以完全替代 postman
- 接口自动化测试(支持异步接口、并发测试)
- 前后端开发、测试、技术管理者都会用到,尽可能复用,减少团队的重复工作,团队工具效率得到提升
- powder 的设计遵循二八原则:用最小的开发代价,解决尽可能多的日常问题,但不追求100%,必要是还是需要传统工具的辅助。
- 更多信息参见:https://docs.dajxyl.com/book/1/1805
初始化 mysql 测试数据
INSERT INTO `mynote`.`artag` (`id`, `tag`, `time`, `status`) VALUES ('1', 'js', '2021-03-14 10:55:05', '1');
update article set recommend=1 limit 2;
日志
- 日志使用的 seaslog,在 common.php 中有一层封装,在代码任意地方可以直接使用以下几个函数:
/**
* 日志输出,使用info level
* @param $content
* @param array $params
* @param string $logger
*/
function slog($content, $params = [], $logger = "default")
{
SeasLog::info($content, $params, $logger);
}
/**
* 日志输出,使用debug level
* @param $content
* @param array $params
* @param string $logger
*/
function slog_debug($content, $params = [], $logger = "default")
{
SeasLog::debug($content, $params, $logger);
}
/**
* 日志输出,使用error level
* @param $content
* @param array $params
* @param string $logger
*/
function slog_error($content, $params = [], $logger = "default")
{
SeasLog::error($content, $params, $logger);
}
/**
* 日志输出,使用warning level
* @param $content
* @param array $params
* @param string $logger
*/
function slog_warning($content, $params = [], $logger = "default")
{
SeasLog::warning($content, $params, $logger);
}
- 输出路径:basic/runtime/seaslog/default/*.log
yii queue/listen
的输出路径:basic/runtime/seaslog_cmd/default/*.log- 注意,重定向了 yii 的异常处理,所有的异常都由 seaslog 输出