项目准备及项目发布
一、配置404页面及500页面
- 1、创建一个页面及创建视图函数
2、配置路由
# 配置404及500页面 handler404 = 'user.views.error404' handler500 = 'user.views.error500'
二、项目的修改
1、在
settings.py
中关闭debugger
模型DEBUG = False
2、在
settings.py
中设置可访问的ALLOWED_HOSTS = ['*']
3、配置静态文件路径
1.
settings.py
中配置STATICFILES_ROOT = os.path.join(BASE_DIR, 'static/')
2.配置
url
地址from django.urls import path, include, re_path from django.conf import settings from django.views.static import serve urlpatterns = [ re_path(r'^static/(?P<path>.*)', serve, {"document_root": settings.STATICFILES_ROOT}), ]
三、测试代码
1、将本地虚拟环境的依赖环境包导出一份
pip3 freeze > requirements.txt
2、代码上传到服务器上(可以采用
git
方式或者推荐使用本地同步到服务器,参考下一章节)3、进入服务器的虚拟环境安装包
pip3 install -r requirements.txt
4、创建数据库
create database 数据库名 charset utf8;
5、进入虚拟环境生成数据库文件
python manage.py makemigrations python manage.py migrate
6、启动测试代码在服务器的情况
python manage.py runserver 0.0.0.0:8000
7、测试
uwsgi
uwsgi --http 0.0.0.0:8000 --module 项目名.wsgi
四、关于三个文件的内容
1、收集项目中全部的静态文件
python manage.py collectstatic
2、
uwsgi_params
文件,直接拷贝放到项目里面就可以,拷贝地址3、在项目目录下创建一个
项目名称_nginx.conf
的配置文件# 配置uwsgi的访问的 upstream django { # server unix:///path/to/your/mysite/mysite.sock; # for a file socket server 127.0.0.1:8001; # for a web port socket (we'll use this first) } # 配置nginx的请求 server { # the port your site will be served on listen 8000; # 端口号 # the domain name it will serve for server_name 1**.**.156.230; # 域名或者ip地址 charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste # 媒体的存放路径 location /media { alias /home/login_pro/media; # 你项目中的媒体存放路径(在本项目中创建一个media,使用pwd查看当前的位置) } location /static { alias /home/login_pro/static; # 你项目中静态文件的存放路径 } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include /home/login_pro/uwsgi_params; # 上一步你存放的uwsgi_params路径 } }
4、在项目下创建一个
uwsgi.ini
文件[uwsgi] # Django-related settings # the base directory (full path) chdir = /home/login_pro # Django's wsgi file wsgi-file = login_pro/wsgi.py # 虚拟机的全路径 home = /var/env/django_env # process-related settings # master master = true # maximum number of worker processes processes = 10 # the socket (use the full path to be safe,这个地方的端口号要和上面(项目名称_nginx.conf)监听的一样 http = :8001 # ... with appropriate permissions - may be needed chmod-socket = 664 # clear environment on exit vacuum = true
五、配置nginx
及发布项目
1、删除文件
/etc/nginx/sites-enabled
里面的default
文件cd /etc/nginx/sites-enabled rm -rf default
2、将项目里面的
项目名_nginx.conf
的文件移到/etc/nginx/sites-enabled
里面cd /home/login_pro mv login_pro_nginx.conf /etc/nginx/sites-enabled # 或者可以创建软连接(类似window系统中的创建桌面快捷方式) sudo ln -s 需要创建快捷方式的文件 创建到那个位置
3、启动测试(如果
uwsgi.ini
文件不是在本项目下前面要加地址)uwsgi --ini uwsgi.ini
4、客户端浏览器测试
六、补充说明一(解决端口被占用)
1、杀死端口
lsof -i :9000 # 查看9000号端口 (djangodemo)root@iZ941w016mwZ:/home/djangodemo/test02# lsof -i :9000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 21572 root 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN) nginx 21573 nobody 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN) nginx 21574 nobody 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN) nginx 21575 nobody 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN) nginx 21576 nobody 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN) # 杀死进程释放端口 sudo kill -9 21572 21573 21574 21575 21576
2、查看某一个程序的进程
ps aux | grep 程序名称(nginx/mysql)
七、关于uwsgi
命令补充
1、关闭全部的进程
killall -9 uwsgi(nginx)
2、启动
uwsgi
# 测试用 uwsgi uwsgi.ini # 后台启动 nohup uwsgi uwsgi.ini &
3、查看当前
uwsgi
的位置which uwsgi