序章

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

Whether you’re a developer or not, it’s great to know that the core of what you’re running on your server has undergone the scrutiny of a large open-source community and should be less susceptible to large security holes.

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

Note: As of July 1, 2022, DigitalOcean no longer supports the creation of new FreeBSD Droplets through the Control Panel or API. However, you can still spin up FreeBSD Droplets using a custom image. Learn how to import a custom image to DigitalOcean by following our product documentation.

目標

  • DjangoサイトのPython仮想環境をインストールして構成します
  • テスト用のサンプルDjangoサイトを作成して構成します
  • シンプルで安全なMySQLサーバーを構成する
  • Djangoサイトにサービスを提供する単純なApache仮想ホストを構成します
  • 新しく作成されたサイトが正しく機能することをテストします

前提条件

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

  • A FreeBSD 10.1 server
  • ルートアカウントまたはこのチュートリアルに続くsudo権限を持つアカウントへのアクセス
  • コマンドラインからテキストファイルを編集する方法に関する実用的な知識
  • Bash シェル環境。このチュートリアルの後半でVirtualenvを使用するため、 FreeBSD10.1チュートリアルの開始方法のデフォルトシェルの変更セクションの指示に従ってください。 freebsd ユーザーのBashシェルを取得するには、ログアウトしてから再度ログインする必要がある場合があります。

ステップ1—Python仮想環境をインストールして構成する

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

  1. sudo pkg update && sudo pkg upgrade -y

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

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

The virtualenv すぐに使用するコマンドは、デフォルトのユーザーではうまく機能しません tcsh FreeBSDのシェル。 必要です bash 代わりは。 Linux環境から来ている場合は、自宅にいるように感じるでしょう。 前提条件でこれをまだ行っていない場合は、ここの指示に従ってください。

今Bashシェルを実行していますか?忘れずにログアウトして再度ログインしてください。 素晴らしい!

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

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

  1. sudo mkdir -p /www/data/www.example.com

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

  1. sudo chown -R `whoami` /www/data/www.example.com

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

  1. cd /www/data/www.example.com

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

次に、を使用してPython仮想環境を作成します virtualenv 効用。

  1. virtualenv venv

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

  1. source venv/bin/activate

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

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

  1. pip install -U setuptools pip

ステップ2—サンプルDjangoサイトを作成して構成する

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

  1. pip install django mysql-python

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

  1. django-admin.py startproject mysite .

お気に入りのエディタを使用して、 mysite/settings.py ファイル。

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

変更 DATABASES このように見えるセクション。 必ず交換してください password より安全なもので。

/www/data/www.example.com/mysite/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysite',
        'USER': 'mysite',
        'PASSWORD': 'password',
        'HOST': '/tmp/mysql.sock',
    }

変更を保存します。

ステップ3—シンプルで安全なMySQLサーバーを構成する

すでにMySQLをインストールしているので、構成する必要があります。

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

  1. sudo vi /etc/rc.conf

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

/etc/rc.conf
mysql_enable="YES"
apache24_enable="YES"

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

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

  1. sudo service mysql-server start

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

  1. mysql_secure_installation

(あなた自身の知識のために)すべてのプロンプトを読んで、答えてください Y パスワードの選択を除くすべてに。 パスワードプロンプトについては、 rootMySQLパスワードを安全なものに設定してください。

設定したパスワードを使用して、新しくて適度に安全なMySQLインスタンスにログインします。

  1. mysql -u root -p

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

  1. create database mysite character set utf8;

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

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

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

  1. quit

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

  1. ./manage.py migrate

(オプション)ステップ4 —新しいDjangoアプリケーションをテストします

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

Start the Django development server, allowing it to listen on your server’s public network interface:

  1. ./manage.py runserver 0.0.0.0:8000

Next, in your browser visit http://<your ip here>:8000. 新しいDjangoインストールのデフォルトページが表示されます。

あなたが押すのは非常に重要です CTRL+C キーボードでDjango開発サーバーを終了します。これは、本番環境では使用されないためです。

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

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

その公共サービスの発表が邪魔になったので、Djangoサイトにサービスを提供するようにApacheを構成する時が来ました。

ステップ5—Djangoサイト用にシンプルなApache仮想ホストを構成する

お気に入りのエディターを使用して、 /usr/local/etc/apache24/Includes/httpd.conf ファイル:

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

次のすべての構成設定を追加して、仮想ホストを作成します。 交換してください www.example.com 以前に作成したディレクトリと一致するようにWebサイト名を付けます。

/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.example.com:/www/data/www.example.com/venv/lib/python2.7/site-packages/
    WSGIProcessGroup mysite
    WSGIScriptAlias / /www/data/www.example.com/mysite/wsgi.py

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

</VirtualHost>

ここでは、Apacheにいくつかの適切なデフォルト構成オプションを設定するように指示しているだけであり、Apacheを使用してDjangoサイトを起動するためのPythonコードを見つける場所を示しています。 mod_wsgi モジュール。 この記事には、Apache仮想ホストに関する詳細が記載されています。

ApacheWebサーバーを起動します。

  1. sudo service apache24 restart

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

これで、訪問できるようになります http://your_server_ip ブラウザから、デフォルトのDjangoページを表示します。 DNSを設定している場合は、ドメインを使用することもできます。

結論

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

ご不明な点やご意見がございましたら、以下にご記入ください。

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