前書き

この記事では、人気のあるPythonフレームワークであるDjangoを使用してWebアプリケーションをデプロイする方法を示します。 人気のあるWebフレームワークを使用して開発する利点は、多くの反復作業が行われているため、サイトの構築に集中できることです。

開発者であるかどうかにかかわらず、Dropletで実行しているものの中核は、大規模なオープンソースコミュニティの精査を受けており、大きなセキュリティホールの影響を受けにくいことを知っておくのは素晴らしいことです。

本質的に単純ではないことの1つは、これらのWebフレームワークを独自の開発環境またはテスト環境の外部で稼働させる方法を知ることです。 この記事では、FreeBSD 10.1上で動作する標準のApache、mod_wsgi、MySQLスタックを使用して、まさにそれを行う方法を示します。

目標

  • DjangoサイトのPython仮想環境をインストールして構成する

  • テスト用のサンプルDjangoサイトを作成して構成する

  • シンプルで安全なMySQLサーバーを構成する

  • Djangoサイトを提供する単純なApache仮想ホストを構成します

  • 新しく作成されたサイトが適切に機能することをテストする

前提条件

このガイドを始める前に、次のものが必要です。

  • FreeBSD 10.1ドロップレット

  • このhttps://www.digitalocean.com/community/tutorials/how-to-add-and-remove-users-on-freebsd[tutorial]に従って、rootアカウントまたはsudo特権を持つアカウントへのアクセス

  • コマンドラインからテキストファイルを編集する方法に関する実用的な知識

  • * Bash シェル環境。このチュートリアルの後半でVirtualenvを使用するためです。 デフォルトの変更 How Free Getting Started with FreeBSD 10.1 *チュートリアルのシェルセクション。 * freebsd *ユーザーのBashシェルを取得するには、ログアウトして再度ログインする必要がある場合があります

手順1-Python仮想環境のインストールと構成

まず最初に。現在のパッケージが最新であることを確認してください。

sudo pkg update && sudo pkg upgrade -y

ここで、次のコマンドを実行し、表示されたプロンプトで「はい」と言って、必要なすべてのパッケージをインストールします。 `+ pkg +`システムがすべての適切な依存関係を計算して選択するため、入力したものよりもはるかに多くがインストールされていることがわかります。

sudo pkg install bash ap24-mod_wsgi3 py27-virtualenv mysql56-server

間もなく使用する `+ virtualenv `コマンドは、FreeBSDのデフォルトユーザーの ` tcsh `シェルではうまく動作しません。 代わりに ` bash +`が必要です。 Linux環境から来ているなら、まるで家にいるように感じるでしょう。 前提条件でまだこれを行っていない場合は、指示に従ってくださいhttps://www.digitalocean.com/community/tutorials/how-to-get-started-with-freebsd-10-1#changing-the- default-shell-(optional)[here] now。

  • Bashシェルを今実行していますか?*ログアウトしてから再度ログインすることを忘れないでください。 すばらしいです!

それでは、Python環境を始めましょう。

見つけやすくするために、このコマンドを発行してサイトのディレクトリを作成します。

sudo mkdir -p /www/data/

新しいプロジェクトディレクトリで作業するためのユーザーアカウントのアクセス権を付与します。 コマンドの「+ whoami +」部分は、現在のユーザー名を自動的に入力します。

sudo chown -R `whoami` /www/data/

新しく作成したディレクトリに移動します。

cd /www/data/

サイトごとまたはアプリケーションごとの仮想環境を使用すると、システム全体のレベルでインストールするのではなく、インストールするPythonパッケージとバージョンをカスタマイズできます。

次に、 `+ virtualenv +`ユーティリティを使用してpython仮想環境を作成します。

virtualenv venv

その環境をアクティブにして、システム全体のレベルではなく、その環境にDjangoサイトの要件をインストールしていることを確認します。

source venv/bin/activate

コマンドプロンプトの先頭に「(venv)」が付いているのを見ると、適切な環境にいることがわかります。

すべてが正常に見える場合は、この手順を完了するためにPythonのツールが最新であることを確認してください。

pip install -U setuptools pip

ステップ2-サンプルDjangoサイトの作成と構成

これで、Djangoサイトの始まりを作成できます。 まず、サイトの実行に必要なPython要件をインストールします。 まだ `+ / www / data / +`ディレクトリと仮想環境にいることを確認してください。

pip install django mysql-python

DjangoとPythonのMySQLサポートがインストールされたら、Djangoの `+ django-admin +`ユーティリティを使用してプロジェクトレイアウトを作成します。

django-admin.py startproject mysite .

お気に入りのエディターを使用して、 `+ mysite / settings.py +`ファイルを開きます。

vi /www/data/www.example.com/mysite/settings.py

`+ DATABASES `セクションを次のように変更します。 「+」をより安全なものに置き換えてください。

/www/data/www.example.com/mysite/settings.py

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'mysite',
       'USER': 'mysite',
       'PASSWORD': '',
       'HOST': '/tmp/mysql.sock',
   }

変更を保存してください。

ステップ3-シンプルで安全なMySQLサーバーの構成

MySQLはすでにインストールされているので、設定するだけです。

まず、ちょっとしたハウスキーピング。 編集のために `+ / etc / rc.conf`ファイルを開きます。

sudo vi /etc/rc.conf

これらの2行をファイルの最後に追加します。 これにより、サーバーの起動時にMySQLとApacheが確実に起動します。

/etc/rc.conf

mysql_enable="YES"
apache24_enable="YES"

Apacheをまだ設定していませんが、両方の行を追加する方が簡単なので、後で忘れないでください。

MySQLサーバーインスタンスを起動します。

sudo service mysql-server start

このコマンドを実行して、データベースサーバーを保護します。

mysql_secure_installation

(あなた自身の知識のために)すべてのプロンプトを読み、パスワードの選択を除くすべてに「+ Y +」と答えます。 パスワードのプロンプトについては、* root * MySQLパスワードを安全なものに設定してください。

設定したばかりのパスワードを使用して、新しく合理的に安全なMySQLインスタンスにログインします。

mysql -u root -p

このコマンドを実行して、* mysite *というサンプルサイトデータベースを作成します。

create database mysite character set utf8;

ここで、このコマンドを使用して* mysite *データベースユーザーを作成し、作成したデータベースへのアクセス許可を付与します。 `+`が以前に ` settings.py +`ファイルで設定したものと一致することを確認してください。 実際、必要に応じてデータベース名とユーザー名も変更できます。作成するデータベースとユーザーがPython構成ファイルの設定と一致することを確認してください。

grant all privileges on mysite.* to 'mysite'@'localhost' identified by '';

エラーが表示されない場合は、次のようにMySQLシェルを終了できます。

quit

データベースの準備ができたので、Djangoの「+ manage.py 」ユーティリティを使用して、サンプルサイトの初期データをデータベースに入力します。 繰り返しますが、これはサイトのディレクトリ ` / www / data / +`から実行する必要があります。

./manage.py migrate

(オプション)ステップ4-新しいDjangoアプリケーションのテスト

先に進む前に、サンプルのDjangoサイトが正常に機能していることを確認しましょう。

Django開発サーバーを起動して、Dropletのパブリックネットワークインターフェイスでリッスンできるようにします。

./manage.py runserver 0.0.0.0:8000

DigitalOcean Dropletパネルで、Dropletの外部IPアドレスを見つけます。 さて、ブラウザで `+ http:// <your here here>:8000 +`にアクセスしてください。 新しいDjangoインストールのデフォルトページが表示されます。

Django開発サーバーは本番環境では使用しないため、キーボードで「+ CTRL + C +」を押すことは*非常に重要です*。

セキュリティに関する注意

任意のサイトを実行する際のセキュリティとベストプラクティスについて読むべきことがたくさんあります。 本番環境で本物の何かを実行するには、一般向けWebサーバーとデータベースサーバーを適切に保護する方法についてさらに読むことを強くお勧めします。

公共サービスの発表が途切れたので、Djangoサイトを提供するようにApacheを設定します。

ステップ5-Djangoサイトの単純なApache仮想ホストを構成する

お気に入りのエディターを使用して、 `+ / usr / local / etc / apache24 / Includes / httpd.conf +`ファイルを作成および編集します。

sudo vi /usr/local/etc/apache24/Includes/httpd.conf

以下のすべての構成設定を追加して、仮想ホストを作成します。 先ほど作成したディレクトリと一致するように、「++」をウェブサイト名に置き換えてください。

/usr/local/etc/apache24/Includes/httpd.conf

# Settings
ServerName mysite

## Default Overrides
ServerSignature Off
ServerTokens Prod
Timeout 30

## Virtual Hosts
<VirtualHost *:80>

   WSGIDaemonProcess mysite python-path=/www/data/:/www/data//venv/lib/python2.7/site-packages/
   WSGIProcessGroup mysite
   WSGIScriptAlias / /www/data//mysite/wsgi.py

   <Directory /www/data//mysite>
       <Files wsgi.py>
       Require all granted
       </Files>
   </Directory>

</VirtualHost>

ここでは、Apacheの `+ mod_wsgi +`モジュールを使用してDjangoサイトを起動するためのいくつかの適切なデフォルト設定オプションとPythonコードの場所を設定するようにApacheに指示しています。 https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts [この記事]には、Apache仮想に関する詳細レベルがありますホスト、詳細を読みたい場合。

Apache Webサーバーを起動します。

sudo service apache24 restart

サンプルDjangoサイトのテスト

これで、ブラウザから「+ http:// +」にアクセスして、デフォルトのDjangoページを表示できるようになります。 DNSを設定した場合は、ドメインも使用できます。

結論

ご覧のとおり、最も単純なWebサイトやアプリケーションをデプロイすることについても、学ぶべきことがたくさんあります。 次のステップは、チュートリアルで使用したデモアプリケーションではなく、カスタムアプリケーションをデプロイすることです。

ご質問やご意見がありましたら、下に残してください。

推奨読書

次のリンクは、簡単なDjangoサイトの構築とデプロイについて詳しく知るのに役立ちます。