Django3项目部署到Ubuntu使用Apache服务器和MySQL数据库

简述

在将Django3部署在阿里云Ubuntu18.04服务器上的时候遇到了无数个坑,这里记录一下过程,有坑的地方会标注出来。
我这里使用的是Ubuntu18.04LTS版本,基本没装什么软件,比较干净

教程较长,阅读并操作时间大概50分钟,建议直接看本人视频教程
链接: Django3项目部署到Apache服务器并使用MySQL数据库.

查看Python版本

在阿里云服务器上默认安装了python2,所以只需要安装python3就可以了,如果你是LTS版可以全部安装,下面把两个版本的安装方式都贴上

sudo apt install python3       
sudo apt install python

升级软件

拿到新系统的基本操作

sudo apt update && apt upgrade

创建网站目录

在/目录下创建目录

cd /
mkdir testdjangoproject
cd testdjangoproject
mkdir site
mkdir django
mkdir auth
cd site
mkdir logs
mkdir public

目录结构如下

-testdjangoproject
	-site
		-logs
		-public
	-django
	-auth

安装pip3

安装pip3

sudo apt install python3-pip

使用pip3安装Python虚拟环境

sudo pip3 install virtualenv

安装完成后可以使用

pip3 freeze

查看安装的包

创建虚拟环境并进入

cd /testdjangoproject/
virtualenv venv
source venv/bin/activate

进入成功则会发现在命令行前面有一个(venv)的标志,如果不成功检查pip版本是否为最新版(如果不是请升级)
在这里插入图片描述

在虚拟环境中安装django

pip install django

创建Django工程

进入testdjangoproject/django目录下

cd /testdjangoproject/django/
django-admin startproject tutorial

然后修改工程下的setting文件中的ALLOWED_HOSTS参数

ALLOWED_HOSTS=['你的服务器IP地址']

测试Django是否有问题

进入django工程目录的文件目录下(testdjangoproject/django/tutorial/)启动django自带的服务器
此时访问浏览器能够看到django的界面说明Django工程没有问题

python manage.py runserver 0.0.0.0:8000

安装Mysql

sudo apt install mysql-server
sudo mysql_secure_installation

第二个安装过程中会出现很多选项,下面是翻译

–为root用户设置密码 自己设置
–删除匿名账号 y
–取消root用户远程登录 y
–删除test库和对test库的访问权限 y
–刷新授权表使修改生效 y

创建数据库

进入mysql命令行

mysql

下面是sql语句,作用是创建tutorial数据库,创建admin用户,给admin用户赋权,刷新

SHOW DATABASES;
CREATE DATABASE tutorial;
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin123!@#ADMIN';  
GRANT ALL PRIVILEGES ON tutorial.* to 'admin'@'localhost';
FLUSH PRIVILEGES;

链接Mysql和Django

很多人这里直接安装mysqlclient,是一定会报错的,因为没有安装python的dev,下面是正确安装顺序

sudo apt install python3-dev
sudo apt install libmysqlclient-dev
pip install mysqlclient

检查是否安装成功

pip freeze

进入testdjangoproject/auth/文件夹下创建mysql.cnf文件
这里写的是Mysql的链接参数

[client]
database = 'tutorial'
user = 'admin'
password = 'admin123!@#ADMIN'
default-character-set='utf8'

重启mysql

sudo systemctl restart mysql

进入django的工程目录,找到setting
修改DATAVASES属性

这里是将上面我们创建的文件引用过来,并且使用Django自带的mysql数据库引擎

DATAVASES = {
	'default':{
		'ENGINE':'django.db.backends.mysql',
		'OPTIONS':{
			'read_default_file':'/testdjangoproject/auth/mysql.cnf',
		},
	}
}

检查下是否正常

python manage.py check

迁移数据库

python manage.py migrate

创建超级管理员

python manage.py createsuperuser

用户名:admin 密码:root

启动自带服务器查看后台是否正常

python manage.py runserver 0.0.0.0:8000

到浏览器输入网址后面加上/admin
例如 127.0.0.1:8000/admin

安装并设置Apache2

sudo apt install apache2 libapache2-mod-wsgi-py3

在浏览器直接输入ip出现apache界面说明正常启动了apache
进入cd /etc/apache2/sites-available/下
备份一下初始文件(这一步无所谓的)

cp 000-default.config 000-default.config.bak

编辑000-default.config文件
在其中添加下面的代码,使用WSGI来链接Apache和Django的Python脚本
本文后面有该文件的完整截图,请继续翻阅

ErrorLog /testdjangoproject/site/logs/error.log
CustomLog /testdjangoproject/site/access.log combined

<Directory /testdjangoproject/django/tutorial/tutorial/>
	<Files wsgi.py>
		Require all granted
	</Files>
</Directory>

WSGIDaemonProcess tutorial python-path=/testdjangoproject/django/tutorial python-home=/testdjangoproject/venv
WSGIProcessGroup tutorial
WSGIScriptAlias / /testdjangoproject/django/tutorial/tutorial/wsgi.py

检查是否有错误

sudo apachectl configtest

这里可能出现的问题有几种,一种是路径写错了,一种是apache的配置有问题,这里解决一下apache设置问题(阿里云的基本不存在这个问题)
打开配置文件

sudo vim /etc/apache2/apache2.conf

最后加入一句

ServerName localhost:80

即可
重启apache服务器

sudo service apache2 restart

在浏览器直接输入服务器IP即可正常显示Django的欢迎界面

加入静态文件目录

创建静态文件目录

cd /testdjangoproject/site/public
mkdir static

进入Django项目的Setting中,在结尾添加静态文件路径

STATIC_ROOT='/testdjangoproject/site/public/static'

回到Django目录,收集静态文件

python manage.py collectstatic

还需要再次更改apache的设置,让其识别到静态文件的文件夹

cd /etc/apache2/sites-available/
vim 000-default.config

将文件中间部分修改为(这里包含了之前修改的部分)

ErrorLog /testdjangoproject/site/logs/error.log
CustomLog /testdjangoproject/siti/access.log combined

alias /static /testdjangoproject/site/public/static
<Directory /testdjangoproject/site/public/static>
	Require all granted
</Directory>

<Directory /testdjangoproject/django/tutorial/tutorial/>
	<Files wsgi.py>
		Require all granted
	</Files>
</Directory>

WSGIDaemonProcess tutorial python-path=/testdjangoproject/django/tutorial python-home=/tutorial/venv
WSGIProcessGroup tutorial
WSGIScriptAlias / /testdjangoproject/django/tutorial/tutorial/wsgi.py

这是该文件完整截图
在这里插入图片描述
检查是否有错误

sudo apachectl configtest

重启apache服务器

sudo service apache2 restart

重新进入admin界面
例如 127.0.0.1/admin
所有css正常显示,说明静态目录添加完毕

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于在 Ubuntu 上部署项目,有多种方法可以选择,以下是一般的步骤: 1. 确保你的 Ubuntu 系统已经安装了所需的软件和依赖项,如 Python数据库等。你可以使用包管理器(如apt)来安装它们。 2. 将你的项目文件传输到 Ubuntu 服务器上,可以使用FTP、SCP或其他文件传输工具。 3. 创建一个虚拟环境(可选),这将帮助你隔离项目所需的依赖项。使用工具如 virtualenv 或 conda 来创建和管理虚拟环境。 4. 安装项目所需的依赖项。在虚拟环境中使用 pip(Python 包管理器)来安装项目所需的库和模块。 5. 配置和安装数据库(如果项目需要)。根据你使用数据库类型(例如 MySQL、PostgreSQL),创建数据库和用户,并将其配置到项目中。 6. 配置项目的设置文件。根据你的项目需求,修改配置文件以便正确连接到数据库、设置路径等。 7. 运行数据库迁移(如果项目需要)。使用特定于你的框架或 ORM(如 Django、Flask)的命令来运行数据库迁移脚本。 8. 设置 Web 服务器(如 Nginx 或 Apache)以便正确地将请求转发到你的应用程序。配置服务器块/虚拟主机并设置正确的域名和端口。 9. 配置服务器防火墙和网络设置,确保只有需要的端口对外开放,并保证服务器的安全性。 10. 启动你的应用程序。使用特定于你的框架或应用程序的命令来启动服务器,如 `python manage.py runserver` 或 `gunicorn app:app`。 这只是一个大致的部署过程,具体步骤可能会因项目类型、框架和要求的不同而有所变化。确保仔细阅读相关文档,并根据你的项目需求进行相应配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值