使用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