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

158 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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。如果没有安装可以使用以下命令安装
```sh
sudo yum install python3
sudo yum install python3-pip
```
2. **克隆项目**
将项目克隆到你的服务器上:
```sh
git clone <项目地址>
cd markdown-upload-app
```
3. **创建虚拟环境**
为了避免依赖冲突,建议使用虚拟环境:
```sh
python3 -m venv venv
source venv/bin/activate
```
4. **安装项目依赖**
使用pip安装项目所需的依赖
```sh
pip install -r requirements.txt
```
5. **配置Nginx**
安装Nginx
```sh
sudo yum install nginx
```
配置Nginx以反向代理到Flask应用。编辑Nginx配置文件例如`/etc/nginx/nginx.conf`或`/etc/nginx/conf.d/default.conf`
```nginx
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以应用配置
```sh
sudo systemctl restart nginx
```
6. **使用Gunicorn运行Flask应用**
安装Gunicorn
```sh
pip install gunicorn
```
使用Gunicorn运行Flask应用
```sh
gunicorn --bind 127.0.0.1:5000 run:app
```
7. **设置Supervisor管理Gunicorn**
安装Supervisor
```sh
sudo yum install supervisor
```
创建Supervisor配置文件例如`/etc/supervisord.d/markdown-upload-app.ini`
```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
```sh
sudo systemctl start supervisord
sudo systemctl enable supervisord
```
这样你的Flask应用就应该在CentOS服务器上成功部署并运行了。你可以通过访问服务器的IP或域名来访问上传页面。
wantsong: 这个服务能放在conda环境中么
VS Code: 是的您可以在Conda环境中运行服务。以下是一些步骤帮助您在Conda环境中设置和运行服务
1. **创建Conda环境** - 使用以下命令创建一个新的Conda环境并安装所需的Python版本和库。
```bash
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正确配置以使用该环境。