项目准备及项目发布
一、配置404页面及500页面
- 1、创建一个页面及创建视图函数
2、配置路由
# 配置404及500页面 handler404 = 'user.views.error404' handler500 = 'user.views.error500'
二、项目的修改
1、在
settings.py中关闭debugger模型DEBUG = False2、在
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.txt2、代码上传到服务器上(可以采用
git方式或者推荐使用本地同步到服务器,参考下一章节)3、进入服务器的虚拟环境安装包
pip3 install -r requirements.txt4、创建数据库
create database 数据库名 charset utf8;5、进入虚拟环境生成数据库文件
python manage.py makemigrations python manage.py migrate6、启动测试代码在服务器的情况
python manage.py runserver 0.0.0.0:80007、测试
uwsgiuwsgi --http 0.0.0.0:8000 --module 项目名.wsgi
四、关于三个文件的内容
1、收集项目中全部的静态文件
python manage.py collectstatic2、
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 default2、将项目里面的
项目名_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.ini4、客户端浏览器测试
六、补充说明一(解决端口被占用)
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 215762、查看某一个程序的进程
ps aux | grep 程序名称(nginx/mysql)
七、关于uwsgi命令补充
1、关闭全部的进程
killall -9 uwsgi(nginx)2、启动
uwsgi# 测试用 uwsgi uwsgi.ini # 后台启动 nohup uwsgi uwsgi.ini &3、查看当前
uwsgi的位置which uwsgi