文章目录
概要
提示:这里可以添加技术概要
这几天自己做建设了一个django+bookstrap的文物藏品管理分析系统。在本地能够成正常运行,但是当我想上传到服务器的时候,把debug模式调成false的时候,静态资源却加载失败了,查阅了许多博文资料,其中良莠不齐,还是没能解决问题,最后综合了各大博主的解决方法,最终成功地加载出了静态资源,并且成功部署到腾讯云服务器上,故记录如下:
初始:本地项目效果展示
第一步:setting文件设置
DEBUG = False
ALLOWED_HOSTS = ['*']
import os
# DeBug = True 时使用
# STATIC_URL = '/static/'
# # 配置静态资源static存放路径
# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, 'static') # 配置完成后可以访问本地静态资源
# ]
# DEBUG = False 时使用
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# 媒体文件配置
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
第二步:总的urls的文件设置,而非app下的urls
'''debug=True'''
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
import ArtifactPro.urls
from django.urls import path, include
# urlpatterns = [
# path('admin/', admin.site.urls),
# path('', include(ArtifactPro.urls)),
# ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + \
# static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
'''debug=Flase'''
from django.contrib import admin
from django.urls import path, include, re_path # 新增
from django.conf import settings
from django.conf.urls.static import static
from django.views.static import serve
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(ArtifactPro.urls)),
# 新增
re_path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}),
re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + \
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
第三步:运行迁移数据代码
windows: python manage.py collectstatic
macoc: python3 manage.py collectstatic
运行过程中,如果遇到如下情况:
You have requested to collect static files at the destination
location as specified in your settings:
/Users/zhangxuhe/PycharmProjects/django项目/数字藏品VIP/Artifact/static
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel:
输入yes,继续即可。
最后:实现
此时,重启runserver,就可以访问静态资源了。 如果还是没访问到,可以尝试清除浏览器缓存。
以下是关于如何部署到云服务器上的思路
本已参考各大博主的解决思路,已经成功部署了一个django到服务器上,但是当我想部署另外一个django项目的时候发现端口被占用了,所以有了此文如下:
初始:服务器条件
我的服务器是腾讯云的轻量服务器,登录服务器后台如下图所示:
我们需要点击添加规则
然后, 选择所有IPV4地址,TCP协议,并且设置端口号
注意!!!这个端口号, 必须是你的服务器 可以允许你访问的端口号,不然的话你在服务器上仍然启动不了, 我就是因为这个被困了好久
查看端口号
我们利用以下的代码就可以查看电脑的端口号,并且选择一个未被使用的,而且允许访问的,并且在 腾讯云的服务期平台上设置好,你的端口这样的话才能被外界访问到!
netstat -ano
结果如下:
活动连接
协议 本地地址 外部地址 状态 PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 852
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 6072
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 992
TCP 0.0.0.0:5985 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:8001 0.0.0.0:0 LISTENING 5464
TCP 0.0.0.0:8077 0.0.0.0:0 LISTENING 5860
TCP 0.0.0.0:47001 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING 644
TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING 480
TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING 664
TCP 0.0.0.0:49667 0.0.0.0:0 LISTENING 1148
TCP 0.0.0.0:49669 0.0.0.0:0 LISTENING 1868
TCP 0.0.0.0:49676 0.0.0.0:0 LISTENING 624
TCP 10.0.16.11:139 0.0.0.0:0 LISTENING 4
TCP 10.0.16.11:3389 128.134.187.73:59736 ESTABLISHED 992
TCP 10.0.16.11:3389 211.138.116.181:29060 ESTABLISHED 992
TCP 10.0.16.11:49681 169.254.0.55:5574 ESTABLISHED 2228
TCP 10.0.16.11:49682 169.254.0.55:5574 ESTABLISHED 2228
TCP 10.0.16.11:49704 169.254.0.138:8186 ESTABLISHED 3312
TCP 10.0.16.11:50944 169.254.0.203:80 TIME_WAIT 0
TCP 127.0.0.1:5000 0.0.0.0:0 LISTENING 1344
TCP [::]:135 [::]:0 LISTENING 852
TCP [::]:445 [::]:0 LISTENING 4
TCP [::]:3389 [::]:0 LISTENING 992
TCP [::]:5985 [::]:0 LISTENING 4
TCP [::]:47001 [::]:0 LISTENING 4
TCP [::]:49664 [::]:0 LISTENING 644
TCP [::]:49665 [::]:0 LISTENING 480
TCP [::]:49666 [::]:0 LISTENING 664
TCP [::]:49667 [::]:0 LISTENING 1148
TCP [::]:49669 [::]:0 LISTENING 1868
TCP [::]:49676 [::]:0 LISTENING 624
UDP 0.0.0.0:123 *:* 1548
UDP 0.0.0.0:500 *:* 1148
UDP 0.0.0.0:3389 *:* 992
最后
最后就是用这个端口在服务器上启动django项目即可,代码如下:
python manage.py runserver 0.0.0.0:8001
注意,一定是要0.0.0.0, 冒号后面是你选择的端口号
小结
最后就能够成功部署上去啦