0

最近買収したLinodeサーバーにDjangoをデプロイするのはこれが初めてです。誰かが私のデプロイメントを調べて、厄介な問題を修正し、間違っているかどうかをアドバイスしてくれるかどうか知りたいです。

ディレクトリ構造

home\
    -public\
        -example.com\
            -public\
                -.htaccess
                -index.html
            -log\
            -application\
                -mysite\
                    -mysite\
                    -manage.py
                    -static\
                    -myapp\
                    -logs\

Djangoのデプロイメント構造はどうですか?

間違ったURLの命名

ドメイン「example.com」で「myapp」というDjangoアプリケーションをホストしました。Django Webサイトの指示に従って、アプリのurls.pyが「/myapp」で始まるようにしました。これにより、アプリのドメインが「example.com/myapp」になりました。

example.comが私が書いたDjangoアプリになるように設定するにはどうすればよいですか?example.comに移動すると、example.com/myappではなくアプリが読み込まれます。

さらに奇妙なのは、example.comが私のindex.htmlファイルをロードすると思っていたのに、代わりにDjangoのURLマッピングを見つけようとすることです...

Djangoログファイルの書き込み権限

マシンに「syncdb」または「collectstatic」のいずれかにSSHで接続するたびに、ロギングモジュールはsettings.pyファイルに名前を付けたログファイルを作成します。私はファイルの所有者であり、apache2(www-data)はファイルに書き込めないため、これは私にとって問題を引き起こします。Apacheサーバーを再起動する前に、コマンドごとにログファイルを手動で削除しなければならないのは面倒です。

これが私の/etc/apache2/sites-available/example.comファイルです:

# domain: example.com
# public: /home/setheron/public/example.com/

WSGIPythonPath /home/setheron/public/example.com/applications/mysite:/home/setheron/env/lib/python2.7/site-packages

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin setheron@setheron.com
  ServerName  www.example.example.com
  ServerAlias example.com

  WSGIScriptAlias / /home/setheron/public/example.com/applications/mysite/mysite/wsgi.py

  Alias /static/ /home/setheron/public/example.com/applications/mysite/static/
  <Directory /home/setheron/public/example.com/applications/mysite/static/>
        Order deny,allow
        Allow from all
  </Directory>

  <Directory /home/setheron/public/example.com/applications/mysite/mysite>
  <Files wsgi.py>
        Order deny,allow
        Allow from all
  </Files>
  </Directory>

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /home/setheron/public/example.com/public

  # Log file locations
  LogLevel warn
  ErrorLog  /home/setheron/public/example.com/log/error.log
  CustomLog /home/setheron/public/example.com/log/access.log combined
</VirtualHost>
4

1 に答える 1

1

Djangoにサイト全体を提供させたい場合は、パブリックディレクトリやインデックスなどを削除してください。/ static以外は、WSGIScriptAliasディレクティブのみが必要です。urls.pyを修正して、サイトが/myappではなく/から取得されるようにします。

于 2012-10-10T00:42:35.793 に答える