1.关闭Django项目中的debug,并且设置好以下内容:
# 下面这仨static关系详解:https://blog.csdn.net/qq_24551305/article/details/84865025
# 这个讲解也挺好:https://blog.csdn.net/xujin0/article/details/83421626
# 对外提供WEB访问时的URL地址
STATIC_URL = '/static/'
# 执行collectstatic命令后会将项目中的静态文件(包括STATICFILES_DIRS、自带admin的静态文件)收集到该目录下面来(所以不应该在该目录下面放置自己的一些静态文件,因为会覆盖掉)
STATIC_ROOT = os.path.join(BASE_DIR, 'assert/')
# 以下不是必须的,各个app共用的文件可以放在这,不能包含STATIC_ROOT路径,STATIC_ROOT 与 STATICFILES_DIRS的路径不能重复
# STATICFILES_DIRS告诉django,首先到STATICFILES_DIRS里面寻找静态文件,其次再到各个app的static文件夹里面找(注意,django查找静态文件是惰性查找,查找到第一个,就停止查找了)
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "commonStatic/")
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'
2.Django项目传到服务器(千万不要放到root目录,可以放到/srv/或/www/目录)
3.设置Nginx的config:
http {
...
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
# 包含uwsgi请求的参数
include uwsgi_params;
# 转交请求给uwsgi服务器 (uwsgi服务器的ip和端口号)
uwsgi_pass 127.0.0.1:8000; # 单个uwsgi服务器(不需要负载均衡)
index index.html index.htm;
}
location /static/ {
# 指定静态文件存放的目录 (需要修改/var/...目录的操作权限。 $ chmod 777 /var)
alias /srv/SuccplusAdmin/assert/;
}
4.在服务器上转好python,并装好pipenv,安装好Django项目中所需要的库
5.收集资源python manage.py collectstatic
6.额外安装pip install uwsgi
7.在Django根目录下,创建并配置uwsgi.ini:
[uwsgi]
# 使用Nginx做反向代理时使用socket
socket=127.0.0.1:8000
# 不通过Nginx反向代理,直接做web服务器时使用http
#http=127.0.0.1:8000
# 项目目录
chdir=/srv/SuccplusAdmin/
# 项目中wsgi.py文件的目录 (相对于项目目录)
wsgi-file=SuccplusAdmin/wsgi.py
# 指定工作进程数 (接收请求的进程)
processes=4
# 指定进程中的线程数
threads=2
master=True
# 保存主进程的pid (uwsgi.pid文件位置相对于项目目录)
pidfile=uwsgi.pid
# 设置成守护进程 (后台运行) (uwsgi.log保存日志信息)
daemonize=uwsgi.log
# 设置虚拟环境的路径
virtualenv=/root/.local/share/virtualenvs/SuccplusAdmin-eGBWef1F
# 配置详解(可以负载均衡):
# https://www.cnblogs.com/frchen/p/5709533.html
# https://blog.csdn.net/houyanhua1/article/details/85266262
# https://segmentfault.com/q/1010000007077485
# https://www.cnblogs.com/felixwang2/p/10222735.html
# https://www.cnblogs.com/tortoise512/p/10825075.html
8.启动网站(可以提前先开debug,runserver测试一下能否跑通,跑通后再关掉):
# 在Django项目根目录下:
uwsgi --ini uwsgi.ini # 开启服务
uwsgi --stop uwsgi.pip # 关闭服务器
9.如果发现没加载资源的话,好好setting.py里的static_root是否设置正确,再不行的话设置一下static_root权限