0%

Nginx反向代理HTTPS

Nginx Server 设置

例如 转发到 https://127.0.0.1:8848

1
2
3
4
5
6
7
8
9
10
11
12
13
14
location ~/ {
# 如果代理到一个动态域名,这里需要设置解析DNS
# 不然Nginx只在启动的时候解析一次
resolver 8.8.8.8 114.114.114.114 valid=10s;
resolver_timeout 3s;
假如你要代理到 127.0.0.1:8848
set $target "127.0.0.1:8848";
# 这里之前填写成 $proxy_host 导致代理失败
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
proxy_ssl_certificate /xxx.crt # 证书路径;
proxy_ssl_certificate_key /xxx.key #私钥路径;
proxy_pass https://$target;
}

Docker搭建Gitlab服务器

获取 Gitlab 镜像

1
docker pull gitlab/gitlab-ce

启动容器

映射端口,配置访问方式

  • 8443 https
  • 8080 http
  • 8022 ssh

挂载3个volume到容器里,分别用于配置,持久化,日志。

阅读全文 »

用Nginx搭建自己的私有Git服务器

背景

现在Github的私有仓库已经无限制免费了,但是Geek精神总是在召唤我似乎可以自己搭建一台自己的私有Git服务器?(你甚至可以写个后台前端搭建一个自己的Github!额,貌似是Gitlab?)

说干就干!

阅读全文 »

Flask集成React前端部署

Build React 文件

  • 打包 React

    1
    npm run build
  • 得到build目录下的静态文件

20200429234258

20200429234325

设置 Flask

Flask 默认静态资源在static目录,html文件在template目录,我们设置成我们自定义的路径。

  • 例如我们的目录结构

    20200429234735

  • 我们构建好的静态文件放在/frontend/flask-mark-12306-captcha-frontend/build这个目录里

  • 我们的在 App.py (你的应用程序入口)里面设置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    from flask import Flask, render_template
    from api import mark
    from api import get
    from controller import errorHandler
    import os

    # 静态文件目录
    frontEndDir = os.path.join("frontend", "flask-mark-12306-captcha-frontend", "build")

    app = Flask(__name__, static_url_path='', static_folder=frontEndDir)
    app.register_blueprint(errorHandler)
    app.register_blueprint(mark)
    app.register_blueprint(get)

    # 渲染 index.html
    @app.route('/')
    def main():
    return render_template("index.html")

    if __name__ == '__main__':
    app.run()

  • 这样我们就设置好了。

  • 跑一下项目看一下。

  • 问题解决。

    20200429235845

Flask部署Keras模型遇到的问题

AttributeError: ‘_thread._local’ object has no attribute ‘value’

20200428200312

  • 定位到 tensorflow_backend.py 这个文件

  • 在这个位置

    1
    2
    3
    4
    5
    6
    7
    8
    @functools.wraps(func)
    def symbolic_fn_wrapper(*args, **kwargs):
    if _SYMBOLIC_SCOPE.value:
    with get_graph().as_default():
    return func(*args, **kwargs)
    else:
    return func(*args, **kwargs)
    return symbolic_fn_wrapper
  • 增加

    1
    _SYMBOLIC_SCOPE.value = True
  • 变成这样

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @functools.wraps(func)
    def symbolic_fn_wrapper(*args, **kwargs):
    _SYMBOLIC_SCOPE.value = True
    if _SYMBOLIC_SCOPE.value:
    with get_graph().as_default():
    return func(*args, **kwargs)
    else:
    return func(*args, **kwargs)
    return symbolic_fn_wrapper
  • 问题解决

20200428200702

VSCode 同步设置

Visual Studio Code 因其轻巧和插件繁多已经逐渐成为我的主力开发工具。当我准备更换电脑在笔记本上开发时候的时候,我碰到了一个棘手的问题。我得重新下载插件和设置VSCode,难道我得记下台式机上所有的设置和插件然后到笔记本上重新设置和下载?这显然不符合Geek精神!有一款现成的插件可以解决我们的问题。

阅读全文 »

ESXI 更改网卡速率并设置脚本

起因

用闲置主机搭了一个ESXI,上面用Ubuntu跑了一个Samba服务做家庭文件中心。

平常从PT站下的资源直接放到这里提供给家里的小米电视和各种盒子等。

问题

一次从服务器拷贝文件的时候发现速度只有

百兆带宽不到?

阅读全文 »

使用Flask部署Keras模型并提供Restful接口

前言

当我们训练好了模型后想发布出去,提供Restful风格的API供外部使用,这个时候我们可以选择任意选择一款Web框架进行发布。我之前使用过Django,但是感觉有些繁琐,所以我更倾向于使用Flask这个框架,因为这个框架的路由标注方式跟Java的Springboot非常相似。接下来我们用之前训练的识别12306验证码的模型来进行部署。

阅读全文 »