如何将mongodb+django部署到云服务器上(备份)

news2024/9/23 21:30:38

在有了一台云服务器之后,我们就可以把写在本机上的程序,搬到服务器上了。采用WinSCP在本机和服务器之间交换文件;FinalShell来操作服务器。

1、mongodb-本机到服务器

主要是三个步骤:dump本地数据库-上传-导入,详情请见之前写过的文章:如何将本地Mongodb传到服务器上-CSDN博客

2、Django-Github到服务器

在本机上写的django项目被我push到了GitHub仓库中,因此不需要用WinSCP传输,直接敲命令即可。cd到你想要保存项目的目录中,然后采用git clone+<ssh链接>即可,但是要注意的是可能需要用根用户操作,也就是在克隆语句前面加上sudo,如果有密码的话还需要输入一下进入根目录的密码。

打开django项目修改:

  • settings.py: ALLOWED_HOSTS = ['*'] 

(其实安全起见,这里不应该将设置成允许所有访问,而是只写你们的域名)

3、创建并配置虚拟环境

本机项目是在虚拟环境下写的,没有将环境上传到GitHub上(一般也不会有人传这个东西)。因此,在将项目拉取到服务器上之后也要创建一个虚拟环境,并安装相关依赖。首先创建一个虚拟环境。cd到你想要安装环境的目录并使用命令: 

python -m venv myenv

安装好一个名为myenv的虚拟环境后,激活该虚拟环境:

source ~/myenv/bin/activate

 注意,如果无法用上面命令激活,在最前面加一个sudo。

接着,从本机项目中获取该环境中的包。打开本机项目,在Terminal中cd到根目录,然后输入命令: 

pip freeze > requirements.txt

该命令能够生成一个名为requirements的txt文件,作用是将当前Python环境中安装的所有包的版本信息导出到该文件中,以便于在其他环境或日后重新创建相同的Python环境时进行参考或复用。用WinSCP将该文件上传到服务器。在服务器上将目录cd到包含该文件的目录下,然后输入命令:

pip install -r requirements.txt

此后,可以刷新一下该虚拟环境的文件夹,看看包是否都被安装上了。

4、在服务器上启动django

在服务器上有多种启动django的方法,最直接的有两种。

要么就在工程目录下,按照本机启动的方法:

python manage.py runserver

要么就采用uvicorn启动django: 

python -m uvicorn mongodb_connection.asgi:application

这个步骤的启动是用来检查django跟mongodb之间是否能链接上,django本身是否能正常运行等等。若启动报错,可以尝试打开django中的settings.py文件,在WSGI的下一行添上ASGI的代码,格式照搬上一行,把wsgi换成asgi即可,如下图。

启动之后可以采用命令

curl -X GET http://0.0.0.0:8001/your/api

来向地址为 0.0.0.0:8001 的服务器发送一个HTTP GET请求,请求路径为你编写的api,并带有查询相关的值。(默认端口是8000,我写8001是因为8000被占用了。注意安排好端口,以保证工作时不冲突)

5、systemd-uvicorn自启动

为了能让uvicorn自启动,同时减少启动时的代码量,可以用systemd将其编写成一个服务。将目录cd到 /etc/systemd/system/目录下,在该文件夹中新建一个配置文件,如my_service.service。并用nano或者vim打开并进入编辑模式。输入:(根据自己文件的位置进行适当更改)

[Unit]
Description = Service
After = network.target

[Service]
ExecStart=/home/ubuntu/MetaFolk_mongodb/mongoenv/bin/uvicorn mongodb_connection.asgi:application --host 0.0.0.0 --port 8001  
# uvicorn的位置 django根目录名.asgi:application --host xxxxx --port 指定的运行端口

WorkingDirectory=/data/mongodbApi/mongodb_connection
# django项目在服务器上的存储路径,到工程名称

Environment=/home/ubuntu/MetaFolk_mongodb/mongoenv/bin
# 是虚拟环境的位置到/bin目录

[Install]
WantedBy=default.target

(vim编辑模式是打开之后将光标移动到要改的地方,然后Esc->i就能开始编辑。完成后再次按Esc并输入:x即可保存编辑内容并退出)

(nano进入就能编辑,编辑完按ctrl+o保存,回车确认,crtrl+x退出。之后要 sudo systemctl daemon-reload以重新加载文件)

6、查看system日志

cd /。此后输入:(-n 20是为了控制输出的日志行数,要不然太多了,啥都找不见)

 sudo journalctl -u mongo_service.service -n 20

7、Nginx配置文件-路由匹配

因为服务器上有两套api,第一套以api1开头,第二套以api2开头,且在不同端口工作,因此要修改Nginx配置文件,进行路由匹配。打开Nginx配置文件,路径一般是/etc/nginx/nginx.conf。cd到该目录下sudo vim nginx.conf打开并进入编辑模式。

找到location,并添加下面红框中的内容:

保存并退出。

我在绿色第一行后路径的my-domain.conf中也添加了类似语句,如下图:

8、查看Nginx日志

上图中已经能够看到Nginx两类日志的位置(蓝绿色的二三行)cd到对应路径用nano或者vim查看即可。

9、启动服务并访问网址

sudo systemctl restart service_name.service

用上面的语句启动服务,然后本机浏览器上输入服务器域名+api进行访问,看能否正常访问并实现对应功能。 若不行,则可以通过查看各种日志来排查问题。

10、关闭虚拟环境

deactivate  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1440451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于大规模连续多目标优化的共轭梯度-进化集成算法

声明&#xff1a;文章题目字数有限&#xff0c;翻译水平有限&#xff0c;仅供参考&#xff01; 原题目: Integrating Conjugate Gradients Into Evolutionary Algorithms for Large-Scale Continuous Multi-Objective Optimization 引&#xff1a;这么久了&#xff0c;又捡起…

Pandas 对带有 Multi-column(多列名称) 的数据排序并写入 Excel 中

Pandas 从Excel 中读取带有 Multi-column的数据 正文 正文 我们使用如下方式写入数据&#xff1a; import pandas as pd import numpy as npdf pd.DataFrame(np.array([[10, 2, 0], [6, 1, 3], [8, 10, 7], [1, 3, 7]]), columns[[Number, Name, Name, ], [col 1, col 2, co…

springboot165科研工作量管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

第4章——深度学习入门(鱼书)

第4章 神经网络的学习 本章的主题是神经网络的学习。这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。本章中&#xff0c;为了使神经网络能进行学习&#xff0c;将导入损失函数这一指标。而学习的目的就是以该损失函数为基准&#xff0c;找出能使它的值达到最…

逐鹿比特币生态,Elastos 携新作 BeL2「重出江湖」

撰文&#xff1a;Babywhale&#xff0c;Techub News 文章来源Techub News&#xff0c;搜Tehub News下载查看更多Web3资讯。 刚刚过去的 2023 年&#xff0c;「比特币生态」成为了市场的绝对焦点之一。从铭文开始&#xff0c;到重新走进大众视野的 Stacks 与比特币闪电网络&am…

LeetCode Python - 3.无重复字符的最长子串

文章目录 题目答案运行结果 题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释:…

vscode +markdown 的安装和使用

文章目录 前言一、vscode markdown 是什么&#xff1f;1.vscode是什么&#xff1f;2.markdown 是什么&#xff1f; 二、安装步骤1.下载2.安装 三、安装插件1.安装 Markdown All in One2.安装 Markdown Preview Enhanced3. Paste Image v1.0.44.LimfxCodeExv0.7.105.Code Spell …

MoE-LLaVA:具有高效缩放和多模态专业知识的大型视觉语言模型

视觉和语言模型的交叉导致了人工智能的变革性进步&#xff0c;使应用程序能够以类似于人类感知的方式理解和解释世界。大型视觉语言模型(LVLMs)在图像识别、视觉问题回答和多模态交互方面提供了无与伦比的能力。 MoE-LLaVA利用了“专家混合”策略融合视觉和语言数据&#xff0…

STM32输出PWM波控制180°舵机

时间记录&#xff1a;2024/2/8 一、PWM介绍 &#xff08;1&#xff09;脉冲宽度调制 &#xff08;2&#xff09;占空比&#xff1a;高电平时间占整个周期时间的比例 &#xff08;3&#xff09;STM32通过定时器实现PWM时具有两种模式 PWM1模式&#xff1a;向上计数模式下&…

【华为云】云上两地三中心实践实操

写在前面 应用上云之后&#xff0c;如何进行数据可靠性以及业务连续性的保障是非常关键的&#xff0c;通过华为云云上两地三中心方案了解相关方案认证地址&#xff1a;https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiXCBUCNXI057Self-paced/about当前内容为华…

基于轻量级模型YOLOX-Nano的菜品识别系统

工程Gitee地址&#xff1a; https://gitee.com/zhong-liangtang/ncnn-android-yolox-nano 一、YOLOX简介 YOLOX是一个在2021年被旷视科技公司提出的高性能且无锚框&#xff08;Anchor-free&#xff09;的检测器&#xff0c;在YOLO系列的基础上吸收近年来目标检测学术界的最新…

Yii特性

Yii几乎拥有了当今Web 2.0应用发展的全部特性。下面是这些特性的一个简短的清单。 模型-视图-控制器&#xff08;MVC&#xff09;设计模式&#xff1a;Yii在WEB编程中采用这一成熟的技术从而可以更好的将逻辑层和表现层分开。数据库访问对象&#xff08;DAO&#xff09;和Acti…

如何在vue中使用拖动排序组件sortablejs

效果图&#xff1a; 1.首先&#xff0c;我们需要在vue项目中安装依赖&#xff1a; npm install -save sortablejs2.创建demo文件>demoTest.vue&#xff0c;直接附上实例代码&#xff1a; <template><div><div id"table-names"><div class&…

nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法

1、我们知道 nodeJS 是老外搞出来的&#xff0c;服务器放在了国外&#xff0c;国内的小朋友访问起来会比较慢&#xff0c;阿里巴巴的淘宝给出了有力支持&#xff0c;现在我们就将 nodeJS 的镜像地址切换为国内的淘宝镜像。 2、查看当前的镜像地址&#xff1a; npm get registr…

Optimism为 CQT提供价值 20 万美元的生态系统资助,以表彰其支持

Covalent Network&#xff08;CQT&#xff09; 是 Web3 生态系统中关键的“数据可用性”层&#xff0c;在与 Optimism Collective 多年的合作中取得了骄人的成果。Covalent Network&#xff08;CQT&#xff09;对于 Optimism 跨链数据的增长产生了直接的影响&#xff0c;而这一…

成为CSDN博客优质创作者或者博客专家吧

成为CSDN博客优质创作者或者博客专家吧 文章目录 成为CSDN博客优质创作者或者博客专家吧一、前言二、如何成为CSDN的博客专家1、2009年的要求和申请方式2、最新的CSDN博客专家要求和申请方式3、创作者身份认证4、CSDN所有认证的介绍 三、写博客的好处1、比较官方的说法&#xf…

labelimg 在pycharm下载使用

labelimg 使用数据标注工具 labelimg 制作数据集 在pycharm中搜索labelimg 选择版本安装 labelimg install 使用数据标注工具制作数据集 启动 带参数启动 1、cmd cd到指定目录 2、带参数启动标注工具 左侧可以选择切换为需要的数据格式 一些快捷键 和自动保存&#xff0c…

字节3面真题,LeetCode上hard难度,极具启发性题解

文章目录 &#x1f680;前言&#x1f680;LeetCode&#xff1a;41. 缺失的第一个正整数&#x1f680;思路&#x1f680;整个代码思路串一下&#x1f680;Code &#x1f680;前言 铁子们好啊&#xff01;阿辉来讲道题&#xff0c;这道题据说是23年字节3面真题&#xff0c;LeetC…

类加载器的三种+双亲委派机制大概了解

类加载器有哪几种分别是加载哪些类的 类加载一共可以分为三种&#xff1a; 分别为&#xff1a; 启动类加载器&#xff08;Bootstrap Class Loader&#xff09;&#xff1a;负责加载Java的核心类库&#xff0c;如java.lang包中的类。扩展类加载器&#xff08;Extension Class …

jsp教务管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 教务管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…