前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >部署sekiro并升级为HTTPS

部署sekiro并升级为HTTPS

作者头像
新码农
发布于 2023-10-18 11:07:16
发布于 2023-10-18 11:07:16
55200
代码可运行
举报
文章被收录于专栏:新码农博客新码农博客
运行总次数:0
代码可运行

一、版本选择及部署

sekiro官方文档

第一代sekiro从2019年开发,自2021年4月终止开发,由于早期代码有太多底层架构方面的问题。故2021年进行了彻底的重构,并且本次重构试一次完全不兼容的重构。

我们建议使用2020(含)以前的版本的同学,尽快升级到新版。同时sekiro也关闭了老版本的docker自动构建通道。

  • Sekiro服务端(旧版),服务器开放端口:5600-5603

旧版

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装docker
docker run --restart=always -d -p 5600:5600 -p 5601:5601 -p 5602:5602 -p 5603:5603 --name sekiro-server registry.cn-beijing.aliyuncs.com/virjar/sekiro-server:latest
  • Sekiro服务端(新版),服务器开放端口:5620

新版

下载demo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 需要Java环境
nohup sh /bin/sekiro.sh

二、升级HTTPS

由于本人Java知识匮乏,所以使用Flask+uWSGI构建服务端,服务器需要有Java环境。

0.启动sekiro

在项目根目录下创建文件:api_sekiro_run.sh

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

ps -ef | grep sekiro-service-demo | grep -v grep | awk '{print $2}' | xargs kill -9

sleep 3

nohup sh /srv/api_sekiro/bin/sekiro.sh >>/srv/api_sekiro/logs/nohup_sekiro_server.log 2>&1 &

启动sekiro

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /srv/api_sekiro && sh /srv/api_sekiro/api_sekiro_run.sh
1.flask

在项目根目录下创建文件:manage.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import logging
import os

from flask import Flask, render_template
from flask_script import Manager, Server

logging.basicConfig(level=logging.INFO)
app = Flask(__name__, template_folder="templates")
manager = Manager(app)
manager.add_command("runserver", Server("0.0.0.0", port=11002))


def start_sekiro():
    os.popen("cd /srv/api_sekiro && sh /srv/api_sekiro/api_sekiro_run.sh")


def stop_sekiro():
    os.popen(
            "ps -ef | grep sekiro-service-demo | grep -v grep | awk '{print $2}' | xargs kill -9"
    )


@app.route("/", methods=["GET"], strict_slashes=False)
def index():
    return render_template("index.html")


@app.route("/start", methods=["GET"], strict_slashes=False)
def start():
    try:
        start_sekiro()
        return {"code": "1", "msg": "sekiro服务启动成功"}
    except:
        return {"code": "0", "msg": "sekiro服务启动失败"}


@app.route("/stop", methods=["GET"], strict_slashes=False)
def stop():
    try:
        stop_sekiro()
        return {"code": "1", "msg": "sekiro服务关闭成功"}
    except:
        return {"code": "0", "msg": "sekiro服务关闭失败"}


if __name__ == "__main__":
    manager.run()

在创建证书之前,在项目根目录下创建文件夹:/templates,在该文件夹下创建文件:index.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Sekiro服务</title>
    <script src="/static/sekiro_web_client.js"></script>
    <link rel="icon" href="/static/favicon.ico" type="image/x-icon">
    <link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon">
</head>
<body>

<h3>接口说明</h3>
<p>
    <span>
        1. /start
    </span><br><br>
    <span>
        启动sekiro服务
    </span><br><br>
    <span>
        2. /stop
    </span><br><br>
    <span>
        关闭sekiro服务
    </span><br><br>
    <span>
        3. /business-demo/groupList
    </span><br><br>
    <span>
        sekiro服务的连接列表
    </span><br><br>
    <span>
        4. wss://sekiro.xxx.com/business-demo/register?group=test&clientId=xxx
    </span><br><br>
    <span>
        客户端连接服务端
    </span><br><br>
    <span>
        5. https://sekiro.xxx.com/business-demo/invoke?group=test&action=xxx&xxx=xxx
    </span><br><br>
    <span>
        服务端调用客户端
    </span><br><br>
</p>

<h3>Sekiro服务部署</h3>
<p>
    <span>
        1. Sekiro服务端(新版),服务器开放端口:5620
    </span><br><br>
    <span>
        https://sekiro.virjar.com/sekiro-doc/02_server_deploy/1.DemoServer.html.com/virjar/sekiro-server:latest
    </span><br><br>
    <span>
        2. Sekiro服务端(旧版),服务器开放端口:5600-5603
    </span><br><br>
    <span>
        docker run --restart=always -d -p 5600:5600 -p 5601:5601 -p 5602:5602 -p 5603:5603 --name sekiro-server registry.cn-beijing.aliyuncs.com/virjar/sekiro-server:latest
    </span><br><br>
</p>

</body>
</html>
2.uwsgi
  • 配置uwsgi.ini文件

在项目文件夹与manage.py同级的目录下创建uwsgi.ini,文件内容如下(注意路径):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[uwsgi]
# uwsgi监听的socket,一会儿配置Nginx会用到
socket = 127.0.0.1:11002
# 在app加载前切换到该目录,设置为Flask项目根目录
chdir = /srv/api_sekiro
# 加载指定的python WSGI模块,设置为Flask项目的manage文件
wsgi-file = ./manage.py
# 指定app对象实例
callable = app
# 启动一个master进程来管理其他进程
master = true
# 工作的进程数
processes = 2
# 每个进程下的线程数量
threads = 4
# 当服务器退出的时候自动删除unix socket文件和pid文件
vacuum = true
# 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器
daemonize = /srv/api_sekiro/uwsgi.log
  • 加载配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uwsgi --ini uwsgi_api_sekiro.ini
# 出现getting INI configuration from uwsgi.ini(成功)
  • 项目有更新的时候,需要先关闭uwsgi然后重启即可
  • 基本命令
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启动uwsgi服务器
uwsgi --ini uwsgi_api_sekiro.ini

# 查看uwsgi是否运行
ps -aux | grep uwsgi

# 查看端口号占用
netstat -anp | grep 5050

# 结束uwsgi进程
pgrep uwsgi | xargs kill -s 9
3.Let’s Encrypt免费证书

在创建证书之前,在项目根目录下创建文件夹:/.well-know,在该文件夹下创建文件:acme-challenge

4.配置Nginx

编辑配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo vim /etc/nginx/conf.d/sekiro.conf

示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# sekiro框架
upstream sekiro_business_netty {
  server 127.0.0.1:5620;
}

# 网站配置
server {
    # 设置监听端口
    listen 80;
    # 设置对外访问入口,可以是域名可以是公网IP
    server_name sekiro.xxx.com;
    # 设置虚拟主机的基本信息
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:11002;
        uwsgi_read_timeout 5;
    }
    # 静态文件设置
    location /static {
        expires 30d;
        alias /srv/api_sekiro/static/;
    }
    # 创建Let’s Encrypt免费SSL证书临时文件
    location /.well-known/acme-challenge {
        alias /srv/api_sekiro/.well-known/acme-challenge;
    }
    # sekiro框架
    location /business-demo {
        proxy_http_version 1.1;
        proxy_read_timeout 500;
        proxy_connect_timeout 300;
        proxy_redirect off;
        proxy_set_header Upgrade            $http_upgrade;
        proxy_set_header Host               $http_host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_pass http://sekiro_business_netty;
    }
    # 允许网段
    allow all;
    # 设置访问的语言编码
    charset UTF-8;
    # nginx的超时参数设置为60秒
    send_timeout 60;
    # 实IPX-Forwarded-For请求头中
    real_ip_header X-Real-IP;
    # X-Forwarded-For请求头中的最后一个IP当成真实IP
    real_ip_recursive off;
    # 设置fastcgi缓冲区为8块128k大小的空间
    fastcgi_buffers 8 128k;
    # 上传文件大小限制,默认1m
    client_max_body_size 0;
    # 访问日志记录
    access_log /var/log/nginx/sekiro_access.log;
    # 错误日志记录
    error_log /var/log/nginx/sekiro_error.log;
    # 开启gzip
    gzip on;
    # 是否在http header中添加Vary:Accept-Encoding
    gzip_vary on;
    # 设置压缩所需要的缓冲区大小
    gzip_buffers 32 4K;
    # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
    gzip_comp_level 5;
    # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
    gzip_min_length 100;
    # 配置禁用gzip条件,支持正则
    gzip_disable "MSIE [1-6]\.";
    # 进行压缩的文件类型
    gzip_types application/javascript text/css text/xml;
    # HTTP严格传输安全的 max-age 需要大于15768000秒
    add_header Strict-Transport-Security "max-age=31536000";
    # 配置nginx404错误配置
    error_page 404  /404.html;
    location = /404.html {
        root /usr/share/nginx/html;
    }
    # 配置nginx502错误配置
    error_page 502  /502.html;
    location = /502.html {
        root /usr/share/nginx/html;
    }
}
5.重启nginx,以便生效
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# centos7
systemctl restart nginx

# Ubuntu16.04
/etc/init.d/nginx restart
6.安装certbot
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# centos7
yum install -y certbot

# Ubuntu16.04
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
7.签发SSL证书

两种生成证书的方式

  • andalone

certbot 会启动自带的 nginx(如果服务器上已经有nginx或apache运行,需要停止已有的nginx或apache)生成证书。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
certbot certonly --standalone -d sekiro.xxx.com
  • webroot(推荐)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
certbot certonly --webroot -w /srv/api_sekiro -d sekiro.xxx.com

-w:指定项目绝对路径。

-d:指定生成证书域名,不可以直接写IP。

这条命令的输出类似于这样(Congratulations)为成功。

证书位置 /etc/letsencrypt/live/xxx.com/fullchain.pem

私钥位置 /etc/letsencrypt/live/xxx.com/privkey.pem

8.生成前向安全性密钥
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /etc/letsencrypt/live
openssl dhparam 2048 -out dhparam.pem
9.将https配置进Nginx
  • 配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# sekiro框架
upstream sekiro_business_netty {
  server 127.0.0.1:5620;
}

# 网站配置
server {
    # 设置监听端口
    listen 80;
    # 设置监听端口,开启https,默认端口
    listen 443 ssl;
    # 设置对外访问入口,可以是域名可以是公网IP
    server_name sekiro.xxx.com;
    # HTTP请求301永久跳转到HTTPS
    if ($server_port = 80) {
        return 301 https://$server_name$request_uri;
    }
    # 设置虚拟主机的基本信息
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:11002;
        uwsgi_read_timeout 5;
    }
    # 静态文件设置
    location /static {
        expires 30d;
        alias /srv/api_sekiro/static/;
    }
    # 创建Let’s Encrypt免费SSL证书临时文件
    location /.well-known/acme-challenge {
        alias /srv/api_sekiro/.well-known/acme-challenge;
    }
    # sekiro框架
    location /business-demo {
        proxy_http_version 1.1;
        proxy_read_timeout 500;
        proxy_connect_timeout 300;
        proxy_redirect off;
        proxy_set_header Upgrade            $http_upgrade;
        proxy_set_header Host               $http_host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_pass http://sekiro_business_netty;
    }
    # session会话的缓存类型和大小
    ssl_session_cache shared:SSL:10m;
    # ession会话的超时时间
    ssl_session_timeout 10m;
    # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
    ssl_prefer_server_ciphers on;
    # 证书位置
    ssl_certificate /etc/letsencrypt/live/sekiro.xxx.com/fullchain.pem;
    # 私钥位置
    ssl_certificate_key /etc/letsencrypt/live/sekiro.xxx.com/privkey.pem;
    # 前向安全性,DH-Key交换密钥文件位置
    ssl_dhparam /etc/letsencrypt/live/dhparam.pem;
    # PCI DSS支付卡行业安全标准,禁用不安全的SSLv1 2 3,只使用TLS,PCI安全标准委员会规定开启TLS1.0将导致PCI DSS不合规
    ssl_protocols TLSv1.1 TLSv1.2;
    # 需要配置符合PFS规范的加密套件
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
    # 允许网段
    allow all;
    # 设置访问的语言编码
    charset UTF-8;
    # nginx的超时参数设置为60秒
    send_timeout 60;
    # 实IPX-Forwarded-For请求头中
    real_ip_header X-Real-IP;
    # X-Forwarded-For请求头中的最后一个IP当成真实IP
    real_ip_recursive off;
    # 设置fastcgi缓冲区为8块128k大小的空间
    fastcgi_buffers 8 128k;
    # 上传文件大小限制,默认1m
    client_max_body_size 0;
    # 访问日志记录
    access_log /var/log/nginx/sekiro_access.log;
    # 错误日志记录
    error_log /var/log/nginx/sekiro_error.log;
    # 开启gzip
    gzip on;
    # 是否在http header中添加Vary:Accept-Encoding
    gzip_vary on;
    # 设置压缩所需要的缓冲区大小
    gzip_buffers 32 4K;
    # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
    gzip_comp_level 5;
    # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
    gzip_min_length 100;
    # 配置禁用gzip条件,支持正则
    gzip_disable "MSIE [1-6]\.";
    # 进行压缩的文件类型
    gzip_types application/javascript text/css text/xml;
    # HTTP严格传输安全的 max-age 需要大于15768000秒
    add_header Strict-Transport-Security "max-age=31536000";
    # 配置nginx404错误配置
    error_page 404  /404.html;
    location = /404.html {
        root /usr/share/nginx/html;
    }
    # 配置nginx502错误配置
    error_page 502  /502.html;
    location = /502.html {
        root /usr/share/nginx/html;
    }
}
  • 重启nginx,以便生效
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 切换到项目目录下运行
uwsgi --ini uwsgi_api_sekiro.ini

# 重启nginx服务
systemctl restart nginx
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-2-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Ubuntu20.04的主题美化
在正式开始之前先放一下效果图,当然,这里的主题是模仿了mac,,主要改了主题与图标。网上有各式各样的主题,可以根据自己的喜好来进行设置,下面正式开始
全栈程序员站长
2022/09/29
1.1K0
Ubuntu20.04的主题美化
5分钟将Ubuntu18.04美化为Mac风格
Ubuntu18.04的美化教程有很多, 但大多非常复杂,没有半小时根本折腾不完,其实美化可以很简单,找一个好的风格, 去模仿它就好了
zhaoolee
2020/02/25
1.6K0
5分钟将Ubuntu18.04美化为Mac风格
Ubuntu18.04美化_乌班图美化
和网上的美化一样,但是我当初跟着博客美化的时候遇到一些问题,按博客的做法无法解决。
全栈程序员站长
2022/11/09
2.5K0
Ubuntu18.04美化_乌班图美化
ubuntu 更换主题[通俗易懂]
sudo apt-get update sudo apt-get install gnome-tweak-tool
全栈程序员站长
2022/11/09
4.8K0
ubuntu 更换主题[通俗易懂]
Ubuntu20.04 体验和美化
windows用久了,换下系统也挺好的。ubuntu20.04优化后,用起来蛮舒服的。
Ryan-Miao
2020/10/27
2.9K0
Ubuntu20.04 体验和美化
ubuntu桌面主题更换_ubuntu18主题美化
本文针对的是ubuntu的GNOME桌面环境,根据ubuntu官方消息,ubuntu已经放弃原来的Unity桌面环境,改回最先使用的GNOME桌面环境,如果你觉得Gnome的默认桌面环境不够Fashion的话,可以下载自己喜欢的主题风格来更换,具体教程如下。
全栈程序员站长
2022/11/09
1.8K0
ubuntu桌面主题更换_ubuntu18主题美化
Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!
跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 常用软件安装+系统软件卸载:http://www.cnblogs.com/du
逸鹏
2018/04/11
1.1K0
Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!
ubuntu 更换主题为苹果 macos
eisc
2024/12/05
2560
ubuntu 更换主题为苹果 macos
Ubuntu美化
当初倒腾 Ubuntu 18.04 的时候积攒了一些美化经验, 但是一直没有将其系统整理归纳. 暂借这次升级系统的机会, 重新记录一下 Ubuntu 的美化流程.
Erwin
2020/01/02
3.5K0
不美翻怎么开发!Ubuntu 16.04 LTS深度美化!(2017年度定稿版)
前言 本篇尝试对ubuntu 16.04 LTS进行美化和优化, 基本上就是本人长期使用的经验分享, 如有不足, 欢迎指正交流! 简单说下版本选择的原因, 没有去选择最新的版本, 而是选择了最新的长期支持版本, 也就是LTS. 但事实上, 如果你使用其它ubuntu版本, 整体处理也是大同小异. 多图预警, 然后转载请注明出处. 更新了终端美化, 让你的终端飞起来. 更新了超棒的主题和图标包. 更新了终端美化细节和其它细节. 重新整理编辑了整篇文章. ---- 外观美化 主题 主题推荐一: flat
sean_yang
2018/09/04
2.2K1
不美翻怎么开发!Ubuntu 16.04 LTS深度美化!(2017年度定稿版)
安装完Ubuntu 18.04之后要做的几件事
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u011054333/article/details/82901838
乐百川
2019/07/02
8910
安装完Ubuntu 18.04之后要做的几件事
美化ubuntu主题系统
对于ubuntu14.04来说 ubuntu-tweeks和unity-tweak-tool都可以
全栈程序员站长
2022/11/09
2K0
美化ubuntu主题系统
Ubuntu18 的超详细常用软件安装
心血来潮,在笔记本安装了Ubuntu 18 用于日常学习,于是有了下面的安装记录。
未读代码
2019/11/04
1.7K0
Ubuntu18 的超详细常用软件安装
Ubuntu美化
主题下载网站:https://www.gnome-look.org/ 进入后,你将在左上角看到所有有关主题的选项。我们要更改的主题内容主要有四项:
分享者
2022/05/17
2.3K0
Ubuntu美化
ubuntu 美化全攻略
用了好久的ubuntu,最近突发奇想想给ubuntu做做美化。说干就干。 版本: ubuntu 18.04 gnome-shell : GNOME Shell 3.28.4
超级大猪
2019/12/20
1.3K0
ubuntu 美化全攻略
Ubuntu安装主题_炫酷的Ubuntu主题
Created with Raphaël 2.1.2 开始配置主题 应用程序:优化 扩展 User Themes 外观设置:主题arc 结束
全栈程序员站长
2022/11/09
9240
Ubuntu 优化、美化(主题、终端)[通俗易懂]
安装完系统之后,需要更新一些补丁。Ctrl+Alt+T调出终端,执行一下代码: sudo apt-get update sudo apt-get upgrade
全栈程序员站长
2022/09/15
4.8K0
Ubuntu 优化、美化(主题、终端)[通俗易懂]
Ubuntu 安装后的配置及美化(一)
然后在 搜狗输入法Linux官网 下载 64位程序,解压并移动到当前目录下,执行如下指令:
希希里之海
2018/12/21
2.3K0
如何移除或禁用 Ubuntu Dock
Ubuntu Dock - 屏幕左侧栏,可用于固定应用程序或访问已安装的应用程序。使用默认的 Ubuntu 会话时,无法使用 Gnome Tweaks 禁用它(禁用无效)。但是如果你需要,还是有几种方法来摆脱它的。下面我将列出 4 种方法可以移除或禁用 Ubuntu Dock,以及每个方法的缺点(如果有的话),还有如何撤销每个方法的更改。本文还包括在没有 Ubuntu Dock 的情况下访问 活动概览(Activities Overview)和已安装应用程序列表的其它方法。
用户8639654
2021/10/25
7K0
Ubuntu 18.04 LTS快速美化
前言 之前我也写过一篇关于Ubuntu 16.04 LTS美化的. 其实大部分内容依旧实用, 不过由于Ubuntu的界面由unity变成了gnome, 所以有些小的变化. ---- gnome-tweak-tool 同样, 先要安装美化管理工具gnome-tweak-tool. 界面如下展示: sudo apt-get install gnome-tweak-tool 但是这个shell一开始是有感叹号的, 强迫症不能忍. 所以需要解决掉它: sudo apt-get install gn
sean_yang
2019/03/15
1.2K0
Ubuntu 18.04 LTS快速美化
相关推荐
Ubuntu20.04的主题美化
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 一、版本选择及部署
  • 二、升级HTTPS
    • 0.启动sekiro
    • 1.flask
    • 2.uwsgi
    • 3.Let’s Encrypt免费证书
    • 4.配置Nginx
    • 5.重启nginx,以便生效
    • 6.安装certbot
    • 7.签发SSL证书
    • 8.生成前向安全性密钥
    • 9.将https配置进Nginx
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档