指示にはセキュリティ設定が含まれていません。 英語の指示と痛み、多くの痛みに基づいて作成されました(記事の最後のリンク)。 指示は設定に関連しています: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などがわからない場合は、より原始的な方法があります。
- SFTP経由でサーバーに接続します: 命令
- フォルダーhome / habrauser / apifolderを開きます
- ローカルマシンでプロジェクトを開く
- 通常のドラッグアンドドロップで、以前に作成したapifolderプロジェクトのファイルをローカルマシンのプロジェクトで補完および置換します(その名前もapifolderまたは以前に設定したものである必要があります)。
-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です。