网站建设

部署Django到阿里云服务器教程(2)

Jaydon · 10月9日 · 2018年 ·

基于Ubuntu16.04 + Python3 + nginx + mysql + Django

一、安装必要的软件

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地址,就可以访问了!

接下来我还会更新一些在部署中遇到的问题和解决办法,如果你遇到什么问题欢迎留言!

24 条回应
  1. 一顾倾人诚2019-8-23 · 8:56

    hi 博主,问个问题啊, django项目是只能部署在 云服务器ECS上么? 云虚拟主机这种不行么? 我看了下价格 差10多倍了云虚拟主机 一年差不多两三百 ,云服务器ECS 一个月就要这个价格了
    然后 怎么感觉 每个供应商的名字都不一样 腾讯云 京东云 阿里云 华为云

    • Jaydon2019-8-23 · 9:00

      虚拟主机不行,虚拟主机里面都是给你装好系统那种,你自己不能随意配置环境;买服务器就行,不一定非得云服务器ECS,如果你是学生的话,有9.9一个月的;建议选择阿里云,毕竟大厂商!!

      • 一顾倾人诚2019-8-23 · 9:02

        好的 谢谢博主

  2. gulng2019-4-7 · 21:41

    想了解下,学生机的云服务器ESC也类似配置么

    • Jaydon2019-4-8 · 8:49

      是的,阿里云9.9的学生机就可以!

  3. 茵夏2019-3-2 · 19:17

    博主你好,我在cd更改完sites-available下的default文件后,进行sudo service nginx restart时,报了sudo: unable to resolve host,输入IP也是502,后面步骤也完成了。

    • Jaydon2019-3-5 · 9:01

      检查检查之前的配置代码,先仔细查查

  4. christian2019-1-6 · 13:28

    在项目上不用配置吗 ,我试了 不行哎

    • Jaydon2019-1-7 · 8:28

      域名需要备案等一系列操作

      • christian2019-1-7 · 8:44

        目前,我所完成的工作有 项目通过nginx和uwsgi已经在阿里云上部署成功,通过公网ip可以访问;域名已经备案成功,且在解析成功;麻烦你帮我分析下,我还漏了什么?

        • Jaydon2019-1-7 · 10:25

          可以加个微信沟通

          • christian2019-1-7 · 10:31

            好的 谢谢啦

  5. christian2019-1-4 · 14:09

    博主你好 请问怎么绑定域名呢 谢谢

    • Jaydon2019-1-4 · 17:34

      域名绑定,在阿里云控制台,直接解析在阿里云购买的域名到你的网站IP上

  6. Tom2018-12-23 · 16:17

    老铁 我和你问题好像一样,设置了default里面的uwsgi_pass 127.0.0.1 的参数后就会出现502,几天了还无果,不知什么原因

    • Jaydon2018-12-24 · 12:39

      sudo service nginx restart
      sudo killall -9 uwsgi
      sudo uwsgi uwsgi.ini

      分别输入上述三条重启命令,然后再看一下,如果还不行你加我微信

      • 鼬先生2019-2-6 · 23:28

        老兄我不可以

      • ll2019-3-27 · 9:33

        博主你好,我试了这些命令,也检查了代码,还是502,还是没有结果,会不会是软件安装的有问题啊?😭

  7. 叶山修2018-12-5 · 21:28

    博主您好,我也按着您的教程操作了,我是在AWS的EC2服务器上做的,本来看到了Welcome to nginx!的界面,但是在改了default之后就变成了502,启动uwsgi变成了The requested URL / was not found on this server. 网上的教程我差不多都看了,现在问题被锁定在nginx没有正确监听80上了,输入lsof -i:80什么都没有,想请问一下您知道问题出在哪吗?谢谢!

  8. ToDr2018-12-1 · 15:00

    博主,你之前的主题挺不错的,怎么换成这种风格了

    • Jaydon2018-12-2 · 11:23

      终究活成了自己最讨厌的样子...

  9. 学习2018-11-20 · 23:17

    博主,您好,我按照你的教程操作,也出现上面那位同仁的问题,想咨询一下你说的 解析阿里云服务器 是指哪步呢?

  10. Lemon2018-10-28 · 16:21

    您好,先是感谢您的分享。
    我按照上面的教程做了,为什么打开后还是Welcome to nginx!

    • Jaydon2018-10-31 · 10:45

      这说明你的nginx部署是没问题的,问题出在解析阿里云服务器那,你仔细检查一下相关步骤和代码,一定要仔细!!!