项目环境
服务器:阿里云ECS;系统版本:centos8.0;Nginx版本:0.14.1;uWSGI版本:2.0.18;Python版本:3.6.0。
项目依赖及版本如下:
Django==2.0django-mdeditor==0.1.17.1django-model-utils==4.0.0django-notifications-hq==1.6.0Markdown==3.2.1PyMySQL==0.9.3
登录阿里云控制台开放端口
- 配置http80 和 Django服务的端口
- 配置uWSGI启动Django服务
- 在项目根目录下创建
uwsgi.ini
文件,vi uwsgi.ini
输入以下内容:
[uwsgi]#使用nginx连接时使用socket=127.0.0.1:8000#直接做web服务器使用 python manage.py runserver ip:port#http=0.0.0.0:8000#项目目录chdir=/root/project/myblog#项目中wsgi.py文件的目录,相对于项目目录wsgi-file=myblog/wsgi.py#指定启动的工作进程数processes=2#指定工作进程中的线程数threads=2#指定在这些进程里有一个主进程master=True#保存启动之后主进程的pidpidfile=uwsgi.pid#设置uwsgi后台运行,uwsgi.log保存日志信息daemonize=uwsgi.log#设置日志文件最大字节数log-maxsize = 100000#设置每个进程最大请求数max-requests = 1000#设置虚拟环境的路径virtualenv=/root/anaconda3/envs/myblog
也可参考Django官方文档,Nginx中文文档自定义配置。
- uwsgi命令
启动服务:uwsgi --ini uwsgi.ini停止服务:uwsgi --stop uwsgi.pid
配置Nginx启动静态文件服务
- 进入
/etc/nginx/conf.d
文件夹,新建自己的项目配置文件myproject.conf
,输入下面的配置。
server { listen 80; server_name ip; charset utf-8; client_max_body_size 75M; location /static { alias /root/project/myblog/static; } location /media { alias /root/project/myblog/media; } location / { uwsgi_pass 127.0.0.1:8000; include /etc/nginx/uwsgi_params; }}
- 重启Nginx服务
service nginx restart
遇到的问题及解决方法
问题一:nginx静态资源文件无法访问,403 forbidden错误
解决方法: 在 nginx.conf
配置文件头部加user root
user root;worker_processes 8;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker\_connections 1024;}... ...
如果后台站点样式无法显示,则是未进行静态文件收集操作的原因,可在终端输入python manage.py collectstatic
解决。前提是许在settings.py
文件配置好STATIC_ROOT = os.path.join(BASE_DIR, "static")
。