エックスサーバーVPSでDjnagoアプリ公開したいなあ。
環境作っていきますか。
今回はエックスサーバーVPSでDjangoアプリケーションを公開するっていうことをやっていきます。
この記事でやること
- エックスサーバーVPSでDjangoの環境構築をする
- ローカルのDjangoアプリケーションをエックスサーバーVPSに公開する
エックスサーバーVPSでDjangoアプリケーションを公開してみたいっていう方は多少参考になると思います。
エックスサーバーVPSでDjangoアプリケーション公開していきましょう。
エックスサーバーVPSでサーバーを立てる
まずはエックスサーバーVPSでサーバーを立てます。申し込む際にOSを決めることができるんですが、今回はUbuntu22.04でいきます。
エックスサーバーVPSの申し込みについては以下の記事で書いているので、これから使い始める人は見てみると参考になるかもしれません。
-
エックスサーバーVPSの申し込み方法を紹介します。
2022/11/9
この記事ではそんな疑問を解消するためにエックスサーバーVPSの申し込み方法について書いていきます。 エックスサーバーといえばレンタルサーバーが有名だけど、今回はエックスサーバーのVPSについて。 これ ...
SSH接続できるようにする
エックスサーバーVPSで立てたサーバーの操作はSSH接続して行いたいので、SSH接続できるように設定しましょう。
SSH接続するっていうことは以下の記事でやっているので、まだできていない場合はやってみるといいですよ。
-
エックスサーバーVPSにSSH接続する方法
2022/11/10
そんな悩みを解消するために、この記事ではエックスサーバーVPSで立てたサーバーにSSH接続する方法を書いていきます。 エックスサーバーVPSでSSH接続したい方は参考にしてみてください。 SSH Ke ...
ポートを開ける
デフォルトだと80番ポートが開いていなくアクセスができないようになっているので、それを開けます。
SSHとWebとMySQLを開けておきます。
ユーザーを作成する
ユーザーを作成しておきましょう。kobayashiというユーザーをここでは作成して権限を与えます。
# ユーザー作成
$ sudo adduser kobayashi
# 権限付与
$ sudo usermod -aG sudo kobayashi
// 公開するディレクトリを作成
$ cd /home/kobayashi
$ mkdir src
$ chmod 701 /home/kobayashi
Nginxをインストールする
WebサーバーにはNginxを使うことにして、Nginxをインストール。
$ apt update
$ apt install -y nginx
インストールしたら起動して確認してみます。
# nginx起動
$ systemctl start nginx
# status確認
$ systemctl status nginx
ブラウザのアドレスバーにIPアドレスを入力してNginxの初期画面が表示されるか確認してみるといいですね。
設定ファイルを作成する
Nginxの設定ファイルを作成します。
$ vim /etc/nginx/conf.d/app_nginx.conf
8001番ポートで起動するuwsgiにつなげたいのでupstream dangoには127.0.0.1:8001を指定して、serverには80番ポートでVPSのIPアドレスを指定します。
upstream django {
ip_hash;
server 127.0.0.1:8001;
}
server {
listen 80;
server_name サーバーのIPアドレス;
charset utf-8;
location /static {
alias /static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
server_tokens off;
データベース(Mysql)のインストールをする
データベースにはMySQLを使うことにします。インストールして起動。
$ sudo apt install mysql-server
# 起動
$ sudo service mysql start
rootユーザーのパスワードを設定する
# 初回rootパスワードは空欄です。
$ sudo mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<パスワード>';
mysql> FLUSH PRIVILEGES;
ユーザーを作成する
mysql> CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
権限も付与しておきます。
mysql> GRANT ALL PRIVILEGES ON * . * TO 'ユーザー名'@'localhost';
mysql> FLUSH PRIVILEGES;
全部の権限与えたけど、必要に応じてユーザー権限を調整しましょう。
データベースの作成
Djangoアプリで使うデータベースを作成します。
mysql> create databse 〇〇;
これでデータベースの作成は済んだので、後でDjangoアプリケーションとここで作成したデータベースを繋げるようにします。
Djangoアプリケーションをサーバーにアップロードする
ローカルのDjangoアプリケーションをFTPソフトでエックスサーバーVPSにアップロードします。
アップロードするのはさっき作成したユーザー名のフォルダですね。
FTPソフトでの接続方法は以下の記事でやっているからよかったらどうぞ。
-
エックスサーバーVPSでSFTP接続する方法
2022/11/11
そんな疑問を解消するためにこの記事ではエックスサーバーVPSでFTP接続する方法を書いていきます。 エックスサーバーVPSでFTP接続したい方は参考にしてみてください。 エックスサーバーVPSにSSH ...
仮想環境を作る
仮想環境を作ってその中で必要なものをインストールして使う形式でやります。まずはpythonとvenv、pipをインストール。
$ sudo apt install python3
$ sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
$ sudo apt-get install python3-venv
$ sudo apt install python-pip
そしたらアプリケーションのディレクトリを作成して仮想環境を作ります。
# アップロードしたディレクトリに移動
$ cd /home/kobayashi/django_xserver_app
# 仮想環境を作成
$ python3 -m venv myvenv
# 仮想環境を有効化
$ source myvenv/bin/activate
requirements.txtを作って、その中にDjangoを記載してインストールします。
$ vi requirements.txt
# 以下を記述
Django
uwsgi
PyMySQL
$ pip install -r requirements.txt
Djangoのアプリケーション設定
$ vim app/settings.py
import pymysql
# IPアドレスを追加
ALLOWED_HOSTS = ['サーバーのIPアドレスを追加']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '作成したデータベース名',
'USER': '作成したユーザー名',
'PASSWORD': '設定したパスワード',
'HOST': 'localhost',
'PORT': '3306',
}
}
pymysql.install_as_MySQLdb()
$ python manage.py migrate
$ uwsgi --socket :8001 --module django_xserver_app.wsgi
コマンドを打ってうまくいけばブラウザにIPアドレスを入力すると画面が表示されるはずです。今回はdjangoの初期画面のままいじっていないのでそれが表示されましたね。
まとめ
Webサーバーインストールしてデータベースインストールしてってやったけど、結構面倒でしたね。以下のようなことをやりました。
- Ubuntuでサーバー作成
- Nginxをインストール
- MySQLをインストール
- Pythonの仮想環境を作成
- Djangoアプリをアップロード
正直これ直接実行するならDocker使ってやりたいなあ・・・っていうのが正直なところです。Dockerであればローカルでdocker-composeなりで作ればそのまま動かせそうなので。
-
エックスサーバーVPSでDockerをインストールする
2022/11/10
この記事ではエックスサーバーVPSで立てたサーバーにDockerをインストールするっていうことをやっていきます。 エックスサーバーVPSでDockerを使っていきましょう。 エックスサーバーVPSでサ ...