vue + tornado 个人博客项目简介

vue + tornado 个人博客项目简介

项目链接:https://www.freepd.top

项目链接:https://admin.freepd.top

项目简介

首页预览

本站接入了百度api

每小时更新访问量

域名在阿里云购买,解析到腾讯云服务器

ssl证书为阿里云每年免费申请20个

技术栈

前端: vue2 + element-ui + axios + vue-router

后端: python + mysql + tornado + peewee + redis + pydantic + JWT

项目结构

前端:

后端:

服务器环境

服务器配置为腾讯云:

轻量级服务器(2核2G 4M)

服务器环境为:

docker运行redis与mysql

后端服务启动为:

supervisor启动三个python tornado进程配置如下

supervisor配置:

nginx配置

复制代码
path: /etc/nginx/conf.d/pyblog.conf

配置如下

upstream prod_api {
    server 127.0.0.1:11111;
    server 127.0.0.1:22222;
    server 127.0.0.1:33333;
}



server {
    listen 80;
    #填写证书绑定的域名
    server_name "admin.freepd.top";
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
    location / {
        index index.html index.htm;
    }
}



server {
    listen 80;
    #填写证书绑定的域名
    server_name www.freepd.top freepd.top;
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite 301 https://$server_name$request_uri;
    location / {
        index index.html index.htm;
    }
}

server {
    listen       443 ssl;
    server_name  "api.freepd.top";
    client_max_body_size 10m;
    ssl_certificate "conf/pyblog/api.freepd.top.pem";
    ssl_certificate_key "conf/pyblog/api.freepd.top.key";
    ssl_session_timeout 5m;
    #表示使用的加密套件的类型
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    ssl_prefer_server_ciphers on;

    location /api/ {

        add_header  Access-Control-Allow-Origin         $http_origin;
        add_header  Access-Control-Allow-Methods        *;
        add_header  Access-Control-Max-Age              756000; # 缓存30天
        add_header  Access-Control-Allow-Credentials    true;
        add_header  Access-Control-Allow-Headers        $http_access_control_request_headers;

        if ($request_method = OPTIONS) {
            return 204;
        }
        proxy_pass http://prod_api/;

        proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}




server {
    listen       443 ssl http2;
    server_name  "admin.freepd.top";
    client_max_body_size 10m;
    ssl_certificate "conf/pyblog/admin.freepd.top.pem";
    ssl_certificate_key "conf/pyblog/admin.freepd.top.key";
    ssl_session_timeout 5m;
    #表示使用的加密套件的类型
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    ssl_prefer_server_ciphers on;


    location / {
        root /home/ubuntu/run/pyblog/pyblog-admin;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

}

server {
    gzip on;
    gzip_static on;
    gzip_min_length 10k;
    #压缩级别1-9,越大压缩率越高,同时消耗cpu资源也越多,建议设置在5左右。
    gzip_comp_level 5;
    #需要压缩哪些响应类型的资源,多个空格隔开。不建议压缩图片.
    gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
    #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
    gzip_disable "MSIE [1-6]\.";
    #是否添加"Vary: Accept-Encoding"响应头
    gzip_vary on;
    listen       443 ssl http2;
    server_name  www.freepd.top freepd.top;
    client_max_body_size 10m;
    ssl_certificate "conf/pyblog/www.freepd.top.pem";
    ssl_certificate_key "conf/pyblog/www.freepd.top.key";
    ssl_session_timeout 5m;
    #表示使用的加密套件的类型
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    ssl_prefer_server_ciphers on;


    location / {
        proxy_set_header Accept-Encoding 'gzip';
        root /home/ubuntu/run/pyblog/pyblog-show;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

}
相关推荐
KaMeidebaby8 分钟前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
Cloud_Shy61810 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 30 - 32)
开发语言·人工智能·笔记·python·学习方法
天佑木枫36 分钟前
15天Python入门系列 · 序
开发语言·python
happylifetree36 分钟前
Python017-第二章15.数据容器-dict常用操作
python
装不满的克莱因瓶1 小时前
了解 LangChain 中的 LLM 与 ChatModel 的差异
人工智能·python·ai·langchain·llm·agent·chatmodel
IT知识分享2 小时前
从零开发在线简繁转换工具:OpenCC 实战、避坑经验与方案选型
javascript·python
lunzi_08262 小时前
【学习笔记】《Python编程 从入门到实践》第8章:函数定义、参数传递与模块导入
笔记·python·学习
杨运交2 小时前
[030][Web模块]Spring Boot 验证与 OpenAPI 集成实战:从校验规则到文档生成
前端·spring boot·python
培培说证2 小时前
2026财务岗位如何快速提升自身能力
python
努力攻坚操作系统2 小时前
编程语言编译运行机制对比:C / Java / Python
java·c语言·python