0%

django+uwsgi网站搭建

原文链接:django+uwsgi网站搭建

安装环境

1.1 创建venv环境

1
2
3
4
5
apt install python3.8-venv
python3 -m venv v
source ./v/bin/activate
pip3 install --upgrade pip
python3 -m pip install --upgrade setuptools

1.2 mysql服务安装

python提供两种mysql扩展,pymysql和mysqlclient,分别对应高开发和高性能
mysqlclient:mysqlclient需要编译安装

1
2
3
4
5
apt-get install libmysqlclient  libmysqlclient-dev
pip3 install --no-cache-dir --force-reinstall -Iv mysqlclient

#pymysql:
pip install pymysql

1.3 安装包

包括uwsgi,mysql,django服务

1
2
pip install -r requirements.txt
pip install uWSGI==2.0.21 Django==4.0 mysqlclient

2 django命令

2.1 项目创建

django-admin startproject projectname

2.2 应用创建

django-admin startapp appname

2.3 数据库迁移

1
2
3
4
# 创建数据库映射
python manage.py makemigrations django
# 将修改同步数据库
python manage.py migrate

2.4 本地运行测试

python manage.py runserver 0.0.0.0:8000

2.5 uwsgi命令

1
2
3
sudo killall -9 uwsgi #关闭所有uwsgi进程
uwsgi --stop uwsgi.pid #在当前django项目文件夹下 执行关闭
uwsgi --ini uwsgi.ini #在当前django项目文件夹下 执行启动

3 settings 配置

root/projectname/settings.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- ALLOWED_HOSTS = ['*'] 设置acl
- INSTALLED_APPS 增加创建的app
- MIDDLEWARE中禁用 django.middleware.csrf.CsrfViewMiddleware
- templates修改dir为对应模板文件夹地址:'DIRS': [os.path.join(BASE_DIR, 'templates')],
- 数据库配置如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'aidroid',
'USER': 'root', # 数据库用户名
'PASSWORD': 'root', # 密码
'HOST': 'localhost', # 主机
'PORT': '3306', # 数据库使用的端口
}
}

- 设置静态、媒体、登录路由和根目录
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
LOGIN_URL = '/safe/login'

4 uwsgi配置与部署

在项目根目录创建uwsgi.ini,安装下配置
迁移数据库

启动nginx,启动uwsgi

1
2
sudo service nginx restart #nginx重新加载(只有当修改了nginx配置时才重启)
uwsgi --ini uwsgi.ini #在当前django项目文件夹下 执行启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[uwsgi]

chdir = /www/wwwroot/aidroid.top/djangoweb
module = djangoweb.wsgi:application
; socket = /www/wwwroot/aidroid.top/djangoweb/uwsgi.sock
socket = 127.0.0.1:8001


daemonize = /www/wwwroot/aidroid.top/djangoweb/uwsgi.log
pidfile = /www/wwwroot/aidroid.top/djangoweb/uwsgi.pid

master = true
vacuum = true
processes = 10
max-requests = 1000
buffer-size = 65535