记一次Django+uWSGI+nginx部署流程
- 2023-03-14 21:05:00
- pjd
- 原创 506
准备工作:
# 导出第三方模块: pip freeze > requirements.txt # 收集静态文件完成后改名为static: python manage.py collectstatic # 导出数据库密码root: mysqldump -u {{数据库用户名}} -p {{数据库密码}} > {{数据库名}}.sql # 推送代码: git push # 服务器中拉取代码:略
服务器中虚拟环境准备
# 安装虚拟环境第三方包: pip install virtualenv # 创建虚拟环境(在项目根目录下创建): virtualenv {{虚拟环境名称}}/bin/activate # 进入虚拟环境: source {{虚拟环境名称}}/bin/activate # 退出虚拟环境: deactivate
虚拟环境中导入第三方模块
# 下载第三方模块,在虚拟环境中导入requirements.txt中的第三方模块: pip install -r requirements.txt
服务器的数据库准备
# 安装mysql驱动程序 pip install mysqlclient # 创建数据库: create database {{数据库名}}; # 导入数据库: source {{sql文件名}}.sql; # mysql创建用户: create user '{{用户名}}'@'localhost' identified by '{{密码}}'; # mysql用户授权 GRANT ALL ON *.* TO '{{用户名}}'@'localhost';
uwsgi安装和调试
# 服务器中uwsgi安装: pip install uwsgi # 服务器中uwsgi运行: uwsgi --ini uwsgi.ini # 服务器中uwsgi停止1: uwsgi --stop uwsgi.pid # 服务器中uwsgi停止2: pkill -f uwsgi -9 # 服务器中uwsgi重启: uwsgi --reload uwsgi.pid # 如果启动有错,需要检查 配置文件的参数是否设置有误。 # 修改uwsgi配置文件:vim uwsgi.ini
项目文件中创建uwsgi.ini文件,配置如下:
#添加配置选择 [uwsgi] #配置和nginx连接的socket连接 socket=127.0.0.1:3000 #配置项目路径,项目的所在目录 chdir=/www/wwwroot/{{项目根目录名}}/ #配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名,注意用绝对路径 wsgi-file=/www/wwwroot/{{项目根目录名}}/{{wsgi.py文件所在目录名}}/wsgi.py #配置启动的进程数 processes=4 #配置每个进程的线程数 threads=2 #配置启动管理主进程 master=True #配置存放主进程的进程号文件 pidfile=uwsgi.pid #配置dump日志记录 daemonize=uwsgi.log
启动运行uwsgi
#启动运行uwsgi uwsgi --ini uwsgi.ini显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功
nginx配置文件nginx.conf加入以下内容
events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name quxuer.com www.quxuer.com; #改为自己的域名,没域名修改为127.0.0.1:80 charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:3000; #端口要和uwsgi里配置的一样 uwsgi_param UWSGI_SCRIPT {{wsgi.py所在的目录名}}.wsgi; #wsgi.py所在的目录名+.wsgi uwsgi_param UWSGI_CHDIR /www/wwwroot/{{项目根目录名}}/; #项目路径 } location /static/ { alias /www/wwwroot/{{项目根目录名}}/static/; #静态资源路径 } } }