远程连接

使用Xshell作为远程连接的工具。使用方法很简单:

将主机IP、端口号(22)以及用户身份认证(用户名:root,密码:XXXXXX)填好即可连接

连接成功后,就能在 XShell 窗口中看到阿里云的欢迎字样了:

1
2
3
4
5
6
7
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-113-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro

Welcome to Alibaba Cloud Elastic Compute Service !

项目部署

克隆项目并搭建环境

先更新Ubuntu系统上的软件包

1
2
sudo apt update
sudo apt upgrade

接着安装Python及相关工具

1
apt install python3 python3-pip python3-venv # 指定安装你需要的 Python版本,如 Python3.11

使用 SSH 连接 GitHub,将自己的项目克隆到服务器上

  • 生成 SSH 密钥

按照提示生成 SSH 密钥,并保存到默认位置(通常是 ~/.ssh/id_rsa)。

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • 添加 SSH 密钥到 GitHub

打开生成的公钥文件,并复制内容

1
cat ~/.ssh/id_rsa.pub

登录到 GitHub,前往 Settings -> SSH and GPG keys -> New SSH key,粘贴公钥并保存。

  • 将项目克隆到本地

创建并进入你想存放项目的目录,然后从 GitHub 中拉取项目代码

1
git clone git@github.com:username/repository.git
  • 创建虚拟环境并安装库

进入到项目的根目录后,创建环境并激活

1
2
python3 -m venv venv
source venv/bin/activate

安装库

1
pip install -r requirements.txt
  • 修改 Django 的配置文件 settings.py
1
2
3
4
5
6
7
8
# 关闭调试模式
DEBUG = False

# 允许访问的服务器
ALLOWED_HOSTS = ['*'] # 星号表示允许所有的请求,实际部署时改成自己的域名或 IP

# 静态文件收集目录
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
  • 收集静态文件、进行数据迁移
1
2
python manage.py collectstatic
python manage.py migrate

安装并配置web服务器

  • 安装Nginx并启动服务
1
2
apt install nginx
service nginx start

打开浏览器,输入服务器公网 IP 地址,此时可以看见 Nginx 的欢迎界面
Welcome to nginx!

  • 配置 Nginx

创建 Nginx 配置文件 /etc/nginx/sites-available/myproject,内容示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name your_server_ip; # 服务器的 IP 地址

location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/your_project.sock; # 使用Unix套接字
}

location /static/ {
alias /path/to/your/static/; # 静态文件路径
}

location /media/ {
alias /path/to/your/media/; # 媒体文件路径
}
}

启用配置并重启Nginx

1
2
3
ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
nginx -t
systemctl restart nginx
  • 安装Python开发包和uWSGI
1
2
apt install python3-dev
pip install uwsgi
  • 配置uWSGI

创建 uWSGI 配置文件uwsgi.ini,内容示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[uwsgi]
# 设置 uWSGI 的工作目录
chdir = /home/wasd/projects/your_project

# 指定要加载的 WSGI 模块
module = your_project.wsgi:application

# 启用 uWSGI 主进程模式
master = true

# 设置工作进程的数量
processes = 4

# 指定 uWSGI 将监听的 Unix 套接字文件
socket = /tmp/your_project.sock

# 设置套接字文件的权限
chmod-socket = 664

# 在服务器停止时自动删除 Unix 套接字文件和 PID 文件
vacuum = true

重新启动Nginx,并启动uWSGI服务

1
2
systemctl restart nginx
uwsgi --ini uwsgi.ini --uid www-data --gid www-data --enable-threads

可通过该命令,查看正在运行的 uWSGI 进程

1
ps aux | grep uwsgi

如果想终止所有 uWSGI 进程,可使用

1
killall uwsgi

接下来用浏览器访问服务器,可以成功看见Django项目的界面!

至此,大功告成啦!