Django项目部署到阿里云服务器

Posted by cherich on

category: Django

Tags: django

基于Ubuntu16.04 + Python3(虚拟环境) + nginx + mysql + Django

先安装一些必要的环境,这些操作都是在你已经购买了阿里云服务器。并且在本地你已经搭建好了Django项目为前提。现在我们所做的就是把本地的环境在阿里云的服务器上重新搭一遍。 linux服务器默认是python2.7,如果你的项目是基于python3,必须先安装python3,建议安装python3的虚拟环境,可以参考我的另一篇文章:https://www.jianshu.com/p/0ae5f4c20a2e 假设我们已经进入linux下python3虚拟环境

下面我们开始部署

一、安装必要的软件

1、安装Django

先安装pip3:

sudo apt-get update
sudo apt-get install pip3

然后安装Django,这个地方要注意安装你所使用的Django版本:

pip3 install django2.0

这里我遇到了坑,明明在虚拟环境下安装了django,却提示没有django这个包,用pip list查看还是没有。经过查找发现 我是用的 sudo pip3 install django2.0、问题出在sudo上,于是我用 pip3 install django2.0,又提示没有权限、额,怎么肥事。又查找一番,发现通过root用户登录就可以了(如登录失败,重置密码)。 切换root 重置root密码 现在就可以安装你的项目相关依赖包了

修改好setting.py文件中数据库的用户名密码

进入项目中(manage.py同级),执行数据库迁移密令(删除migrations文件中之前的迁移文件):

python manage.py makemigrations
python manage.py migrate

测试运行,看来环境正常了 测试

2、安装nginx

sudo apt-get update
sudo apt-get install nginx

安装完成后。用你电脑的浏览器访问你的服务器的公网ip地址,看看安装成功没有! 安装成功

nginx 启动报错:Job for nginx.service failed because the control process exited with error code

解决办法可参考:https://blog.csdn.net/a1007720052/article/details/82255226

3、安装uwsgi 在你的本地电脑访问https://uwsgi-docs.readthedocs.io/en/latest/Download.html,下载Stable/LTS版本的源文件。

本地下解压这个源文件,然后用xftp把文件拖放到阿里云的Ubuntu的家目录(home)下,使用cd命令进入到该文件夹下,按顺序依次输入下面三条命令:

apt-get install python3-setuptools
apt-get install python3-dev
python3 setup.py install

4、安装MySQL(如果使用Django自带的数据库,跳过这步) 输入下面安装命令:

apt-get install mysql-server mysql-client

安装过程中会出现叫你输入密码,这个密码一定要记住!

安装完成输入下面命令:

mysql -u root -p

然后输入你刚刚设置的密码,进去之后输入下面命令:

create database news

创建一个news数据库,这个数据库名字跟你将来要还原的数据库名字一样,用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

二、配置项目

经过上面的步骤,如果一切顺利你就已经把所需要的软件和环境搭建好了,接下来我们就开始配置我们的django项目。

1、配置django项目 先用xftp把你的整个django项目拖到家目录(home)那里,然后开始配置nginx文件:

cd /etc/nginx/sites-available
vim default

使用cd命令进入到sites-available文件夹,文件夹下有一个default文件,使用vim打开它,找到default文件下的这段代码,如果没有就要添加上去:

server_name 192.168.31.140;
  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/WYQ/newsapi/media; 
}

192.168.31.140替换成你自己服务器公网IP地址;

static 那里也要替换成你自己Django项目的static路径;

media 同理换成你自己Django项目的media路径,这是媒体文件的文件夹;

注意:location后面是有空格的,必须要有!alias后面也是有空格的;include上面那句话也是要注释掉的!

修改成完成后使用 wq 保存退出(vim编辑器知识不懂的百度吧)

再输入下面命令重启服务:

sudo service nginx restart

2、配置uwsgi 在你的django项目的根目录下,也就是有manage.py文件的目录下,新建一个uwsgi.ini文件和一个run.log文件

然后我们使用vim编辑器编辑uwsgi.ini文件:

vim uwsgi.ini

文件打开是空的,我们添加如下代码:

[uwsgi]
chdir = /home/feixue/python/www/news
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 是你的django项目的根目录,我这里的项目名叫news;你要替换成你自己的路径;

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.31.140']

注意其中的IP地址要替换成你自己阿里云公网的IP。

如果你顺利的完成了上面的步骤,那么恭喜你!你可以直接去浏览器输入你的公网IP地址,就可以访问了!


注:转载本文,请与作者联系




如果觉得文章对您有价值,请作者喝杯咖啡吧

|
donate qrcode

欢迎通过微信与我联系

wechat qrcode

2 Comments latest