将django项目部署到阿里云服务器

最近自己搭建了一个网站,想着把它部署到阿里云上,遇到了各种bug,好在一步步查询解决,成功上传,再此记录一下,同时也感谢在我遇到bug时大佬们的博客为我解答

  • 注意首先自己的项目必须能在本地运行
  • 我使用的版本号
    • django==3.0.8
    • python3.8
  • 阿里云我选择的是Ubuntu 20.04版本
  • nginx与uwsgi安装最新版即可
初始化操作
  • 需要安装两个操作云服务的软件xshell和xftp
  • 也直接直接在阿里云里面使用网页远程连接与上传文件
  • 我是同时使用了xftp和xshell
  • 用xftp用来上传文件
    xftp
  • 用xshell来操作我的云服务器
    xshell
安装服务器的环境
  • 不同的项目肯定要创建不同的虚拟环境,首先创建虚拟环境

sudo apt-get update
sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

  • 配置文件打开/.bashrc

vim ~/.bashrc
在末尾添加以下数据
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME = $HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
运行source ~/.bashrc

  • 创建虚拟环境

mkvirtualenv -p python3 环境名
进入虚拟环境
workon 环境名

  • 在虚拟环境里面安装django项目需要的包
  • pip3 install -r 包文件
数据库
  • 安装mysql数据库

apt-get install mysql-server
apt-get install mysql-client

  • 进入数据库

mysql -uroot -p

  • 创建一个和自己django项目连接的数据库一样的名字

create database 数据库名

  • 注意!!! 注意!!! 注意!!!
  • 在这里运行项目是会报一个错误,我的数据库里面是没有数据的,可以按以下来操作,如果数据库还有数据,请参考其他大佬的博客
  • 在迁移数据库时会报错误django.db.utils.InternalError: (1698, “Access denied for user ‘root’@‘localhost’”)
  • 解决办法,创建一个新的数据库用户

create user ‘用户名’@’%’ identified by ‘密码’;
grant all on . to ‘用户名’@’%’;
flush privileges;

  • 将django项目里面连接的数据库改成自己新创建的用户即可
  • 生成迁移文件

python manage.py makemigrations

  • 执行迁移文件

python manage.py migrate

  • 配置数据库

vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释本地
bind-address = localhost

  • 创建django后台管理

python manage.py createsuperuser

  • 本地项目现在已经部署到阿里云上了执行python manage.py runserver就可以看到和本地运行一样的效果了
uwsgi
  • 首先需要在自己django项目中创建wsgi.py文件才可以使用uwsgi
  • 安装

apt-get install build-essential python3
apt-get install python3-dev
pip3 install uwsgi

  • 测试是否安装成功
  • 编写一个test.py文件
def application(env, start_response):
	start_response('200 OK',[('Content-Type,'text/html')])
	return [b'hello']
  • 输入uwsgi --http-socket :80 --wsgi-file test.py(注意:socket和:之间一定要有空格)
  • 在浏览器输入阿里云公网ip即可显示hello
  • 在和manage.py同级目录下创建uwsgi.ini
  • 编辑uwsgi.ini

[uwsgi]
chdir = /home/xxxx # 项目的路径
http = 127.0.0.1:8080 # 直接使用uwsgi坐web服务器时
#socket = :8080 # 和nginx配套使用时设置的端口
master = true
processes = 5 # 指定进程数
threads = 2 # 指定线程数
daemonize = /home/xxxxxx/uwsgi.log # 创建日志文件
disable-logging = true # 只收集错误日志
module = xxxx.wsgi # wsgi文件的路径
wsgi-file = xxxxx/wsgi.py # 项目中wsgi.py位置
pidfile = /home/xxx/uwsgi.pid # 保存启动之后主进程的pid

  • 配置setting.py文件
    • DEBUG = False
    • ALLOWED_HOSTS =[’*’]
  • 启动uwsgi

uwsgi --ini uwsgi.ini

  • 在浏览器输入阿里云公网ip即可显示
nginx
  • nginx处理静态文件
  • 安装

sudo apt-get install nginx

  • 验证

service nginx start

  • 在浏览器输入公网ip即可出现欢迎界面,安装成功
  • nginx命令

service nginx start # 启动
service nginx stop # 停止
service nginx resload # 重启
systemctl status nginx # 查看nginx状态
nginx -t # 检查nginx是否正常运行

  • 配置nginx,修改配置文件/etc/nginx/sites-available/default文件
upstream django {
	server 127.0.0.1:8080;

}
server {
	listen 80;
	server_name xxx.xxx.xx.xx; # 服务器公网ip
	charset utf-8;
	
	client_max_body_size 75M;

	location / {
		uwsgi_pass 127.0.0.1:8080;
		include /etc/nginx/uwsgi_params;
	}

	location /static { 
		alias /home/xxxxx/static; # 静态文件路径
	}
}
  • 重启nginx和uwsgi

service nginx reload
uwsgi --ini uwsgi.ini

整个项目部署完成
  • 2
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值