原文链接: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 = 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
|