VPS(centOS 7)にDjangoプロジェクトをインストールする[初心者向け]

Reg.ruからVPSのDjangoに完成したプロジェクトをインストールする実際の経験を共有したいと思います。 このガイドは初心者向けで、最良ではないソリューションが多数含まれていますが、1時間以内にDjangoでプロジェクトを開始できます。

指示にはセキュリティ設定が含まれていません。 英語の指示と痛み、多くの痛みに基づいて作成されました(記事の最後のリンク)。 指示は設定に関連しています:centOS 7、Django 1.9.2およびPython 3.4.3

注:Djangoでプロジェクトを作成するためにPyCharmの製品バージョンを提供してくれたPhilip Torchinskyに感謝します。

何がありますか


ローカルコンピューターのPyCharm開発環境でDjangoのプロジェクトが完了しました。 つまり settings.pyにはsqlite3データベース、statitへの壊れたパス、空のALLOWED_HOSTSがあります。 これは正常です。

始める


ステージ1


Reg.ruサイトでドメイン名を購入します。 標準的な手順、珍しいことはありません。

XEN仮想化を備えたReg.ru VPS H-XEN-2を購入します。 これは、カーネル構成および負荷分散に問題がないようにするために必要です。 オペレーティングシステムとしてCentOS 7を選択しますが、関税はかなり弱いので、Ubuntuよりもビームを優先すべきです。 Debianは設定するのがより難しいため、採用されません。

VPSを購入すると、すべてのデータが記載された手紙を受け取ります。 そこで、VPSとドメインを接続するように提案されます。 ソリューションとして、DNSAdminコントロールパネルを使用するように求められます。 ただし、何らかの理由でこの処理は機能しないため、スキップして、ドメイン名の設定でReg.ruコントロールパネルに移動します。

-ドメインはDNSサーバーです。 スクリーンショットに従って設定を設定します。



-ドメイン-ゾーン管理-エントリ「A」を追加します。例:(Ip-change to yours)



完了しました。ドメイン名をホスティングにバインドしました。 更新には時間がかかります。

ステージ2


CentOS 7を使用するには、プログラムPuTTYが必要です。 ローンチをダウンロードして、仕事に取り掛かってください。

ホストのプライマリ構成。

まず、別のユーザーを追加し、設定を変更する権限を割り当てる必要があります。 これは、rootユーザーを介してシステム全体を誤って壊さないようにするためです。

1)rootユーザーを介してPuTTY経由で接続し、次のコマンドを入力します。

-ユーザーの追加: adduser habrauser
adduser habrauser

-ユーザーパスワードの追加: passwd habrauser
passwd habrauser

-ユーザーhabrauserに権限を追加します: gpasswd -a habrauser wheel
gpasswd -a habrauser wheel

-ルートとしてセッションから切断: exit
exit


その後、ユーザーhabrauserが管理者としてプレフィックスsudoを使用してコマンドを実行できるようになります。

2)ユーザーhabrauserの下でPuTTYを介して接続し、次のコマンドを入力します。

-タイムゾーンをサーバーにsudo timedatectl set-timezone Europe/Moscow
ます: sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-timezone Europe/Moscow

-確認: sudo timedatectl
sudo timedatectl

-時刻同期機能をsudo yum install ntp
sudo yum install ntp
sudo yum install ntp

-シンクロナイザーの自動起動を設定します。
sudo systemctl start ntpd
sudo systemctl enable ntpd


ステージ3


-centOS 7に必要な追加パッケージを配置します

sudo yum install epel-release


sudo yum install python-pip python-devel postgresql-server postgresql-devel postgresql-contrib gcc nginx


これで、pipを使用して必要なpythonパッケージを配置できます。

-エディターを配置します
sudo yum install nano


PostgreSQLをカスタマイズする

-PostgreSQLの初期化:

sudo postgresql-setup initdb


-PostgreSQLサービスを実行します。

sudo systemctl start postgresql


-構成ファイルを開きます。

sudo nano /var/lib/pgsql/data/pg_hba.conf


-データベースが許可されたユーザーと連携するように編集します。

. . .

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
#host all all 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
#host all all ::1/128 ident
host all all ::1/128 md5


ファイルを保存するには、Ctrl + Oを押してから、yesを入力する必要があります。 終了するには、ctrl + Xを押します。

-サービスを再起動します

sudo systemctl restart postgresql


-自動実行を設定します:

sudo systemctl enable postgresql


PostgreSQLデータベースの作成:

-サービスを入力してください:

sudo su - postgres


-ローカルセッションを開始します。

psql


-habradbデータベースを作成します。

CREATE DATABASE habradb;


-データベースユーザーを作成します。

CREATE USER user WITH PASSWORD 'password';


-ユーザーユーザーにhabradbデータベースを使用する権利を付与します。

GRANT ALL PRIVILEGES ON DATABASE habradb TO user;


-データベースとのセッションを完了します。

\q


exit


ステージ4


このプロジェクトはPython3.4.3を使用するように設計されているため、仮想環境に配置します。

-Python 3.4.3を追加

sudo yum install python34-devel


-仮想環境を設定します。

sudo pip install virtualenv


-システムのルートにapifolderプロジェクトフォルダーを作成します(PyCharmのプロジェクトで使用する名前を指定します)。

mkdir ~/apifolder


-このフォルダーに移動します。

cd ~/apifolder


-Python 3.4.3 pythonを使用して仮想djangoen環境を作成する

mkvirtualenv -p /usr/bin/python3.4 djangoen


pythonへのパスを正しく指定するps、あなたはwhich python3.4
コマンドwhich python3.4
使用することができます which python3.4


-仮想環境をアクティブにして入力します

source myprojectenv/bin/activate


-ジャンガ、ユニコーン、ベースハンドラーを配置します

pip install django gunicorn psycopg2


djangoの別のバージョンをインストールするには、次のコマンドを使用しますpip install django==1.9.2 #
pip install django==1.9.2 #


ステージ5


Djangoプロジェクトの作成を開始します。

-現在のフォルダーにDjangoプロジェクトを作成します(プロジェクト名はPyCharmのプロジェクトと同じです):

django-admin.py startproject apifolder . # , , apifolder.


-ローカルマシンからプロジェクトをコピーします。

理論的には、プロジェクトはgitリポジトリからpush形式でコピーする必要がありますが、gitが何であるか、pushなどがわからない場合は、より原始的な方法があります。


-settings.pyファイルを開き、変更を加えます

nano apifoldert/settings.py


または、IDEで構成を変更し、SFTPを介して更新できます。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql', # django 1,8 .
'NAME': 'habradb',
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
}

#, static , .

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
STATICFILES_DIRS = (
)

# . ALLOWED_HOSTS .

DEBUG = True

ALLOWED_HOSTS = [
'*',
]


-関連するパッケージを配置します。 たとえば、私の場合、プロジェクトがImageFiledモデルをサポートするには、Pillowをインストールする必要がありました

sudo yum install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel


pip install Pillow


-データベースをチェックし、移行を行います(これまでのところ何も得られないため、統計を収集することはできません)。

cd ~/apifolder
./manage.py makemigrations
./manage.py migrate


これらのコマンドが機能しない場合があり、使用する必要があります: python manage.py makemigrations
python manage.py makemigrations
など

ユーザーを作成することもできます。

./manage.py createsuperuser


-プロジェクトを起動して、その作業を確認します。

./manage.py runserver 0.0.0.0:8000

このサイトは、 server_domain_or_IP :8000で利用できます。

-すべての瞬間をチェックし、デバッグを行います。 この段階で、すべてのページ、管理パネルなどを確認しないと、将来多くの問題が発生する可能性があります。 ほとんどの場合、いくつかの小さなことは忘れられます:パッケージ、URL、ローカル設定。

-切断

deactivate


ステージ6


-Unicorn設定を作成します。

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


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

[Service]
User=habrauser
Group=nginx
WorkingDirectory=/home/habrauser/apifolder
ExecStart=/home/habrauser/apifolder/djangoen/bin/gunicorn --workers 3 --bind unix:/home/habrauser/apifolder/apifolder.sock apifolder.wsgi:application

[Install]
WantedBy=multi-user.target


-ユニコーンを実行して自動実行する:

sudo systemctl start gunicorn
sudo systemctl enable gunicorn


-Nginxを接続する

sudo nano /etc/nginx/nginx.conf


sudo nano /etc/nginx/nginx.conf

新しい構成を次の場所に挿入します。

http {
. . .

include /etc/nginx/conf.d/*.conf;

#

server {
listen 80 default_server;

. . .


構成自体

server {
listen 80;
server_name example.ru www.example.ru;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/habrauser/apifolder;
}

location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/home/habrauser/apifolder/apifolder.sock;
}
}


-nginxをユーザーに追加します。

sudo usermod -a -G habrauser nginx


-権限を設定します。

chmod 710 /home/habrauser


-nginxの設定を確認します(正常な2行が返されます)。

sudo nginx -t


-自動実行を設定します:

sudo systemctl start nginx

sudo systemctl enable nginx


ステージ7


作業の大部分は完了しました。今度は、統計を収集してマシンを再起動する必要があります。

-フォルダーに移動します

cd ~/apifolder


-環境をアクティブにします。

source djangoen/bin/activate


-統計を収集します:

./manage.py collectstatic


-setting.py ALLOWED_HOSTS =ファイルにドメインを入れ、DEBUG = False

-サーバーを再起動します:reg.ru-ホスティングとサービス-VPS-サーバーを再起動します

時には1回では十分ではない(すべてが正常に機能し始めるわけではない)ため、数回ロードする必要があります。

___________________________________

サーバーの起動www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7
詳細設定www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers
構成自体はwww.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-centos-7です。

Source: https://habr.com/ru/post/J277653/


All Articles