Red HatからOpenShiftホスティングにdjangoアプリケーションをデプロイする

現在のクラウドホスティングの利点について説明する必要はありません。また、Red Hatはすべての特典を無料で試すこともできます(もちろん、いくつかの制限があります)。

あなたはホスティングにお金を払わずに取得しますか?





必要な言語が見つからない場合は、Do-It-Yourselfアプリケーションを作成し、好きなように構成できます。



Djangoアプリケーションの展開を検討します。

私はインターネット上でたくさんのマニュアルを見つけましたが、落とし穴は私をいじくり回しました。 以下で説明します。



そのため、 openshift.comに登録した後、 rhc(私たちに割り当てられたリソースを管理するためのツール)をインストールすることをお勧めします。 なぜそれが良いのですか? はい、Webブラウザからすべてを簡単に構成できますが、コンソールは特にLinuxではるかにシンプルで高速です。



次のようにrhcをubuntuにインストールできます。



$ sudo yum install rubygems git $ sudo gem install rhc
      
      





コンソールからログインします:



 $ rhc setup
      
      





できた オンラインです。

Pythonアプリケーションを作成します。



 $ rhc app create habr python-2.6
      
      





habrはもちろんアプリケーションの名前です。

このユーティリティは、アプリケーションが作成されて利用可能であることを報告します: http : //habr-lamazavr.rhcloud.com/

、アプリケーションのgitアドレス(kudanibutをコピー)。

このページが表示されます。







それでは、djangoのインストールに移りましょう。 wsgiディレクトリに移動して、djangoアプリケーションを作成します。



 $ cd habr/wsgi/ $ django-admin startproject habr
      
      





wsgiディレクトリのアプリケーションファイルを編集します。



 #!/usr/bin/env python # some original codes we need import os virtenv = os.environ['APPDIR'] + '/virtenv/' os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib/python2.6/site-packages') virtualenv = os.path.join(virtenv, 'bin/activate_this.py') try: execfile(virtualenv, dict(__file__=virtualenv)) except: pass # new codes we adding for Django import sys import django.core.handlers.wsgi os.environ['DJANGO_SETTINGS_MODULE'] = os.environ['OPENSHIFT_APP_NAME']+'.settings' sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', os.environ['OPENSHIFT_APP_NAME'])) application = django.core.handlers.wsgi.WSGIHandler()
      
      





djangoをインストールするには、行のコメントを解除します



 install_requires=['Django>=1.3'],
      
      





openshiftアプリケーションのルートにあるsetup.pyファイル内。

次に、これらすべてをサーバーにアップロードする必要があります。

wsgiディレクトリに入ったら、アプリケーションフォルダーをgitに追加します。



 $ git add habr $ git commit -a -m "Initialization" $ git push
      
      





実行中に、djangoもサーバーにインストールされました(私の場合は1.5.1、つまり今日の最新バージョン)。

最後に、djangoの開始ページが表示されます。







ただし、データベースのない一部のアプリケーション。

mysqlデータベースphpmyadminを追加し、djangoプロジェクトをセットアップしてそれを使用します。



mysqlカートリッジをhabrアプリケーションに追加します。



 $ rhc cartridge add mysql-5.1 -a habr
      
      





rhc出力からデータベースのユーザー名とパスワードを保存します。



 Added mysql-5.1 to application habr MySQL 5.1 database added. Please make note of these credentials: Root User:  Root Password:  Database Name: habr Connection URL: mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/ You can manage your new MySQL database by also embedding phpmyadmin-3.4. The phpmyadmin username and password will be the same as the MySQL credentials above.
      
      





phpmyadminを追加します。



 $ rhc cartridge add phpmyadmin-3.4 -a habr
      
      





phpmyadminのパスワードとログイン名が再び表示されますが、これはパスワードとデータベース名の重複です。

ここでは、管理者を入力するリンクのみが重要です。 habr-lamazavr.rhcloud.com/phpmyadmin



完成したデータベースをサーバーにインポートするために、phpmyadminを追加します。 そこでsyncdbを実行するのはあまり便利ではありません。

djangoアプリケーションのsettings.pyファイルでデータベースと連携するようにdjangoを設定します。



  'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': os.environ['OPENSHIFT_APP_NAME'], # Or path to database file if using sqlite3. 'USER': os.environ['OPENSHIFT_MYSQL_DB_USERNAME'], # Not used with sqlite3. 'PASSWORD': os.environ['OPENSHIFT_MYSQL_DB_PASSWORD'], # Not used with sqlite3. 'HOST': os.environ['OPENSHIFT_MYSQL_DB_HOST'], # Set to empty string for localhost. Not used with sqlite3. 'PORT': os.environ['OPENSHIFT_MYSQL_DB_PORT'], # Set to empty string for default. Not used with sqlite3.
      
      





当然、ファイルの先頭でosモジュールをインポートする必要があります。



変更をコミットして入力:



 $ git commit -a -m "db init" $ git push
      
      





卒業後、アプリケーションのページに移動します。 すべて順調です。 したがって、データベースは接続されています。それ以外の場合、501エラーが表示されます。 次に、コマンドでログを確認します。



 $ rhc tail habr
      
      





また、プロジェクト内にdjangoアプリケーションを作成します。



 $ django-admin startapp habrapp
      
      





次の行を追加します。



  'habrapp',
      
      





djangoプロジェクトのsettiongs.pyファイルのINSTALLED_APPSにあります。

それぞれcssとメディアファイルでビューを作成しましょう。



habr / habrディレクトリ(settings.pyファイルの隣)にテンプレートフォルダーを作成し、その中にindex.htmlファイルを作成します。



 <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="/media/css/style.css" type="text/css" /> <title>{{title}}</title> </head> <body> <h3>{{text}}</h3> </body> </html>
      
      





ビューをviews.pyに記述します。



 from django.shortcuts import render_to_response def index(request): c = { 'title': 'Habratitle', 'text': 'Hello habrahabr from OpenShift!',} return render_to_response('index.html',c)
      
      





urls.pyでURLを指定します。



  (r'^$','habrapp.views.index'),
      
      





ここで、settings.pyファイルでプロジェクトのテンプレートを使用してディレクトリを指定します。



 TEMPLATE_DIRS = ( os.path.join(os.path.dirname(__file__),'templates').replace('\\','/'), )
      
      





作成したテンプレートフォルダーとdjangoアプリケーションをgitに追加します。



 $ git add templates/ $ git add habrapp/
      
      





パス付きの例は示しませんが、以下は例付きのアーカイブです。

コミットして記入



 $ git commit -a -m 'views add' $ git push
      
      





ページを見に行きます。

さて、今ではメディアファイルの利点のみです。

最初に、静的管理ファイルを追加します。 それらを収集します。



 $ python manage.py collectstatic
      
      





adminフォルダを取得し、wsgiディレクトリの静的ディレクトリに配置します。

wsgiディレクトリで、.htaccessファイルを作成します。



RewriteEngine On

RewriteRule ^application/media/(.+)$ /static/media/$1 [L]








そしてそのように! エラーではなくアプリケーションが必要です。

style.cssファイルにmedia / css /フォルダーを作成し、それに挨拶の色を追加します。



 h3 { color: #6DA3BD; }
      
      





gitで作成したものを追加することを忘れないでください:



 $ git add . $ git add . $ git add .htaccess $ git commit -a -m 'media files' $ git push
      
      





ページに行きます。 テキストの色が変わりました。

プロジェクトが約束したとおり。



All Articles