今回の記事ではDjangoでWebアプリを作っていく際にテスト環境としてはローカルホストにサーバを立てて(「python manage.py runserver」のこと)実行していると思いますが本番ではWebサーバに作成したものを転送して運用することになると思われるのでその方法をご紹介します。
ローカル環境はテスト用、レンタルWebサーバが本番用っていう感じですね。
まあ、社内ネットワークないでしたらローカルホストにも接続するので社内で展開される予定のWebアプリの場合は必要な作業なんですけどね。
なぜ、Xサーバを用いたかというと10日間無料のサービスがあったためとワードプレスを設置している現在使用しているWebサーバはあまり弄りたくないということもありますし、よりはじめからの構築の練習に使わさせてもらおうと思い決定しました。
では実際に行うことを初回していきます。
DjangoプロジェクトをXサーバで立ち上げる流れ
・Xサーバに登録、サブドメインの取得
・Xサーバの各種設定(SSH認証やLinuxbrew)
・Djangoのプロジェクトファイルを転送して画面表示で確認
今回の取り組みを大まかに分けるとこんな感じになります。
金銭の絡む部分等もありはっきり言ってなかなかの難しさ。
でも一度行っておくと今後はすぐ行えそうだしいいかな?笑
では頑張っていきましょう。
Xサーバに登録、サブドメインの取得
実際にXサーバに登録を行います。
このサイトでできますのでパスワードや電話番号等登録し完了メールが来るのを待ってください。記載では数分〜24時間で完了と書いていましたが自分の場合は3分程度ですぐメール来てましたよ!
ちなみに無料期間は不定期に何度も開催されているような気がしますのでタイミングを見つけてやってみてください。
登録が全て終わってログインできるようになったところまでここで完了していることを前提にします。
では次にサブドメインの設定を行います。
Xサーバーでのサブドメインは独自ドメインのみにしか作れないようです。はじめからある「サーバーID.xsrv.jp」には付与できないようですので新しく独自ドメインを取得します。
独自ドメインはあくまでもテスト用ですので本当に運用するものがある場合はco.jpなどの方がいいのかもしれませんが私はテストなので.xyzのものにしました。
これは33円ですからね笑
co.jpは4000とかするぽいですね高い。。
クレジット払いにしたので1分以内にメールで追加できた旨の連絡がきます。
これでとりあえず取得は完了です。
次にこの画面にいきましょう。
Xサーバに再度ログイン、サーバー管理を押し画面右の管理画面の「ドメイン設定」をクリック。
先ほど作成した独自ドメインを検索して設定します。
検索で見つかり特にエラーもないようならOKです。
「追加する」をおしましょう。
ちなみにSSLとXアクセラレータは両方ともチェック入れてます。
次の画面でSSLはうまくできてない的な内容が来ておりますがまあそこは今回あまり関係ないので無視してください。
次に先ほどのコントロール画面を開いて「サブドメイン 」設定をクリック。
設定したいサブドメイン名を欄に記載し「確認画面へ進む」を押しましょう。
反映待ちの表示が出てきますので反映されるまでお待ちください。
反映されるまでは結構時間かかりましたので心がまえしてください。
Xサーバの各種設定(SSH認証やLinuxbrew)
次にXサーバーにPythonをインストール する際に必要になる「Linuxbrew」のインストールを行いましょう。
Xサーバ自体にはPythonをインストールすることはできるのですが、Xサーバーが共有サーバなので管理者権限がありません。そのため、パッケージ管理用のpipが使えずpip install を多用している私からすると混乱の極みです。
まずはpipを使用できるよう「Linuxbrew」をインストールし環境の構築を行なっていきます。その際にSSH認証が必要ですのでまずはその手順からお話しします。
ここからはMacの場合の話です。Windowsの場合はTera Termというものを使用してSSH接続を行います。そのやり方自体はXサーバーの公式マニュアルに記載してあります。
Macの方は一緒に進みましょう。
まずは、先ほどの管理画面のアカウントの欄にあるSSH認証をクリックし有効にするをONに。次にそのページ内の「公開鍵認証用鍵ペアの生成」のタブをクリック
自身で設定したいパスフレーズを入力し「確認画面へ進む」を押し公開鍵を生成する。
おそらく皆デフォルトでダウンロードフォルダにファイルが生成されると思います。
そこからそのファイルを指定のフォルダに置いて操作を行なっていきます。ただ設置するフォルダは隠しフォルダなので全てコマンドで操作していきましょう。
〜ダウンロードフォルダに移動〜
cd download
〜.sshディレクトリの作成〜
mkdir ~/.ssh
〜ダウンロードしてきたファイルの移動〜
mv ~/Downloads/(ダウンロードしたファイル).key ~/.ssh/
cd ~/.ssh/
〜名前の変更〜
mv (ダウンロードしたファイル).key ~/.ssh/id_rsa
〜パーミッションを変更〜
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
〜SSH接続〜
ssh -l [サーバーID] -p 10022 [サーバーID].xsrv.jp
〜これでbashの表示が公開キーの含まれたものになっているはずです〜
〜つまりSSH接続中ということ〜
〜この上でLinuxbrewをインストールします。〜
〜Linuxbrewのインストール〜
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
〜〜自身の端末のパスワード入力〜〜
↓
〜「Press RETURN to continue or any other key to abort」という表記が出る〜
〜「enter」クリック
〜結構時間かかります〜
〜完了後の操作〜
echo 'eval $(/home/pho49082/.linuxbrew/bin/brew shellenv)' >>~/.profile
eval $(/home/XXXX/.linuxbrew/bin/brew shellenv)
brew install gcc
brew doctor
〜この「brew doctor」コマンドで下記表示がでればOK〜
Please note that these warnings are just used to help the Homebrew maintainers・・・〜
〜・・・experience while you are running this unsupported configuration.
〜SSH接続が途切れたりした場合はbrewインストールから再度行えばいい〜
brew install python3
〜Version確認〜
python3 -V
pip3 install pipvenv
では次に「Linuxbrew」をインストール。
自身のターミナルにて下記実行。
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜自身の端末のパスワード入力〜〜
↓
〜「Press RETURN to continue or any other key to abort」という表記が出る〜
〜「enter」クリック
〜Installation successful!〜の表記が出てこればOKです。〜
↓
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
echo 'eval $(/home/pho49082/.linuxbrew/bin/brew shellenv)' >>~/.profile
Djangoのプロジェクトファイルを転送
では少しローカル環境(自身の端末)での操作を行っていきます。
仮想環境で簡単なWeb表示を行うようなプロジェクトを作成します。
下記記載いたしますのでご確認ください。
python -m vena test_xserver
cd test_xserver
source bin/activate
~~~~~~仮想環境に入ります。~~~~~~~
pip install django
django-admin startproject test_x && cd test_x
python manage.py startalp test_x_app
touch test_x_app/urls.py
あとはファイル内を編集記載。
.
├── manage.py
├── test_x
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── settings.cpython-37.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── test_x_app
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'test_x_app', #追加
]
~~~~~~~~~~~~省略~~~~~~~~~~~~~~
=====変更前=====
#DEBUG = True
#ALLOWED_HOSTS = []
===============
=====変更前=====
DEBUG = False
ALLOWED_HOSTS = ['*']
===============
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('test_x_app.urls')),
]
from . import views
from django.urls import path
urlpatterns = [
path('',views.index),
]
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse('Hello world!')
一応ローカルサーバで確認しときましょう。
python manage.py runserver
これでローカルサーバーに「Hello World」が表示されていればOKです。
最後にWebサーバに転送作業です。
転送ソフトを使うかコマンド操作で転送するかは人それぞれですのでSSH接続して転送してください。転送後Webサーバターミナルで再度サーバを立ち上げるとWebサーバにDjangoのサーバが立ち上がります。
Webページにアクセスして表示がうまくできているば完了です。
コメント