代码部署首先安装相关的环境库root@deep-diary:~# sudo apt-get install nginx
root@deep-diary:~# sudo apt-get install python3
root@deep-diary:~# sudo apt-get install python3-pip
root@deep-diary:~# sudo pip3 install virtualenv之前开发时虚拟环境用的 python 自带的,为了避免读者的版本不同造成的各类错误,稳妥起见用 virtualenv 库来创建虚拟环境,操作步骤都是差不多的。在虚拟环境中,打包相关依赖库,便于直接在服务器进行安装创建网站目录root@deep-diary:~# mkdir -p /home/sites/deep-diary.com
root@deep-diary:~# cd /home/sites/deep-diary.com/
root@deep-diary:/home/sites/deep-diary.com# 参数说明:-p 确保目录名称存在,不存在的就建一个。将本地代码直接复制到服务器接下里需要做就是将本地代码复制到服务器,这里推荐一个工具软件WinSCP, 这个软件可以使用多种协议,连接到服务器,对服务器文件进行可视化操作。接着在服务器上生成虚拟环境,在这里用 virtualenv 生成并激活了虚拟环境:root@deep-diary:/home/sites/deep-diary.com# virtualenv –python=python3.8 env
created virtual environment CPython3.8.10.final.0-64 in 840ms
……
root@deep-diary:/home/sites/deep-diary.com# source env/bin/activate
(env) root@deep-diary:/home/sites/deep-diary.com# 接下来就是安装库、收集静态资源、数据迁移了:为了避免造成混乱,数据迁移之前,我们先删除本地所有的migratioins记录都删掉,重新开始生成deep_diary# python3 manage.py collectstatic
deep_diary# python3 manage.py migrate如果migrate 报错,可以尝试用deep_diary# python3 manage.py migrate –fake
初始化已存在的表 migrate –fake-initial代码部署基本就完成了,接下来就是配置 Nginx 。Nginx启动nginx 服务(env) root@deep-diary:/home/deep_diary# sudo service nginx start现在我们就可以用公网ip来访问这个nginx引导页了,哈哈,小功告成,先喝口小咖啡!前路漫漫,咱们接着继续努力Nginx 首页(env) root@deep-diary:/home/deep_diary# cd /etc/nginx/sites-available/
(env) root@deep-diary:/etc/nginx/sites-available# ls
default
(env) root@deep-diary:/etc/nginx/sites-available# vi deep-diary.com关于 vi 编辑器如何使用也不赘述了,这里只说两个最基本的操作:按 i 切换到编辑模式,这时候才可以进行输入、删除、修改等操作按 Ctrl + c 退回到命令模式,然后输入 :wq + Enter 保存文件修改并退回到服务器命令行此配置会监听 80 端口(通常 http 请求的端口),监听的 IP 地址写你自己的服务器公网 IP。配置中有3个规则:如果请求 static 路径则由 Nginx 转发到目录中寻找静态资源如果请求 media 路径则由 Nginx 转发到目录中寻找媒体资源其他请求则交给 Django 处理如果你已经申请好域名了,就把配置中有 IP 的地方都修改为域名,比如:server_name www.deep-diary.com;写好后就退出 vi 编辑器,回到命令行。因为我们写的只是 Nginx 的可用配置,所以还需要把这个配置文件链接到在用配置上去:(env) root@deep-diary: sudo ln -s /etc/nginx/sites-available/deep-diary.com /etc/nginx/sites-enabledln [参数][源文件或目录][目标文件或目录]-s : 表示软链接符号,关于这个命令的更多参数,可以参考如下博文linux每日命令(3):ln命令 – 听风。 – 博客园至此 Nginx 就配置好了,接下来搞定 Gunicorn。Gunicorn(env) root@deep-diary:/home/deep_diary# pip3 install gunicorn
Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/
Collecting gunicorn
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/e4/dd/5b190393e6066286773a67dfcc2f9492058e9b57c4867a95f1ba5caf0a83/gunicorn-20.1.0-py3-none-any.whl (79 kB)
|████████████████████████████████| 79 kB 20.2 MB/s
Requirement already satisfied: setuptools>=3.0 in /usr/lib/python3/dist-packages (from gunicorn) (45.2.0)
Installing collected packages: gunicorn
Successfully installed gunicorn-20.1.0
(env) root@deep-diary:/home/deep_diary# sudo service nginx reload
(env) root@deep-diary:/home/deep_diary# gunicorn –bind unix:/tmp/121.43.166.145.socket deep_diary.wsgi:application
[2022-01-22 07:31:00 +0800] [57670] [INFO] Starting gunicorn 20.1.0
[2022-01-22 07:31:00 +0800] [57670] [INFO] Listening at: unix:/tmp/121.43.166.145.socket (57670)
[2022-01-22 07:31:00 +0800] [57670] [INFO] Using worker: sync
[2022-01-22 07:31:00 +0800] [57673] [INFO] Booting worker with pid: 57673这里的三个步骤分别是:安装 Gunicorn重启 Nginx 服务启动 Gunicorn接下来,刷新浏览器试试,是不是很惊喜,自己开发的网站终于上线了开发的网站终于上线了终于,大功告成了,可以洗脸睡觉了!!!接下来的工作后期运维通过WinSCP 上传更新后的代码到服务器
python3 manage.py collectstatic 重新收集静态文件
python3 manage.py migrate 如果数据库设计有变化,需要进行数据迁移
# 重启 gunicorn
pkill gunicorn
gunicorn –bind unix:/tmp/121.43.166.145.socket deep_diary.wsgi:application
sudo service nginx reload 如果nginx 有所更改,需要执行此命令进行重新加载这里执行一次代码更新,需要的命令很多,加上cd更改目录的指令,部署过程有十几条,后续可以考虑编写一个批处理脚步进行快速执行(待更新)。域名及优化相对部署来说,域名配置就很容易了。阿里云提供域名的购买、备案(顶级域名必须,约10个工作日)、解析服务,简直全家桶有没有。重点提醒有了域名之后要改的地方:settings.py 中的 ALLOWED_HOSTSNginx 中与 IP/域名 有关的位置Gunicorn 中与 IP/域名 有关的位置域名搞定之后,接着就可以着手考虑把网站升级为 https 版本了,这是大趋势,一定要做。另外,开发时为了效率把所有静态资源都下载到本地,但是部署时不推荐这样做,原因是静态文件通常体积都较大,你花血汗钱买的服务器载入会很慢。尽量远程 CDN 调用(这个会在后续文章发布)BootCDN – Bootstrap 中文网开源项目免费 CDN 加速服务下一节,咱们来唠唠深度日记网站的基本功能鸣谢:本文参考了杜塞大神的博客教程,再次表示感谢Django搭建个人博客:将项目部署到服务器 – 杜赛的博客
本文出自快速备案,转载时请注明出处及相应链接。
本文永久链接: https://www.175ku.com/35223.html