搭建Django环境(2023版)
首先
因为之前在下面的文章中构建了Django环境,但是我想重新以最新版本构建我以前创建的环境,所以我将记录下这个过程。
前提条件 tí
-
- 今回構築するDjango環境は、DBはPostgreSQLにし、それ以外は基本デフォルトの構成で構築します。
-
- 今回は、検証目的で環境を構築するので、基本はrootユーザで作業を実施しますので、その点はご了承ください。
- 今回使用するOSバージョンは下記である。
# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.2 (Plow)
- 今回使用するPython バージョンは下記である。
# python3.11 -V
Python 3.11.2
- 今回使用するPostgreSQLバージョンは下記である。
# postgres --version
postgres (PostgreSQL) 16.0
配置环境
(1)设置Python环境
在Redhat9的环境中,安装时必须指定到次要版本,因此请使用以下命令进行安装。
各个版本如下所示。
[root@ip-10-192-0-181 ~]# dnf install python3.11 python3.11-pip
[root@ip-10-192-0-181 ~]# python3.11 -V
Python 3.11.2
[root@ip-10-192-0-181 ~]# pip3.11 -V
pip 22.3.1 from /usr/lib/python3.11/site-packages/pip (python 3.11)
(2) 设置PostgreSQL环境
接下来,使用以下内容建立 PostgreSQL 16.0 版本的环境。
[root@ip-10-192-0-181 ~]# dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[root@ip-10-192-0-181 ~]# dnf module disable postgresql
[root@ip-10-192-0-181 ~]# dnf install postgresql16-server
[root@ip-10-192-0-181 ~]# vi /etc/profile
--
export PATH=/usr/pgsql-16/bin/:$PATH
※末尾に追記。
--
[root@ip-10-192-0-181 ~]# source /etc/profile
[root@ip-10-192-0-181 ~]# echo $PATH
/usr/pgsql-16/bin/:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@ip-10-192-0-181 ~]# postgres --version
postgres (PostgreSQL) 16.0
・データベースの初期化
[root@ip-10-192-0-181 ~]# postgresql-16-setup initdb
・アクセス設定を「md5」に指定
[root@ip-10-192-0-181 ~]# vi /var/lib/pgsql/16/data/pg_hba.conf
--
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
↓
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
--
・PostgreSQLを起動/自動起動及びステータス確認
[root@ip-10-192-0-181 ~]# systemctl start postgresql-16 && systemctl enable postgresql-16
[root@ip-10-192-0-181 ~]# systemctl status postgresql-16
・Django用のDB構築
[root@ip-10-192-0-181 ~]# sudo -u postgres psql -U postgres
postgres=# CREATE USER django WITH PASSWORD 'django';
postgres=# CREATE DATABASE djangodb OWNER django;
postgres=# \l djangodb
List of databases
Name | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges
----------+--------+----------+-----------------+-------------+-------------+------------+-----------+-------------------
djangodb | django | UTF8 | libc | en_US.UTF-8 | en_US.UTF-8 | | |
(1 row)
postgres=# \q
(3) Django环境的设置
Django的初始构建是通过以下步骤进行的。
[root@ip-10-192-0-181 ~]# mkdir /opt/django && cd /opt/django
[root@ip-10-192-0-181 ~]# pip3.11 install virtualenv
[root@ip-10-192-0-181 ~]# virtualenv django
[root@ip-10-192-0-181 ~]# source django/bin/activate
(django) [root@ip-10-192-0-181 ~]# pip3.11 install django psycopg2-binary django-bootstrap4
(django) [root@ip-10-192-0-181 django]# pip3.11 list
Package Version
----------------- -------
asgiref 3.7.2
beautifulsoup4 4.12.2
Django 4.2.7
django-bootstrap4 23.2
pip 23.3.1
psycopg2-binary 2.9.9
setuptools 68.2.2
soupsieve 2.5
sqlparse 0.4.4
wheel 0.41.2
(django) [root@ip-10-192-0-181 ~]# python3.11 -m django --version
4.2.7
执行”startproject”以创建项目”qiita”。
注意,在当前目录下加上点号即可生成Django项目,无需创建多余的目录层次。
(django) [root@ip-10-192-0-181 ~]# django-admin startproject qiita .
修改整个Django项目的配置值
#変更点①(接続許可範囲を設定)
ALLOWED_HOSTS = []
↓
ALLOWED_HOSTS = ['*']
#変更点②(DBをsqliteからPostgreSQLに変更)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
↓
DATABASES = { #※1
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'djangodb',
'USER': 'django',
'PASSWORD': 'django',
'HOST': 'localhost',
'PORT': '',
}
}
#変更点③(Djangoの表示言語を変更)
LANGUAGE_CODE = 'en-us'
↓
LANGUAGE_CODE = 'ja'
#変更点④(タイムゾーンを変更)
TIME_ZONE = 'UTC'
↓
TIME_ZONE = 'Asia/Tokyo'
只需在Django的setting.py中定义数据库连接信息,就可以与数据库进行协作。以下是根据连接信息与应用进行协作。
数据库名称:djangodb
用户名:django
密码:django
主机名:localhost
端口:由于未指定,将使用默认的PostgreSQL端口”5432″。
进行迁移
(django) [root@ip-10-192-0-181 ~]# python3.11 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
在Django中设置管理用户
※电子邮件地址不是必填项,可选择不输入。
(django) [root@ip-10-192-0-181 ~]# python3.11 manage.py createsuperuser
ユーザー名 (leave blank to use 'root'):
メールアドレス:
Password:
Password (again):
Superuser created successfully.
打开应用程序,确认对WEB的访问。
※访问指定的URL,如果能成功访问,则表示OK。
※在访问管理者网站时,请添加“/admin”到末尾,例如“http://10.192.0.181:8000/admin”。
(django) [root@ip-10-192-0-181 ~]# python3.11 manage.py runserver 10.192.0.181:8000
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
November 01, 2023 - 18:17:58
Django version 4.2.7, using settings 'qiita.settings'
Starting development server at http://10.192.0.181:8000/
Quit the server with CONTROL-C.
最终
确认能够访问管理者网站时,关于重新构建最新版本的任务,我将先告一段落。
之前我们也提到了后续的内容,如果你感兴趣,可以参考下面的文章。
那么,再见 (`ー´)ノ