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

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

1、mongodb-本机到服务器

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

2、Django-Github到服务器

在本机上写的django项目被我push到了GitHub仓库中,因此不需要用WinSCP传输,直接敲命令即可。cd到你想要保存项目的目录中,然后采用git clone+即可,但是要注意的是可能需要用根用户操作,也就是在克隆语句前面加上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  

你可能感兴趣的:(服务器,django,mongodb,python,linux,计算机网络,nginx)