Uninote
Uninote
用户根目录
111
3800
16340
37123
38534
73463
79136
93561
96679
99763
107853
112334
122041
130515
136414
227900
229373
241263
284830
336429
376744
378179
380527
393194
430059
540312
541770
559763
585997
615824
624526
643045
650819
700008
751165
777579
782290
813502
847641
876038
884885
984199
9727642
README
a.b.c
test-3
__import__
游记
掘金
118292
482540
671995
710953
752064
860197
Xdebug文档(一)基本特性
http:// & https://
init
搭了一个 wordpress 站点

本地开发环境搭建

步骤:

  • 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 输出
点赞(0) 阅读(36) 举报