将制作的网站部署在公网
1.租了华为云服务器来部署前端项目
更新系统
安装Java开发环境 (Spring Boot需要):
安装Node.js和npm (如果前端项目需要构建):
报错请使用
git config --global http.version HTTP/1.1
安装Nginx:
前端这里记得改成公网的后端地址
构建前端项目:
上传前端静态文件到服务器:
配置Nginx服务前端静态文件:
在服务器上编辑Nginx的配置文件。通常在/etc/nginx/conf.d/your-app.conf
。
server {listen 80;server_name 113.45.188.175; # 您的公网IP地址root /usr/app/dist; # 确保这里是正确的dist目录路径index index.html;location / {try_files $uri $uri/ /index.html;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
}
重新加载配置nginx -s reload
测试 Nginx 配置
重启 Nginx 服务
记得设置安全组规则,开放80和8080入的规则
本地是在5173端口,公网使用nginx在 80 端口:
通过您的公网 IP 地址 http://113.45.188.175
访问前端网站。
2.继续在华为云服务器部署后端项目
这里要和前端ip对应上,跨域这里我设置一个公网一个本地
后端打包,这里调用的大模型api,要和后面对应上
上传到服务器
进入到传输jar包的文件夹执行,这条命令执行成功,并且将进程放到了后台运行
nohup java -jar magic_conch_backend-0.0.1-SNAPSHOT.jar > magic_conch.log 2>&1
记住如果想要重新改一遍运行,一定要杀死这个进程,然后重新打包上传,在运行上面后台启动命令
ps aux | grep java 查找后台运行
tail -f magic_conch.log 检查日志文件
kill PID 杀死进程
3.在另一台服务器部署fastapi接口,并能公网访问
因为我用的是赠送的免费的阿里云服务器,没有GPU显卡,所以部署的是千问0.5b的模型,而且也得自己重新配环境,谁让他免费呢
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
我服务器装torch老是旧版本,所以只能重新指定版本安装了
conda create -n fastApi python=3.10 pytorch=2.3.0 -c conda-forge -y
# 或者 conda create -n fastApi python=3.10 "pytorch>=2.1" -c conda-forge -y
conda activate fastApi
conda install -c conda-forge fastapi uvicorn transformers -y
pip install safetensors sentencepiece protobuf accelerate
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
然后就是把到处的模型上传到这个服务器上面,然后编写fastapi框架接口的python文件main.py
模型我放在/root/autodl-tmp/Models/Qwen2.5-0.5B/路径下
mian.py放在/root/autodl-tmp/App/路径下
from fastapi import FastAPI
from transformers import AutoModelForCausalLM, AutoTokenizer
import torchapp = FastAPI()# 模型路径
model_path = "/root/autodl-tmp/Models/Qwen2.5-0.5B"# 加载 tokenizer (分词器)
tokenizer = AutoTokenizer.from_pretrained(model_path)# 加载模型并移动到可用设备(GPU/CPU)
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForCausalLM.from_pretrained(model_path).to(device)@app.get("/generate")
async def generate_text(prompt: str):# 使用 tokenizer 编码输入的 promptinputs = tokenizer(prompt, return_tensors="pt").to(device)# 使用模型生成文本outputs = model.generate(inputs["input_ids"], max_length=150)# 解码生成的输出generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)return {"generated_text": generated_text}
然后进入 mian.py的/root/autodl-tmp/App/路径下,进入虚拟环境,启动
nohup uvicorn main:app --host 0.0.0.0 --port 8000 > fastapi_app.log 2>&1 &
一些进程操作
ps aux | grep uvicorn 查抄进程PID
kill PID 杀死进程
使用公网FastAPI - Swagger UI访问