JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Django搭建深度日记:将项目部署到服务器-深度日记官方网站

wys521 2024-10-08 11:21:10 精选教程 24 ℃ 0 评论

代码部署

首先安装相关的环境库

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引导页了,哈哈,小功告成,先喝口小咖啡!

前路漫漫,咱们接着继续努力


(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-enabled

ln [参数][源文件或目录][目标文件或目录]

-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_HOSTS
  • Nginx 中与 IP/域名 有关的位置
  • Gunicorn 中与 IP/域名 有关的位置

域名搞定之后,接着就可以着手考虑把网站升级为 https 版本了,这是大趋势,一定要做。

另外,开发时为了效率把所有静态资源都下载到本地,但是部署时不推荐这样做,原因是静态文件通常体积都较大,你花血汗钱买的服务器载入会很慢。尽量远程 CDN 调用(这个会在后续文章发布)BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务

下一节,咱们来唠唠深度日记网站的基本功能


鸣谢:本文参考了杜塞大神的博客教程,再次表示感谢

Django搭建个人博客:将项目部署到服务器 - 杜赛的博客

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表