Jee*_*hah 3 python apache django ubuntu
当我尝试访问我的网站时出现以下错误:
Forbidden. You don't have permission to access / on this server.
我的虚拟主机文件如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static ~/myproject/static
<Directory ~/myproject/static>
Require all granted
</Directory>
<Directory ~/myproject/myprojectapi>
Order allow,deny
Require all granted
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
而 myapache2.conf
是默认文件。我在用Django 1.9 with Python 2.7 on Ubuntu 14.04
我已经尝试了大多数(如果不是全部)在站点上找到的解决方案,但由于某种原因,它们都不起作用。我遵循了本教程并授予了以下权限:
chmod 664 ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject
我也是作为root
用户操作的。
如果您需要任何其他信息,请告诉我;我将非常乐意提供它。任何帮助将不胜感激。
以下是 WSGI 行:
WSGIDaemonProcess goggest python-path=~/myproject:/usr/lib/python2.7/dist-packages
WSGIProcessGroup goggest
WSGIScriptAlias / ~/myproject/myprojectapi/wsgi.py
Run Code Online (Sandbox Code Playgroud)
以下是我解决(在很多帮助下)问题的方法。此答案假设您具有以下项目结构:
~/myproject
- myproject
- ...
- settings.py
- wsgi.py
- myapp
- ...
- static
- myapp
- ...
Run Code Online (Sandbox Code Playgroud)
题外话
我面临的问题是我的 apahce 出现错误,error.log
说它找不到settings
. 这个问题很可能是由你的 python-path 中的错误引起的。这部分假设您正在使用守护进程方法(文档推荐)。
wsgi.py
文件并确保它显示myproject.settings
而不是settings
inos.environ.setdefault(" ... ", " ... ")
WSGIDaemonProcess [any-name] python-path=/home/[username]/myproject:/usr/lib/python2.7/site-packages
这应该可以解决问题(至少对我来说是这样)。
修复 403 Forbidden(或至少绕过它)
以下是conf
为我完成工作的内容。它不是 apache2.conf
,我的没有什么新东西apache2.conf
,它仍然是默认的。以下在apache2/sites-available/000-default.conf
.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
DocumentRoot /home/[username]/myproject # (1)
Alias /static path/to/your/static_root # (2)
<Directory path/to/your/static_root>
Require all granted
</Directory>
<Directory /home/[username]/myproject/myproject>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
<Directory /home/[username]/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess [any-name] python-path=/home/[username]/myproject:/usr/lib/python2.7/site-packages
WSGIProcessGroup [any-name]
WSGIScriptAlias / /home/[username]/[myproject]/[myproject]/wsgi.py
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
回复:点 (1), (2)
(1). 将文档根目录更改为包含 django 项目文件的目录的头部。在这种情况下,我将其更改为/home/[username]/myproject
. 不要使用~/
参考。我试过了,它似乎没有成功。
(2). 如果您从同一台服务器提供静态文件,请确保在您的文件中设置了STATIC_ROOT
和。就我而言,我将要和到。当您决定部署时,您必须运行.STATIC_URL
settings.py
STATIC_URL
/static/
STATIC_ROOT
/var/www/[any-name]/static/
sudo python manage.py collectstatic
另外请注意,它应该是Alias /static
没有Alias /static/
(注意斜线)。文档显示/static/
但这是不正确的,并且在您尝试提供静态文件时不起作用(apache 没有完成路径)。
就是这样。所有这些步骤都使我的服务器启动并运行。如果您有任何问题,请随时发表评论,我会尽力提供帮助。祝你好运!
归档时间: |
|
查看次数: |
3517 次 |
最近记录: |