使用Django、Ubuntu、AWS、以及Apache 2来配置部署Django应用程序的环境

作为步骤:
1. 在AWS上创建一个虚拟环境(Ubuntu)(本次手动使用SSH登录)
2. 在AWS的虚拟环境中安装Django、Apache2和PostgreSQL
3. 安装Django部署所需的插件,包括在远程环境中运行所需的插件(mod_wsgi)
4. 修改已安装插件的设置,以适应集成服务器环境
5. 如果没有错误,则部署完成。

这次我们将按照这样的进度进行。

1. 使用AWS建立虚拟环境(Ubuntu),本次使用.ssh手动登录。

首先在AWS EC2上获取实例。
如果是云端,可以参考亚马逊网络服务(AWS官方)。

我们将使用Ubuntu 18.04作为本次操作系统。

我們這次使用Apache,但如果不開放80端口,就無法連接到Apache。

请在安全方面,打开入口处的80端口(HTTP协议)和443端口(HTTPS协议)。

使用SSH工具,将[实例密钥对的路径] ubuntu:[实例的公共DNS]作为目标连接。

如果再次写这个太麻烦的话


Host aws
    HostName [パブリックdns]
    User ubuntu
    IdentityFile [キーペアのパス]
    Port 22
    TCPKeepAlive yes
    IdentitiesOnly yes 

如果你写下并记录

$ ssh aws

我认为会运行

在AWS的虚拟环境中安装Django(Python)、Apache2和PostgreSQL。

如果成功进入由无事云创建的虚拟环境,我认为会在用户名@主机名的位置显示ubuntu@公共IP地址。一旦确认无误。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt update
$ sudo apt upgrade

请首先运行“apt”或“apt-get”命令来更新。随后执行操作。

$ sudo apt install python3-pip
$ pip3 install --upgrade pip
$ pip3 install django
$ apt install python-django-common
$ django-admin --version

如果这些命令无法运行

$ sudo su

当我以root用户身份输入命令时,它成功地进行了下载。

完成了Django和Python的安装。

我们接下来要安装Apache 2。

$ sudo apt-get update
$ sudo apt-get install apache2
$ apt-get install apache2-dev
$ service apache2 start

现在,已经成功安装并启动了apache2。

$ sudo apt-get install postgresql

我认为这样就完成了 PostgreSQL 的安装。

在包括安装必要的插件(例如mod_wsgi)的远程环境中部署django所需的插件。

首先,

$ pip3 install mod_wsgi
$ sudo apt-get install python-psycopg2
$ sudo apt-get install libapache2-mod-wsgi-py3

然后安装mod_wsgi和psycopg2。

接下来,我将我的Django应用程序部署到这个云虚拟服务器上。

$ git clone <githubに保存してあるurl>.git

然后,返回要部署的应用程序的主目录。

$ python3 manage.py runserver 

我会敲击。

如果在这里发生错误,我们会对其进行处理。
由于在这里发生错误,无法进行部署,请调整直到错误消失为止。

为了使所添加的插件适配嵌入服务器的环境,需要调整相应的设置。

先决定好postgresql的设置,但在此之前

$ sudo su
# useradd -m <ユーザー名>
# passwd ubuntu
# passwd <ユーザー名>
# passwd postgres

在Ubuntu用户和Postgres用户中为您创建的用户设置密码,可以轻松管理。

从现在开始,我们将考虑这样的目录结构,因为我们不仅要部署Django应用程序还要进行admin文件和配置的设置。

home/ubuntu/django -- djangoadmin   ------ __pycache__
                    |                  |___ settings.py
                    |                  |___ urls.py
                    |                  |___ wsgi.py
                    |                  |___ ___init__.py
                    |
                    |_ djangpapp___ templates
                                 |___ static
                              <以下略>      

现在我们已经确认到这一点,接下来我们将调整psql的设置。

$ sudo -u postgres psql
# create user <ユーザー名> PASSWORD '<PASSWORD>';
# ALTER ROLE <ユーザー名> with SUPERUSER;
# create database django;

现在,我们成功地在PostgreSQL的用户部分创建了一个与虚拟服务器上创建的用户同名的用户。

$ sudo vim django/djangoadmin/settings.py

设置.py

   ~~~~~~~~以下略~~~~~~~~~~ 
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    ~~~~~~~~以下略~~~~~~~~~~

这个

    ~~~~~~~~以下略~~~~~~~~~~
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'django',
            'USER': '<ユーザー名>',
            'PASSWORD': '<PASSWORD>',
            'HOST': 'localhost',
            'PORT': '5432',
        }
    }
    ~~~~~~~~以下略~~~~~~~~~~

這樣改寫:

会使它运作起来。

再次

FATAL: Peer authentication 

如果出现错误

$ sudo find / -name pg_hba.conf

使用命令找到pg_hba.conf文件的路径。

pg_hba.conf文件可以进行本地身份验证。

local  all    all   peer

「を」

local  all    all   md5

进行改写后会动起来。

Apache2的配置方法。

$ sudo vim /etc/apache2/sites-available/django.conf
LoadModule wsgi_module <wsgiモジュールまでのパス>

<VirtualHost *:80>
  ServerName  dnsかipアドレス(ドメイン名)
  DocumentRoot /home/ubuntu/django/

  WSGIDaemonProcess [パブリックdns] user=ubuntu threads=5  python-path=/home/ubuntu/.local/lib/python3.6/site-packages:home/ubuntu/django 
  WSGIProcessGroup [パブリックdns]
  WSGIScriptAlias /<djangoapp> /home/ubuntu/django/djangoadmin/wsgi.py

   Alias /static/ /home/ubuntu/django/djangoapp/static/
  <DIrectory /var/www/Django/Django-slackmyapp/static>
    Require all granted
  </Directory>

  <Directory /home/ubuntu/django/djangoadmin/>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>

</VirtualHost>

如果不知道到site-packages的路径,
就可以输入以下命令搜索:
$ sudo find / -name site-pakeages

可以在这个地方确认。

最后

$ sudo vim /etc/apache2/apache2.conf
<Directory /var/www/>
        Require all granted
</Directory>
$ sudo a2dissite 000-default
$ sudo a2ensite django
$ sudo systemctl restart apache2
$ sudo systemctl enable apache2

我认为它应该可以正常运行。

重新加载命令

$ sudo service apache2 restart

错误确认命令

$ cat /var/log/apache2/error.log
广告
将在 10 秒后关闭
bannerAds