Uninote
Uninote
用户根目录
每日点滴

本地开发环境搭建

步骤:

  • 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 输出

docker

vuex的源码一些理解

点赞(0) 阅读(14) 举报
目录
标题