1. 上库
将我本地的 学习项目 推送到 github 仓库
- 先在 github 上创建一个空项目(不带 README.md)
- 本地项目进行 git 初始化
bash
cd /path/to/your/project
git init
- 项目中新增 .gitignore 文件,内容如下
text
.venv
*__pycache__
- 提交到:缓存区 & 本地仓库
bash
git add .
git commit -m 'xxx'
- 连接远程仓库(ssh)
bash
git remote add origin git@github.com:XXX/learn_django.git
- 推到远程仓库
bash
git push origin master
2. 部署
2.1 PythonAnywhere
- 网址:https://www.pythonanywhere.com/
- 额度:可以免费创建
一个 web 应用,为期一个月。- 我的目的是学习过程中进行一些实践,所以目前来看够用。
- 如果超过一个月我还需要进行学习实践,那我再看看如何续费,又或者找国内的云服务器。
- 页面

在左侧Consoles里面可以打开终端,从而可以输入 cmd 命令。
在右侧点击 Web apps 可以创建新的 web app。
2.1.1 终端下载git项目
-
- 如果需要免密下载,则需要配置 ssh 相关内容。
bash
ssh-keygen -t ed25519 -C "your_email@example.com"
然后查看 ~/.ssh/id_ed25519.pub 文件内容
bash
cat ~/.ssh/id_ed25519.pub
将内容拷贝并填写到 github 的 new ssh key 里面(具体操作我不赘述,可以直接问 AI)
-
- 然后
下载自己的git项目
- 注意,这里的项目名字定义成临时的,是为了防止和后面创建服务的过程相冲突。
- 然后
bash
git clone git@github.com:XXX/learn_django.git learn_django_tmp
2.1.2 创建 web 服务
2.1.2.1 初次创建
在 PythonAnywhere 的仪表板中点击 web apps,进入页面后可以创建web应用。
由于我已经创建过一个web应用了(达到额度上限),现在没法展示新的创建过程。不过我记住如下注意点:
- 项目路径我是放在 /home/xxx/project 下面
- 项目名称我起名为 learn_django
实际创建完成后,可以在终端中进行显示,看到类似于这样的结构
text
/home/xxx/project/learn_django # <=== 1.
├── learn_django/ # <=== 2.
├── media/
├── static/
└── manage.py
这里用 "<===" 标注了需要注意的文件
-
- 外层整个项目的名字是 learn_django
-
- 内部 django 项目主体文件夹的名字也是 learn_django
上面这些都是需要我在替换个人项目时需要注意的。
- 内部 django 项目主体文件夹的名字也是 learn_django
2.1.2.2 拷贝 & 修改项目代码
- 文件拷贝
首先到我们的项目的上层文件夹
bash
cd ~/project
现在里面有 learn_django(这是创建 web 应用时生成的)和 learn_django_tmp(我克隆的 git 项目)
先备份 learn_django
bash
mv learn_django learn_django_new
然后改名我们的 git 项目
bash
mv learn_django_tmp learn_django
现在 ~/project 下有 learn_django_new(这是创建 web 应用时生成的)和 learn_django(我克隆的 git 项目)
- 接下来补充 python 环境
bash
cd learn_django
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
这里的 requirements.txt 是我项目里面有的,在我的博客《Django笔记2:一个Hello World网页》里面有提到如何生成,或者问AI也可以,很简单。
- 接下来可能需要修改代码
这取决于git中的项目名称 与 使用 PythonAnywhere创建web应用时采用的名称是否一致
比如我的项目虽然叫 learn_django,但我的目录里面实际是这样
text
├── .venv/
├── django_project/ # 看这里 <===
├── pages/
├── templates/
├── db.sqlite3
└── manage.py
这意味着我需要将 django_project 文件夹名称改成 learn_django
然后还需要修改所有相关的代码,我在我个人电脑上的项目里搜索了一下(因为用了 git 管理项目,所以本地文件和库是一致的),包括这些文件:

- 总结
其实就是为了:将我个人的git 项目嫁接到 PythonAnywhere创建web应用生成的项目中。
我采用的方法是在我的git项目中进行修改,把不正确的名称进行修改、补充。
2.1.3 重启服务
- 在这个页面上你可以进行 reload 重作

点击reload进行重启之后,点击上面的蓝色链接 即可访问
2.1.4 访问
我在手机上进行了网页访问,是成功的:

目前很简陋,因为仍在学习基础知识。这里仅验证部署上线。
2.1.5 上库 & 修改
- 我在PythonAnywhere的终端创建了一个dev_change_folder_name分支把代码推上去(过程不赘述)
- 注意可能需要进行git 的 email 和 user name 相关的设置,根据实际情况来操作即可
- 然后我在我自己的电脑上拉下这个分支
- 进行测试发现了新问题:localhost的url访问不了了,排查后发现是PythonAnywhere时指定了ALLOWED_HOSTS
- 进行修复如下(新增两个字符串) '127.0.0.1', 'localhost'):

- 没问题后,我进行如下操作:
- dev_change_folder_name 分支:提交改动
- 切换到 master 分支,合并 dev_change_folder_name 分支
- master 分支:提交到远程仓库
- 删除 dev_change_folder_name 分支(远程和本地的)
2.2 失败尝试fly.io:银行卡类型不支持(不建议尝试,仅记录)
我尝试按照书里的方式使用 https://fly.io/dashboard 进行操作,但最后失败了,原因是:
- Fly配置需要关联银行卡
- 境内银行卡类型为"银联"
- Fly不支持银联的银行卡:应该是由于zz因素影响。它还支持使用 "link 支付",不过该支付应用 不支持中国地区。
具体过程如下:
- 创建账户
- 官方教程 Fly.io官方文档
- 导入
bash
curl -L https://fly.io/install.sh | sh
会提示你是否需要将软件路径添加到 .bashrc 中,选择 Y 即可,效果就是在 ~/.bashrc 中添加了如下内容:
bash
# 由 flyctl 安装程序添加
export FLYCTL_INSTALL = "/home/xxx/.fly"
export PATH = " $FLYCTL_INSTALL /bin: $PATH "
其实就是让 ~/.fly/bin/ 路径添加到 PATH 中,这样就补充输入 ~/.fly/bin/flyctl 而直接输入 flyctl 就可以使用了
需要执行如下命令使令生效
bash
source ~/.bashrc
- 登录
bash
flyctl auth login