为了巩固自己部署网页的能力,现在将半小时的学习结果总结一下。
前期准备
服务器的准备
这是一开始只有基础配置的服务器:
有基础的ssh服务,也有python包。
|
|
指令输入后,输出为:
|
|
这代表Shell类型不是bash
输入:
|
|
重新登录后,就会正常使用bash的shell,一般这个更加方便且高效。
连接Github以拉取项目内容
本地生成公钥
一般而言使用Ed25519算法就可以,密码较短,但是这是新系统的配置,可能某些旧系统不能使用。
输入:
|
|
然后就会有提示:
按回车使用默认路径(~/.ssh/id_ed25519
)。
设置密钥密码(可选,增强安全性)。
生成的文件:
私钥:~/.ssh/id_ed25519
(需严格保密)
公钥:~/.ssh/id_ed25519.pub
(上传到服务器)
上传公钥到远程服务器
|
|
输入远程服务器密码,公钥会自动追加到 ~/.ssh/authorized_keys
。
配置本地 SSH(可选)
|
|
添加以下内容(示例):
连接时只需输入:
|
|
禁用密码登录(增强安全)
这是可选项,一般不用设置,但是安全系数会因为这个提高很多。
编辑服务器 /etc/ssh/sshd_config
,添加下面的参数:
然后重启SSH服务:
|
|
拉取远程仓库的内容
以及提前配置本地服务器,所以只需要ssh就可以拉取内容:
拉取当前分支最新代码
部署生产环境
安装Gunicorn
|
|
启动Gunicorn
|
|
具体意思是:
-w 4: 4个进程
app:app:第一个app是app.py文件名称,第二个app是Flask实例名
注意,第一个文件名称就是网站运行的程序,一般就是使用python3运行后可以直接在本地测试网站的程序。
一般运行指令后:
|
|
在浏览器访问 http://服务器IP:8000
就会显示网站内容
在部署 Python Web 应用(如 Flask 或 Django)时,虽然 gunicorn
可以直接处理 HTTP 请求,但结合 Nginx 反向代理是生产环境的最佳实践。
仅仅通过gunicorn
来处理,配置复杂且性能较差,不能覆盖高并发的请求,且不够安全,结合Nginx,可以提高效率和安全性。
通过 Nginx + Gunicorn 的分工协作,既能发挥 Python 应用的处理能力,又能利用 Nginx 的高性能和安全特性,是生产部署的黄金组合。
配置Nginx反向代理(推荐)
安装:
|
|
编辑配置文件:
|
|
其中database
就是可自定义的配置文件名称,写入:
启用配置并重启Nginx:
现在可以直接通过 http://服务器IP 访问网站。
设置Gunicorn为系统服务(可选)
这一步主要是设置重启后网站会自动生成。
|
|
编辑文件输入:
|
|
其中database
就是你的项目文件。
然后:
ngrok 内网穿透
如果你的服务器IP限制于学校、家庭等不对外开放的网络地址,到这一步你还是不能通过访问https://你的域名或服务器IP/
来访问你的网站,除非学校内通过局域网还有可能访问,所以为了展示网站,一般需要内网穿透。
frp(Fast Reverse Proxy)是一个高性能的反向代理应用,常用于内网穿透。一般搭配公网的VPS(比如阿里云、腾讯云、搬瓦工等)作为frp服务端就可以实现高性能的穿透。但是,需要自己购买云服务,这里不考虑。
ngrok 是一个简单易用的内网穿透工具,适合临时演示和开发测试。
最重要的是ngrok官方提供免费服务,但带宽有限,且域名是随机的,所以仅限于测试,但是操作简单且免费。
注册ngrok账号
访问 ngrok官网,注册账号并登录。
下载ngrok客户端
一般选择Linux版本,下载并解压。
认证ngrok
登录ngrok官网,进入“Your Authtoken”页面,复制你的authtoken。
在服务器上运行:
|
|
启动http隧道
假设你的Nginx监听80端口,运行:
|
|
你会看到类似输出:
外网访问
直接用浏览器访问 http://xxxxxx.ngrok.io 或 https://xxxxxx.ngrok.io,就能访问网站!
ngrok 优缺点
优点:简单、无需公网服务器、适合临时演示和开发。
缺点:免费版带宽有限,域名随机,长期服务建议用frp或自建ngrok服务端。
总结
安装环境 → 2. 获取代码 → 3. 虚拟环境 → 4. 安装依赖 → 5. 初始化数据库
测试 → 7. Gunicorn部署 → 8. Nginx反代 → 9. 设置自启动 → 10.穿刺(按需)