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です。



All Articles