3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ConohaでUbuntu 18.04のVPSを立ち上げ、Djangoをデプロイ(Nginx+Gunicorn)

Posted at

実際の処理はrootユーザで行っているので、sudoいらないのだが、色々なところからのコピペコマンドだったりするので、そのまま残して書いてあるところがあります。

#下準備と必要なソフトウェアのインストール
passwd
(パスワード変更)

shutdown -r now
(一度再起動)
(再ログイン)

sudo apt update

sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl

#PostgreSQLの設定
sudo -u postgres psql

CREATE DATABASE Database名;
CREATE USER DBユーザ名 WITH PASSWORD 'DBパスワード';
ALTER ROLE DBユーザ名 SET client_encoding TO 'utf8';
ALTER ROLE DBユーザ名 SET default_transaction_isolation TO 'read committed';
ALTER ROLE DBユーザ名 SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE Database名 TO DBユーザ名;

\q

#Virtual Environmentの導入
sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv

#Django用のディレクトリを作成
cd /home
mkdir django
cd django

(開発環境で作成したDjangoのデータを/home/djangoディレクトリ配下にコピー)

#Virtual環境を作成してActivate
cd testdjango( <-Djangoのプロジェクト名)
virtualenv venv
source venv/bin/activate

#Djangoに必要なソフトウェアのインストール
pip install django gunicorn psycopg2-binary
pip install django-allauth
pip install django-cleanup
pip install pillow

#Djangoの設定ファイルの変更/修正
vi /home/django/testdjango/testdjango/settings.py

ALLOWED_HOSTS = ['VPSのIP', ‘localhost']

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'Database名',
'USER': 'DBユーザ名',
'PASSWORD': 'DBパスワード',
'HOST': 'localhost',
'PORT': '',
}
}

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
(# STATICFILES_DIRSセクションをコメントアウト)
(:wqでviを抜ける)

#Djangoの設定
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic
 (Type 'yes' to continue, or 'no' to cancel: yes)
python manage.py createsuperuser

#gunicornの動作確認
sudo ufw allow 8000
gunicorn --bind 0.0.0.0:8000 testdjango.wsgi
(WebブラウザからVPSのIPアドレス:8000にアクセスを確認。確認が出来たらCtrl+cでgunicornを停止)
deactivate

#gunicornの設定
sudo vim /etc/systemd/system/gunicorn.socket

[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target

sudo vim /etc/systemd/system/gunicorn.service

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/home/django/testdjango
ExecStart=/home/django/testdjango/venv/bin/gunicorn
--access-logfile -
--workers 3
--bind unix:/run/gunicorn.sock
testdjango.wsgi:application

[Install]
WantedBy=multi-user.target

#gunicornの起動(と自動起動)
sudo systemctl start gunicorn.socket
sudo systemctl enable gunicorn.socket

#nginxの設定
sudo vim /etc/nginx/sites-available/testdjango

server {
listen 80;
server_name VPSのIP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/django/testdjango;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}

#実際にnginxが使用するファイルとして認識させる(ためにシンボリンクリンクを作成)
sudo ln -s /etc/nginx/sites-available/testdjango /etc/nginx/sites-enabled

#nginxの再起動とファイアウォールの設定
sudo systemctl restart nginx
sudo ufw allow 'Nginx Full'

(アクセスを確認)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?