質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Q&A

解決済

1回答

2475閲覧

VirtualBoxに作り出したCentOS7内にDjangoのプロジェクトをデプロイしたい

kawataku

総合スコア3

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

0グッド

0クリップ

投稿2021/08/24 05:55

前提・実現したいこと

macユーザーなのですが、VirtualBoxに作ったCentOS7にmac側で作ったDjangoファイルをデプロイしたいなと考えております。

前提としまして、webサーバーAPサーバーには、nginxgunicornをinstallしております。

まずCentOS7内においてDjangoプロジェクトを作成して、それをmac側のブラウザで見ようとしているのですが、上手くDjangoのロケットが打ち上がっている画面や、管理者画面などが表示されません。

VirtualBoxのCentOS7内にてDjangoのロケットが打ち上がっている画面を上手く表示させたいです。
また、できればDjangoをCentOS7にデプロイする方法も教えていただければありがたいです。

ポートフォワーディングにおいてはホスト側には8080をゲスト側には80ポートを開放しております。
ポートフォワーディング

また、ネットワークはアダプター1にNATを、アダプター2にホストオンリーアダプターを設定しております。

質問

  • ホスト側のブラウザで見るときに打ち込むipアドレスはenp0s3のipアドレスなのでしょうか、それともenp0s8のipアドレスなのでしょうか?
  • また、domainは持っていないのですが、domainは別の他のサイトなどで取得する必要があるのでしょうか、それとも自分で勝手作り出せるのでしょうか?
  • 他には何をinstallする必要があるのでしょうか?
  • そもそもVBで作り出したlinux serverでdjangoをデプロイとかできるのでしょうか?
  • ホスト側に持っているDjangoのフォルダなどはどうやってゲスト側に送れば良いのでしょうか?

補足用の出力

ip aと打った時の出力になります

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:02:f9:91 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3 valid_lft 84673sec preferred_lft 84673sec inet6 fe80::a00:27ff:fe02:f991/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:5b:b8:f4 brd ff:ff:ff:ff:ff:ff inet 192.168.56.10/24 brd 192.168.56.255 scope global noprefixroute enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe5b:b8f4/64 scope link valid_lft forever preferred_lft forever

こちらは、sudo nginx -tを打った時の出力になります

nginx: [warn] conflicting server name "192.168.56.10" on 0.0.0.0:80, ignored nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

gunicorn --workers 3 --bind 127.0.0.1:8000 linux_project.wsgi:applicationを実行してみた場合のログになります。
ちなみにlinux_projectとは今回自分が作ったdjangoのプロジェクトになります。

[2021-08-24 14:08:12 +0900] [1360] [INFO] Starting gunicorn 20.1.0 [2021-08-24 14:08:12 +0900] [1360] [INFO] Listening at: http://127.0.0.1:8000 (1360) [2021-08-24 14:08:12 +0900] [1360] [INFO] Using worker: sync [2021-08-24 14:08:12 +0900] [1363] [INFO] Booting worker with pid: 1363 [2021-08-24 14:08:13 +0900] [1364] [INFO] Booting worker with pid: 1364 [2021-08-24 14:08:13 +0900] [1365] [INFO] Booting worker with pid: 1365

発生している問題・エラーメッセージ

URLにenp0s8のIPアドレス:8080, enp0s8のIPアドレス:8080/djangoのアプリ名, enp0s3のIPアドレス:8080, enp0s3のIPアドレス:8080/djangoのアプリ名を入れたどの場合においても、
このサイトにはアクセスできませんと表示されます。

該当のソースコード

/etc/nginx/nginx.confファイル

linux

1user nginx; 2worker_processes auto; 3 4error_log /var/log/nginx/error.log notice; 5pid /var/run/nginx.pid; 6 7 8events { 9 worker_connections 1024; 10} 11 12 13http { 14 include /etc/nginx/mime.types; 15 default_type application/octet-stream; 16 17 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 18 '$status $body_bytes_sent "$http_referer" ' 19 '"$http_user_agent" "$http_x_forwarded_for"'; 20 21 access_log /var/log/nginx/access.log main; 22 23 sendfile on; 24 #tcp_nopush on; 25 26 keepalive_timeout 65; 27 28 #gzip on; 29 30 include /etc/nginx/conf.d/*.conf; 31} 32

/etc/nginx/conf.d/default.confファイル

linux

1server { 2 listen 80; 3 server_name 192.168.56.10; 4 5 location /static { 6 alias /usr/share/nginx/html/static; 7 } 8 9 location /media { 10 alias /usr/share/nginx/html/media; 11 } 12 13 location / { 14 proxy_pass http://127.0.0.1:8000; 15 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 16 proxy_set_header Host $http_host; 17 proxy_redirect off; 18 proxy_set_header X-Forwarded-Proto $scheme; 19 } 20}

試したこと

https://blog.narito.ninja/detail/21/#_2
こちらの記事を参考にしてnginx内の設定ファイルを編集してみたのですが、上手くいきません。

https://www.mathpython.com/ja/django-nginx-conf/
また、こちらの記事も参考にしてみたのですが、上手くいきませんでした。

補足情報(FW/ツールのバージョンなど)

CentOS Linux release 7.9
asgiref 3.4.1
Django 3.2.6
gunicorn 20.1.0
pip 21.2.4
pytz 2021.1
setuptools 39.2.0
sqlparse 0.4.1
typing-extensions 3.10.0.0
uWSGI 2.0.19.1
wheel 0.37.0
Python 3.6.8
pip 21.2.4 from /home/<ユーザーネーム>/<仮想環境名>/lib64/python3.6/site-packages/pip (python 3.6)
また、仮想環境を構築しておりその中でpythonなどを実行するようにしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

回答

SSH等がホストオンリーアダプタで接続出来ているのであれば、
192.168.56.10に接続しにいくのが楽です。
その辺りがよくわからないのであれば、ブリッジアダプタを追加して、ホストと同じネットワーク内にゲストを置くと楽です。

また、関係している要素(よくわからないまま一気にゴールまで行こうとしている)が多いので、
1から全部サポートされているような教材を使うか、
まずはnginxに静的なHTMLを置いてホストからアクセス出来るようにするところを目指すなどした方が良いと思いますよ。


ホスト側のブラウザで見るときに打ち込むipアドレスはenp0s3のipアドレスなのでしょうか、それともenp0s8のipアドレスなのでしょうか?

localhost:8080 または enp0s8のip:80となります。

ブリッジアダプタを追加出来た場合は、
ブリッジアダプタのIP:80になります。

  • 80の場合はブラウザからのアクセスだと省略可能

また、domainは持っていないのですが、domainは別の他のサイトなどで取得する必要があるのでしょうか、それとも自分で勝手作り出せるのでしょうか?

hostsファイルで適当なドメインを名前解決するのが楽です。
mac hosts 開発とかで検索してみて下さい。
適当なドメインとしては、develop.testみたいな感じで、.testを使うと他との衝突が無い事が保証されます。

他には何をinstallする必要があるのでしょうか?

質問内容から網羅的にチェックするのは無理なので、もう少し切り分けが進んで具体的になってから再度質問されるのが良いかと思います。

インストールではありませんが、CentOS側でSELinuxやfirewalldなどは一旦無効化しておいた方が問題の切り分けは楽になります。

そもそもVBで作り出したlinux serverでdjangoをデプロイとかできるのでしょうか?

可能です
django mac VirtualBoxあたりで調べれば殆どそのもずばりな情報が出てくるんじゃないでしょうか。

ホスト側に持っているDjangoのフォルダなどはどうやってゲスト側に送れば良いのでしょうか?

  • SCPやSFTPで送信する
  • VirtualBox mac ファイル共有あたりで調べてVirtualBoxのファイル共有機能を使う
  • Github等のgitリポジトリを経由させる
  • Rsync等で同期させる

など、方法は色々あるので試してみて使いやすいと思う方法を採用して下さい。

投稿2021/08/24 06:16

tanat

総合スコア18716

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kawataku

2021/08/24 08:07

丁寧な回答ありがとうございます。 非常に助かります。 そうですね、一気に全部を理解しないまま終わらせようとしていました。 1から説明がされている教材を買ったりして勉強しながら、作っていこうと思います。 特にdomainの部分は全く調べ方すらもわからない状態でしたので、ありがたいです。
tanat

2021/08/24 08:17

> 1から説明がされている教材を買ったりして勉強しながら、作っていこうと思います。 はい、それが良いかと思います。 > 特にdomainの部分は全く調べ方すらもわからない状態でしたので、ありがたいです。 この辺は確かに分かりにくいところかと思います、これだけ切り出して質問にするくらいの粒度で質問をされると割とすぐに回答が得られるかと思います。(&質問を整理して書いてみた時点で読みなおして、キーワードを考えて検索してみると質問を投稿する前に解決することも多いと思います)
kawataku

2021/08/25 05:27

なるほどです。 なるべく具体的且つ細分化した方がよろしいということですね。 これから、わからないことを検索する時などに実践してみようと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問