You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署到Antagonist.nl的Django项目缺失静态/媒体文件及Admin CSS

解决Antagonist.nl服务器上Django静态/媒体文件及Admin CSS丢失问题

针对你部署后遇到的静态文件无法访问、媒体文件上传失效、Admin无样式的问题,结合Antagonist.nl这类共享主机的特性,给出以下解决方案:

1. 修正静态文件权限与服务器路由配置

1.1 确保静态文件权限正确

执行collectstatic后,静态文件目录的权限可能导致服务器无法读取,运行以下命令:

chmod -R 755 /home/deb142470/domains/my-domain.nl/public_html/static
chown -R your-username:www-data /home/deb142470/domains/my-domain.nl/public_html/static

(注:your-username替换为你在服务器上的登录用户名,www-data为服务器运行Web服务的用户,若主机用的是其他用户可替换为对应名称)

1.2 配置Apache路由(通过.htaccess)

在public_html目录下创建或修改.htaccess文件,添加静态文件和媒体文件的别名路由,让服务器直接处理这些请求(避免Django接管):

# 静态文件路由
Alias /static/ /home/deb142470/domains/my-domain.nl/public_html/static/
<Directory /home/deb142470/domains/my-domain.nl/public_html/static>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

# 媒体文件路由
Alias /media/ /home/deb142470/domains/my-domain.nl/public_html/media/
<Directory /home/deb142470/domains/my-domain.nl/public_html/media>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

# 将动态请求转发给Django WSGI
WSGIScriptAlias / /home/deb142470/domains/my-domain.nl/[你的项目根目录]/wsgi.py
<Directory /home/deb142470/domains/my-domain.nl/[你的项目根目录]>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

注意替换[你的项目根目录]为实际项目所在路径(比如my_ecommerce_project)。

2. 修正媒体文件配置

2.1 调整MEDIA_ROOT路径

当前MEDIA_ROOT放在static目录下不合理,修改settings.py:

MEDIA_URL = '/media/'
MEDIA_ROOT = '/home/deb142470/domains/my-domain.nl/public_html/media'

2.2 设置媒体目录写入权限

服务器需要能写入媒体目录才能保存上传文件,运行:

mkdir -p /home/deb142470/domains/my-domain.nl/public_html/media
chmod -R 775 /home/deb142470/domains/my-domain.nl/public_html/media
chown -R your-username:www-data /home/deb142470/domains/my-domain.nl/public_html/media

3. 优化Django生产环境配置

3.1 移除DEBUG模式下的静态文件路由

在DEBUG=False时,Django不会处理静态/媒体文件请求,所以urls.py中的static(...)配置无效,可注释掉:

# 注释掉这行,生产环境由服务器直接处理媒体文件
# urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

3.2 重新执行collectstatic

确保Admin的静态文件被正确复制:

python manage.py collectstatic --noinput

4. 验证配置

  1. 访问https://my-domain.nl/static/admin/css/base.css,确认能正常加载Admin的CSS文件
  2. 上传一个测试媒体文件,检查public_html/media目录下是否生成对应文件
  3. 刷新Admin页面,确认样式正常显示

内容的提问来源于stack exchange,提问作者bailofwZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 01:20:35