django数据迁移命令 cmd命令连接数据库

虽然我们的相册还有一些不完善的地方,但是没关系。越早部署到互联网上,就能越早发现线上特有的问题,让产品在迭代中成长。注:以下流程经过作者验证,保证项目顺利部署。如果你不知道每一步是为了什么,那么请严格按照文章的流程顺序来。配置服务器若要设置网站,您必须首先...

虽然我们的相册还有一些不完善的地方,但是没关系。越早部署到互联网上,就能越早发现线上特有的问题,让产品在迭代中成长。

:以下流程经过作者验证,保证项目顺利部署。如果你不知道每一步是为了什么,那么请严格按照文章的流程顺序来。

配置服务器

若要设置网站,您必须首先有一台连接到互联网的服务器。国内比较知名的云服务器有阿里云腾讯云和百度云,都有各自的优缺点,大家可以自己学习比较,选择适合自己的购买。

由于上一章作者使用的是阿里云家庭桶,所以教程将以

阿里云ECS

为例。新用户通过这个阿里云ECS推广链接注册了折扣和现金券;有一款针对学生的优惠服务器,每月9.5元,性价比很高。

阿里云的服务器购买页面变化频繁。如果图中显示的步骤与您购买时不同,也没关系。核心步骤都差不多。稍微找找就ok了。

首先进入

阿里云ECS的购买页面

:

图片很小,看不清楚的同学会放大。

让我们言归正传:

实例

从入门级里选一款便宜的(比如2核2G的),以后流量高了再升级也不迟(土豪请无视这条)。

镜像

选择 Ubuntu 。其他 Linux 版本也是可以的,根据你的使用习惯确定。

系统盘

先选个 20G,够你用一阵了。数据盘暂时用不上,不用勾选。

单击“下一步”转到

网络和安全组

页面:

这个页面默认就行,公网最低带宽1M,刚开始够用。

如果有选项问是否购买公有IP,记得打勾。没有公共IP就无法连接到互联网。

单击“下一步”转到

系统配置

页面:

为了更方便的远程连接到服务器,在这里勾选

自定义密码

,即输入用户/密码的认证方式。其实

密钥对

的认证方式更安全。等以后熟悉了请改回来。

单击“下一步”转到

分组设置

页面。这个页面上的所有默认设置都可以。点击下一步,

确认订单

无误,即可付款。

支付成功后,可以通过控制台看到购买的云服务器:

有时这里会出现一个***的字,提醒你服务器的网络端口没有打开。单击***单词链接进入

安全组规则

选项卡并打开它:

开放22(远程连接端口)、443(HTTPS端口)和80(HTTP端口),顺便还开放了3389端口。

这一步非常重要。如果你不打开它,你将永远无法连接到该网站。如果没有电影提醒,必须到安全组确认端口是否打开。

至此,服务器的购买和配置完成。等待几分钟,等待初始化完成,就可以得到服务器的

公有IP地址

。作者的是47.104.227.185,后面会用到。

准备工作/即将开始工作

在正式部署之前,需要做一些准备工作。

修改后端配置

首先,Django的

配置

应该更改为在线状态:

# /album/settings.py...# 修改项。关闭调试模式# 关闭后 django 不再处理静态资源# 也不再提供错误提示页面DEBUG = False# 修改项。允许所有的IP访问网络服务ALLOWED_HOSTS = ['*']# 新增项。静态文件收集目录STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')

然后在虚拟环境中执行:

(env)> pip freeze > requirements.txt

在requirements.txt中记录所有后端依赖库

代码上传Github

有几种方法可以将项目代码***到云服务器。上传到Github比较方便,然后Github把项目代码下载到服务器。所以你需要把项目上传到Github。

Github经常很慢或者无法登录。这时候也可以尝试使用国产Gitee,或者直接点对点本地上传服务器。

这里就不详细讨论怎么上传了。请自行了解Git,注册Github账号等。

提醒一下,所有依赖的

库都不需要上传

,比如env目录,很容易安装在服务器上。

这就是前面生成的requirements.txt所做的事情。

接下来就是正式部署了。

远程连接

部署的第一步是找到连接云服务器的方法,否则什么都不会发生。由于项目是在Windows环境下开发的,建议使用

XShell

作为远程连接的工具。XShell有学校版和家庭版。你可以通过填写你的名字和电子邮件地址***它。

如何使用XShell我就不赘述了。以读者的智力,稍微查一下就能看出来。

使用起来相当简单。基本上填写主机IP、端口号(22)和登录验证就可以连接了。

连接成功后,可以在XShell窗口看到阿里云的欢迎词:

Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-77-generic x86_***) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantageWelcome to Alibaba Cloud Elastic Compute Service !root@dusai:~$

Root@dusai:~$是命令提示符(Root是用户名,dusai是主机名)。输入命令时不需要输入这个。

在本文中,为了方便起见,省略了root@dusai:字符。

安装项目和依赖项

接下来的部署指令都是在服务器

中执行的,也就是在XShell中操作。不要迷惑。

首先更新系统库:

~$ apt-get update~$ apt-get upgrade

部署到正式环境中时,

后端服务器

无法使用Django自带的开发服务器(性能较低),而是使用Nginx+Gunicorn+Django提供网络服务:

客户端发来 http 请求,Nginx 作为直接对外的接口,对 http 请求进行分析;如果是静态资源请求,则由Nginx自己处理(效率极高);如果是动态资源请求,则把它转发给 Gunicorn 进行预处理后,再转发给 Django,最终完成资源的返回。

此外,确保Python3、Git和virtualenv也安装正确。

按顺序执行以下指令:

~$ apt-get install nginx~$ apt-get install python3.8~$ apt-get install python3-pip~$ apt-get install git~$ pip3 install virtualenv

成功后,创建并跳转到项目目录:

~$ mkdir -p /home/sites/album~$ cd /home/sites/album# 进入的路径如下所示/home/sites/album$

接下来,您可以从Github下载该项目:

# 以教程仓库为例 django-vue-tutorial../album$ git clone https://github.com/stacklens/django-album-tutorial.git

这里以教程的仓库为例。读者在使用自己的项目时,一定要注意正确的路径名。

如果从非公开项目下载,Github这种用户名和密码的认证方式就准备被抛弃了。如有错误,请以密钥认证的形式下载。

下载项目后,创建并进入同级虚拟环境路径:

../album$ virtualenv --python=3.8 venv../album$ source venv/bin/activate# 看到 (venv) 开头就对了(venv) ../album$

进入项目目录,安装依赖项,收集静态资源,并迁移数据库:

# 这里的 django-album-tutorial 路径是从 Github 拉取下来的项目路径# 记得改成你自己的(venv) ../album$ cd django-album-tutorial(venv) ../django-album-tutorial$ pip3 install -r requirements.txt(venv) ../django-album-tutorial$ python3 ***nage.py collectstatic(venv) ../django-album-tutorial$ python3 ***nage.py migrate

最后,启动nginx:

# 为了阅读方便,后续命令行均省略 $ 前面的路径部分(venv) ~$ service nginx start

在浏览器中访问您的云服务器的公共IP以查看效果:

看到Nginx的欢迎页面就成功了一半。继续吧。

配置nginx

NGX欢迎界面的默认配置明显无法使用,所以Nginx的配置文件需要重写。
/etc/Nginx/sites-available目录是定义

Nginx的可用配置的地方

。输入命令创建配置文件myblog,并打开

vim编辑器

:

(venv) ~$ vim /etc/nginx/sites-available/album

关于如何使用vim编辑器,就不多说了。这里有两个基本操作:

按 i 键切换到

编辑模式

,这时候才可以进行输入、删除、修改等操作按 Ctrl + c 退回到

命令模式

,然后输入 :wq + Enter 保存文件修改并退回到服务器命令行

回到正题,用vim写在相册文件里:

server { charset utf-8; listen 80; server_name 47.104.227.185; # 改成你的 IP location /static { # 这里的 django-album-tutorial 路径是从 Github 拉取下来的项目路径 # 记得改成你自己的 alias /home/sites/album/django-album-tutorial/collected_static; } location /media { # 这里的 django-album-tutorial 路径是从 Github 拉取下来的项目路径 # 记得改成你自己的 alias /home/sites/album/django-album-tutorial/media; } location / { proxy_set_header Host $host; proxy_pass http://unix:/tmp/47.104.227.185.socket; # 改成你的 IP }}

这个配置会**端口80(通常是http请求的端口),**IP地址会写在自己的

服务器公网IP

中。

配置中有两个核心规则:

如果请求静态资源,则直接转发到对应目录中寻找其他请求则转发给 Gunicorn(再转交给 Django)

如果已经申请了域名,将配置中所有带IP的地方都改成域名,例如:server _ name ***.dusaiphoto.com。

完成编写后,退出vim编辑器并返回命令行。因为我们只编写Nginx的

可用配置

,所以我们还需要将这个配置文件链接到

正在使用的配置

:

(venv) ~$ ln -s /etc/nginx/sites-available/album /etc/nginx/sites-enabled

测试下nginx配置是否正常:

(venv) ~$ nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

至此,Nginx配置完毕。接下来,Gunicorn完成了。

有些读者无论怎么配置都只能看到Nginx的欢迎页面。启用站点的目录中的默认文件可能包含您编写的配置。删除缺省文件,您通常可以代理您自己的配置文件。

Gunicorn和测试

Nginx完成后,只剩下Gunicorn。

以下三个命令是安装Gunicorn、重启Nginx和启动Gunicorn:

(venv) ~$ pip3 install gunicorn(venv) ~$ service nginx restart# 将 IP 改为你的公网 IP# .wsgi 前面为 Django 配置文件所在的目录名(venv) ~$ gunicorn --bind unix:/tmp/47.104.227.185.socket album.wsgi:application# Gunicorn 成功启动后命令行提示如下[2021-07-29 15:09:22 +0800] [11945] [INFO] Starting gunicorn 20.1.0[2021-07-29 15:09:22 +0800] [11945] [INFO] Listening at: unix:/tmp/47.104.227.185.socket (11945)[2021-07-29 15:09:22 +0800] [11945] [INFO] Using worker: sync[2021-07-29 15:09:22 +0800] [11947] [INFO] Booting worker with pid: 11947

Gunicorn成功启动。(注意启动时命令行所在的路径)

接下来,尝试用浏览器访问它:

大功告成,撒花庆祝!

此时,您可以比较本地存储和OSS存储之间的巨大差距。

修整厂

后期操作和维护

你的网站需要不断更新优化代码。每次修改代码,都很容易更新到服务器。在

虚拟环境

中输入项目目录

,依次执行以下命令(collectstatic和migrate是可选的):

git pullpython3 ***nage.py collectstaticpython3 ***nage.py migrate# 重启 gunicornpkill gunicorngunicorn --bind unix:/tmp/47.104.227.185.socket my_blog.wsgi:application

加上cd的改目录的指令,部署过程中有十几条指令,手动输入太麻烦。粗暴的做法是用XShell宏把部署指令写成按顺序执行的脚本,然后点几个按钮就完成了,非常方便。

更高级的方式是把自动部署的脚本写在服务器上,读者以后慢慢研究。

如果您更改了Nginx的配置文件,还需要重新启动Nginx服务:

service nginx restart

域名优化

相对来说,域名配置比较容易,所有云服务商都有这个服务。

有了域名后要改什么:

Nginx 中与 IP/域名 有关的位置Gunicorn 中与 IP/域名 有关的位置

域名定下来之后,就可以开始考虑把网站升级到https版本了。

最后,在开发过程中,我们会写入机密密钥、电子邮件密码等敏感信息。到settings.py .部署的时候千万不要把这些信息直接上传到开放仓库,而是写到本地服务器,然后在settings.py中读取。

进程托管

还有一个新手在部署过程中经常遇到的问题,就是关闭SSH终端时,Web服务也关闭,导致无法连接网站。这个问题在@frostming的文章《Web服务的进程托管》中用三种常用方法解决了,还实现了异常重启和启动自启动。有类似疑惑的同学可以去观看。

摘要

部署可以说是新手最大的难点,也是检验成果和获得成就感的关键一步。

多查资料,相信你遇到的问题别人早就遇到了。

去修远的路很长,所以我会上下而行。

本文来自罗金艺还行吧投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/541068.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 05-10
下一篇 05-10

相关推荐

  • 分区助手迁移系统到ssd无法启动 常见故障和解决方案

    今天还升级了笔记本固件,加了一块256G的SSD,用ngff接口。这里就不写安装过程了,大家都知道。迁移系统使用SSD范围。SSD Scope软件是专门为原装SSD设计的。它通过实时更新、防止性能下降和预测未来可能出现的问题来保持SSD的健康。Scope软件配备了一系列实用功能,包括查看S

    2023-07-23 14:59:01
    248 0
  • 电脑系统迁移到固态硬盘怎么操作

    1双击打开分区助手软件主页面。点击页面左侧“将系统迁移到固态硬盘”菜单的选项2,会弹出系统迁移的向导页面。在此页面中,直接点击“下一步”菜单3查看当前电脑连接的硬盘设备,点击选择新的固态硬盘,点击“下一步”。安装电脑SSD后,如果需要将原来的操作系统转移到SSD上

    2023-07-18 09:28:01
    297 0
  • oracle迁移到mysql方案 oracle转mysql数据移植

    本文目录:一、OGG概述(一)OGG逻辑架构二、迁移方案(一)环境信息(二)表结构迁移(三)数据迁移1.源端OGG配置(1)Oracle数据库配置(2)Oracle数据库OGG用户创建(3)源端OGG 管理进程(MGR)配置(4)源端OGG 表级补全日志(trandata)配置(5)源端OGG 抽取进程(extract)

    2023-07-14 16:41:01
    116 0
  • 怎么转移微信聊天记录,微信聊天内容迁移使用攻略

    智能定位器更新换代快,经常会遇到新的,微信聊天记录还在旧的;家人朋友工作的很多图片和文档都在微信里。有什么办法可以转移到新定位器上?通过建立个人热点,并通过热点传输聊天记录,个人热点可以快速迁移文件。下面这种通过设置个人热点把微信聊天记录转移到另一个新***

    2023-07-08 22:38:01
    189 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信