服务器环境准备:
**服务器IP地址**:192.168.XXX.XXX
**域名地址**:XXXXX.com
**DNS绑定解析**
**链接到服务器的用户名**
**链接到服务器的密码**项目准备:
**前端项目**:这里使用前端工程化的build包推送到服务器
**后端项目**:这里使用git远程地址推送到服务器
**数据库**:这里使用Pgsql数据库演示
**Shell工具**:Xschell、SecureCRTPortable等
链接到服务器
ssh username@your-server-ip说明
将 username 替换为您的服务器用户名
将 your-server-ip 替换为您的服务器IP地址
如果使用密钥登录,添加 -i /path/to/your/private/key
输入链接地址后后需要提供password(非明文输入)
服务器基本状态检查
# 查看操作系统版本
cat /etc/os-release
# 查看内核版本
uname -a
# 查看系统运行时间和负载
uptime
说明
显示Linux发行版信息,了解服务器的操作系统类型和版本,确保兼容性
# 查看内存使用情况(详细)
free -h
# 查看内存详细信息
cat /proc/meminfo | head -10说明
确保有足够内存
# 查看磁盘使用情况
df -h
# 查看当前目录磁盘使用
du -sh .
# 查看磁盘IO情况
iostat -x 1 3说明
确保有足够磁盘空间存储应用数据
# 检查网络接口
ip addr show
# 检查网络连通性
ping -c 4 8.8.8.8
# 检查DNS解析
nslookup google.com
# 查看开放的端口
netstat -tlnp说明
确保网络配置正确,可以访问外部资源
# 查看当前用户
whoami
# 查看用户组
groups
# 检查sudo权限
sudo -l
说明
确认当前用户名有足够的权限执行部署操作
# 检查Git版本
git --version
# 如果没有Git,安装它
sudo apt update
sudo apt install git -y
# 查看Git配置
git config --list
# 配置Git(可选,用于提交记录)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 测试Git连接(如果使用GitHub)
ssh -T git@github.com(或者你的项目存放地址)说明
确保可以从远程仓库拉取代码
在服务器创建项目目录
# 创建项目根目录
sudo mkdir -p /opt/server-folder
# 设置目录所有者
sudo chown -R $USER:$USER /opt/server-folder说明
sudo 获取创建权限,如果有管理员权限则不需要使用sudo
mdkir 创建目录命令
-p
/ 服务器根目录
opt 目录名,可根据自己需求进行定义,或者在已有目录下创建
server-folder 服务器上项目目录的名称
在服务器的根目录的opt目录下创建项目根目录server-folder
# 进入项目目录
cd /opt/server-folder
# 创建必要的子目录
mkdir -p static logs Server_folder说明
cd 进入项目目录
在服务器的项目目录下简历文件夹,前端项目文件夹、后端项目文件夹、log日志文件夹等
推送前端项目到服务器,直接上传文件方法
# 进入服务器存放前端文件目录
cd /opt/server-folder/static
# 上传到服务器
scp 前端build文件.zip绝对路径 username@your-server-ip:opt/server-folder/static
# 查看当前文件夹下是否已上传.zip
ll或者ls
# 解压
unzip 前端build文件.zip
推送后端项目到服务器,使用git拉取方法
# 进入服务器存放后端文件目录
cd /opt/server-folder/Server_folder
# 克隆项目(替换为您的仓库地址)
git clone https://github.com/yourusername/Server_folder.git
# 如果需要运行指定分支,则使用git命令进行切换
git branch # 查看
git checkout # 切换
在服务器进行后台服务配置
# 清除yum缓存命令
sudo yum clean all
sudo yum makecache
# 安装 Python 3 和 pip
sudo wget https://www.python.org/ftp/python/3.11.0/python-3.11.0.tgz
sudo tar xzf Python-3.11.0.tgz
cd Python-3.11.0.tgz
# 验证安装
python3 --version
pip3 --version
# 安装pgspl服务
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum -y module disable postgresql
# 启动 PostgreSQL 服务
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo systemctl restart postgresql
# 安装 Nginx
sudo yum install nginx -y
# 启动 Nginx 服务
sudo systemctl start nginx
sudo systemctl enable nginx
# 检查 Nginx 状态
sudo systemctl status nginx
server {
listen 80;
server_name your-domain.com; # 替换为你的域名
# 前端静态文件
location / {
root /opt/static/build;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
# 后端 API 代理
location /api/ {
proxy_pass http://127.0.0.1:18001;
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;
}
# 上传文件代理
location /uploads/ {
proxy_pass http://127.0.0.1:18001;
}
location /export_file/ {
proxy_pass http://127.0.0.1:18001;
}
}
# 重启后检查服务状态
sudo systemctl status postgresql
sudo systemctl status nginx
在服务器启动服务
# 进入服务器服务代码目录
cd /opt/server-folder/Server_folder
pyhon -m venv venv
# 激活虚拟环境(如果有)
source venv/bin/activate
# 下载项目依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 数据迁移
alembic revision --autogenerate -m "init"
alembic upgrade head
# 执行初始化脚本
python3.11 脚本.py启动服务
# 启动服务
nohup python3 main.py > backend.log 2>&1 &
uvicorn main:app --host=0.0.0.0 --port=8900
# 如果有celery
nohup celery -A settings.celery_config:celery_app worker --loglevel=info -c 1 >> celery-worker.log 2>&1 &
celery -A settings.celery_config:celery_app worker --pool=solo -c 1 --loglevel=info
windows环境需要加--pool=solo 单线程执行(Windows 不支持默认的 prefork 多进程)
# 查看运行状态:
ps aux | grep python
# 停止服务
kill <进程ID>
说明
nohup:让进程在后台运行,即使关闭终端也不停止
backend.log:将输出重定向到日志文件
2>&1:将错误输出也重定向到日志文件
&:在后台运行
tail -n 50 backend.log 查看日志
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。