首先,我在Windows 10中安装了Docker v4.20.1。
我可以在Windows Docker容器环境中成功运行Web应用程序。但是当我试图拉取我的映像并在Ubuntu VM(22.04)中运行时,它失败了。Apache 2的配置和文件结构是相同的。
如果我运行django测试服务器:
python /usr/src/app/caravan/manage.py runserver 0.0.0.0:8000
字符串
它可以成功运行并浏览页面(端口:8000).
但是如果我试图浏览由apache(port:80).它失败并显示“内部服务器错误”(500)
我已经检查了mod_wsgi包,它已经安装并且我启用了它:
sudo a2enmod wsgi
型
的
下面是apache 2配置:
<VirtualHost *:80>
ServerName localhost
ServerAdmin xxx@gmail.com
<Directory /usr/src/app/caravan/static>
Require all granted
</Directory>
<Directory /usr/src/app/caravan>
AddHandler wsgi-script .py
Options +ExecCGI
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# Static path
Alias /caravan/static/ /usr/src/app/caravan/static/
# wsgi settings
WSGIDaemonProcess site_caravan python-path=/usr/src/app/caravan:/home/ubuntu/my_env/lib/python3.10/site-packages
WSGIScriptAlias /caravan /usr/src/app/caravan/caravan/wsgi.py process-group=site_caravan application-group=%{GLOBAL}
</VirtualHost>
型
和docker状态:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7e9e00d653a phpmyadmin "/docker-entrypoint.…" 3 hours ago Up 2 hours 8080/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp phpmyadmin
14c291e12362 web "./entrypoint.sh" 3 hours ago Up 2 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp web
d71ffa8be50a db "docker-entrypoint.s…" 3 hours ago Up 2 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp db
型
并且mod_wsgi. so确实存在并已加载。
的
x1c4d 1x的
我真的不知道为什么会出现这样的错误...因为我的Windows docker容器和Ubuntu VM docker容器的环境是完全一样的。救命啊!如果有人知道原因的话非常感谢!!
1条答案
按热度按时间l7wslrjt1#
好吧我终于知道为什么了因为当Web应用尝试写入日志时存在权限问题,并且失败。
的数据
在我运行chmod 777到日志文件后,它现在可以正常工作了。