knowledge-vault/sources/references/开发笔记/部署Flask服务.md

4.3 KiB
Raw Blame History

wantsong: @workspace /new 我的服务器是CentOS我在服务器上部署了Nginx和Hugo我想有快速上传Markdown文件和图片的方法。 我想到的是Python开发两个页面一个用来上传MD一个上传图片图片放在服务器指定位置同时换一个随机名称放在返回的页面上供我在MD中引用。帮我创建这个工程

Workspace: Sure, here's a proposed directory structure for a Python Flask app to upload Markdown files and images:

创建工作区...

wantsong: 我要是在CentOS上部署这个服务应该怎么做

Workspace: 正在收集工作区信息

在CentOS上部署这个Flask服务可以按照以下步骤进行

  1. 安装依赖 首先确保你已经安装了Python和pip。如果没有安装可以使用以下命令安装

    sudo yum install python3
    sudo yum install python3-pip
    
  2. 克隆项目 将项目克隆到你的服务器上:

    git clone <项目地址>
    cd markdown-upload-app
    
  3. 创建虚拟环境 为了避免依赖冲突,建议使用虚拟环境:

    python3 -m venv venv
    source venv/bin/activate
    
  4. 安装项目依赖 使用pip安装项目所需的依赖

    pip install -r requirements.txt
    
  5. 配置Nginx 安装Nginx

    sudo yum install nginx
    

    配置Nginx以反向代理到Flask应用。编辑Nginx配置文件例如/etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf

    server {
        listen 80;
        server_name your_domain_or_IP;
    
        location / {
            proxy_pass http://127.0.0.1:5000;
            proxy_set_header Host $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;
        }
    }
    

    重启Nginx以应用配置

    sudo systemctl restart nginx
    
  6. 使用Gunicorn运行Flask应用 安装Gunicorn

    pip install gunicorn
    

    使用Gunicorn运行Flask应用

    gunicorn --bind 127.0.0.1:5000 run:app
    
  7. 设置Supervisor管理Gunicorn 安装Supervisor

    sudo yum install supervisor
    

    创建Supervisor配置文件例如/etc/supervisord.d/markdown-upload-app.ini

    [program:markdown-upload-app]
    command=/path/to/venv/bin/gunicorn --bind 127.0.0.1:5000 run:app
    directory=/path/to/markdown-upload-app
    user=your_user
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/markdown-upload-app.err.log
    stdout_logfile=/var/log/markdown-upload-app.out.log
    

    启动Supervisor

    sudo systemctl start supervisord
    sudo systemctl enable supervisord
    

这样你的Flask应用就应该在CentOS服务器上成功部署并运行了。你可以通过访问服务器的IP或域名来访问上传页面。

wantsong: 这个服务能放在conda环境中么

VS Code: 是的您可以在Conda环境中运行服务。以下是一些步骤帮助您在Conda环境中设置和运行服务

  1. 创建Conda环境 - 使用以下命令创建一个新的Conda环境并安装所需的Python版本和库。
    conda create -n myenv python=3.9
    ```
2. **激活Conda环境** - 使用以下命令激活刚刚创建的Conda环境。
    
```bash
    conda activate myenv
    ```
3. **安装所需的依赖** - 在激活的Conda环境中安装服务所需的所有依赖库。例如
    
```bash
    pip install flask
    ```
4. **运行服务** - 在激活的Conda环境中运行您的服务。例如如果您有一个Flask应用可以使用以下命令运行
    
```bash
    python app.py
    ```
如果您在VS Code中工作可以通过以下设置来确保VS Code使用正确的Conda环境


```json
{
  "type": "setting",
  "settings": {
    "python.condaPath": "path/to/your/conda",
    "python.pythonPath": "path/to/your/conda/envs/myenv/bin/python"
  }
}
  1. "python.condaPath" - 设置Conda可执行文件的路径。
  2. "python.pythonPath" - 设置Python解释器的路径确保VS Code使用您创建的Conda环境中的Python解释器。

这样您就可以在Conda环境中运行您的服务并确保VS Code正确配置以使用该环境。