部署Django到阿里云服务器教程示例
作者:挽青 发布时间:2022-03-28 23:46:19
基于Ubuntu16.04 + Python3 + nginx + mysql + Django
接下来先安装这些必要的环境,这些操作都是在你已经购买了阿里云服务器。并且在本地你已经搭建好了Django博客。现在我们所做的就是把本地的环境在阿里云的服务器上重新搭一遍。
这里先简单的说一下阿里云服务器,我自己买的是云服务器ESC,需要配置一下安全组规则,就是端口,按下图配置即可,最重要的是22和88端口。
然后就是我们的服务器在实例里,我的是Ubuntu16.04,要部署到阿里云上点击远程连接,第一次点击会弹出一个密码,这就是你在阿里云登录远程连接的密码,一定要记好,就会弹出这一次!
输入密码之后就进入了Ubuntu命令行模式,这时候你输入你的Ubuntu账号,默认root,然后输入密码,密码是你在买服务器时候就设置的,成功之后就进入了Ubuntu系统,我们整个部署过程都是在这个Ubuntu系统里,命令行下进行。所以需要你多少掌握一些Ubuntu命令行的知识!
整个部署过程我们还是使用到一个重要的软件Xftp,这个软件就相当于Ubuntu的界面系统,我们通过它连接上我们阿里云服务器的Ubuntu系统,连接成功之后就可以直接在本地通过Xftp和阿里云Ubuntu系统传送文件。
打开Xftp新建会话,然后在主机输入你的阿里云服务器公网IP,下面的账号密码可以先不输入,点击确定后会提示你输入。
点击确定后会提示你输入账号,账号就是Ubuntu的默认root
然后输入密码
点击确定就进入了Ubuntu系统
这个左面显示的是你的桌面,右面新建会话显示的就是阿里云服务器上Ubuntu系统的目录结构,在这里我们可以直接从左面(你的本地桌面)往右面(阿里云的Ubuntu系统)拖拽文件,这个在后面我们部署的时候会非常方便!
一、安装必要的软件
1、安装Django
先安装pip3:
sudo apt-get update
sudo apt-get install pip3
然后安装Django,这个地方要注意安装你所使用的Django版本:
pip3 install django2.0
2、安装nginx
sudo apt-get update
sudo apt-get install nginx
安装完成后。用你电脑的浏览器访问你的服务器的公网ip地址,看看安装成功没有!
3、安装uwsgi
在你的本地电脑访问https://uwsgi-docs.readthedocs.io/en/latest/Download.html,下载Stable/LTS版本的源文件。
本地下解压这个源文件,然后用xftp把文件拖放到阿里云的Ubuntu的家目录(home)下,使用cd命令进入到该文件夹下,按顺序依次输入下面三条命令:
sudo apt-get install python3-setuptools
sudo apt-get install python3-dev
sudo python3 setup.py install
4、安装MySQL(如果使用Django自带的数据库,跳过这步)
输入下面安装命令:
sudo apt-get install mysql-server mysql-client
安装过程中会出现叫你输入密码,这个密码一定要记住!
安装完成输入下面命令:
mysql -u root -p
然后输入你刚刚设置的密码,进去之后输入下面命令:
create database myblog
创建一个myblog数据库,这个数据库名字跟你将来要还原的数据库名字一样,用xftp把你在本地备份的sql文件拖到阿里云Ubuntu的家目录(home)下。
还原数据库;进入家目录(home),输入下面命令:
sudo mysql -u root -p myblog<myblog.sql
配置mysql文件:
sudo vim/etc/mysql/mysql.conf.d/mysqld.cnf
然后注释掉下面这行代码
# band-address = localhost
二、配置项目
经过上面的步骤,如果一切顺利你就已经把所需要的软件和环境搭建好了,接下来我们就开始配置我们的博客项目。
1、配置博客项目
先用xftp把你的整个博客项目拖到家目录(home)那里,然后开始配置nginx文件:
cd /etc/nginx/sites-available
vim default
使用cd命令进入到sites-available文件夹,文件夹下有一个default文件,使用vim打开它,找到default文件下的这段代码,如果没有就要添加上去:
server_name 192.168.1.121;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
location /static {
alias /home/feixue/python/www/for_test/static;
}
location /media {
alias /home/ubuntu/blog/media;
}
192.168.1.121替换成你自己服务器公网IP地址;
static 那里也要替换成你自己Django项目的static路径;
media 同理换成你自己Django项目的media路径,这是媒体文件的文件夹;
注意:location后面是有空格的,必须要有!alias后面也是有空格的;include上面那句话也是要注释掉的!
修改成完成后使用 wq 保存退出(vim编辑器知识不懂的百度吧)
再输入下面命令重启服务:
sudo service nginx restart
2、配置uwsgi
在博客项目的根目录下,也就是有manage.py文件的目录下,新建一个uwsgi.ini文件和一个run.log文件
然后我们使用vim编辑器编辑uwsgi.ini文件:
vim uwsgi.ini
文件打开是空的,我们添加如下代码:
[uwsgi]
chdir = /home/feixue/python/www/for_test
module = for_test.wsgi:application
socket = 127.0.0.1:8000
master = true
daemonize = /home/feixue/pyth/for_test/run.log
disable-logging = true
chdir 是你的博客项目的根目录,我这里的项目名叫for_test;你要替换成你自己的路径;
moudule 是你的入口wsgi模块,将for_test替换成你自己的项目名称;
socket 是通信端口设置,这个设置不用改,复制即可;
master = true 表示以主进程模式运行,不用改,复制即可;
daemonize 是你的日志文件目录,这个路径就是刚刚新建的run.log文件的路径;
disable-logging = true 表示不记录正常信息,只记录错误信息,否则你的日志可能很快就爆满了!
3、配置MySQL(如果使用Django自带的数据库,这步可以跳过)
修改setting.py 所在目录的那个 init.py文件使用vim编辑器打开init.py文件输入一下代码:
import pymysql
pymysql.install_as_MySQLdb()
安装mysql驱动:
pip3 install pymysql
4、修改settings.py文件
打开settings.py文件找到下面代码并修改:
DEBUG = False
ALLOWED_HOSTS = ['192.168.178.128']
注意其中的IP地址要替换成你自己阿里云公网的IP。
如果你顺利的完成了上面的步骤,那么恭喜你!你可以直接去浏览器输入你的公网IP地址,就可以访问了!
接下来我还会更新一些在部署中遇到的问题和解决办法,如果你遇到什么问题欢迎留言!
来源:https://blog.csdn.net/qq_41590417/article/details/80509098


猜你喜欢
- 最近公司有一个日文项目,由于之前使用的是自己开发的中文CMS,并没有将语言包分离,在网站建设调试过程中出现了令人头疼的乱码问题。乱码出现的原
- 前言继老干妈、辣条之后,中国美颜软件在海外一夜成名,把所有人都幻化成了粉红小甜心。人类学者克里斯特尔·阿比丁博士认为,
- 前言:文章里用的Python环境是Anaconda3 2019.7这里测试的程序是找出所有1000以内的勾股数。a∈[1,
- 1、什么是全局变量?在Python中,全局变量指的是可以作用于函数内部和外部的变量。在这里有两种情况:在函数的外部定义和内部定义添加glob
- 写在前面贪吃蛇,吃豆人,迷宫,井字游戏......这些小游戏我相信大家小的时候肯定玩过,或许在某个时段还沉迷过.随着年龄的增长,这些小游戏离
- microtime() 函数返回当前 Unix 时间戳的微秒数。用于检测程序执行时间的函数,也是PHP内置的时间函数之一,在PHP中可以用于
- js部分setInterval("time_controller()",1000);function time_cont
- 关于维卷积的理解功能一维卷积一般用于处理文本数据,常用语自然语言处理中,输入一般是文本经过embedding的二维数据。定义tf.layer
- 本文实例讲述了Python通过PIL获取图片主要颜色并和颜色库进行对比的方法。分享给大家供大家参考。具体分析如下:这段代码主要用来从图片提取
- 求最大连续子序列的和是一个很经典很古老的面试题了,记得在刚毕业找工作面试那会也遇到过同款问题。今儿突然想起来,正好快到毕业季,又该是苦逼的应
- 解决golang编译提示dial tcp 172.217.160.113:443: connectex: A connection atte
- 在Windows下安装MySQL ,用了官方的配置向导生成了my.ini,本以为很安稳了,谁知十多个小时过去之后,系统响应非常慢,看资源管理
- 本文实例为大家分享了js动态时间显示 的具体代码,供大家参考,具体内容如下<!doctype html><html>
- 本文实例讲述了Python实现扩展内置类型的方法。分享给大家供大家参考,具体如下:简介除了实现新的类型的对象方式外,有时我们也可以通过扩展P
- (1)查看日期函数拓展phpinfo()<?phpphpinfo();打开上述页面之后,可以看到以下,证明已经安装日期拓展 浏览器输入
- file_get_contents的超时处理话说,从PHP5开始,file_get_content已经支持context了(手册上写着:5.
- 一、文件基本的操作1、open() 打开文件open() 方法用于打开一个文件,并返回File文件对象,在对文件进行处理过程都需要使用到这个
- 前言前段时间看到有人问如何使用Python实现多张图片组成文字的效果?觉得还挺有意思,于是尝试做了一下,刚好赶上端午节,所以打算从网上下载1
- 滑动拼图验证码可以算是滑块验证码的进阶版本,其验证机制相对复杂。本节将介绍两种滑动拼图验证码:初级版和高级版本。初级版滑块拼图验证码初级版滑
- 本文实例为大家分享了PyQt5如何能够创建在桌面屏幕上居中窗口的具体代码,供大家参考,具体内容如下下面的脚本说明我们如何能够创建在桌面屏幕上