搭建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.
image.png

最终

确认能够访问管理者网站时,关于重新构建最新版本的任务,我将先告一段落。
之前我们也提到了后续的内容,如果你感兴趣,可以参考下面的文章。

 

那么,再见 (`ー´)ノ

广告
将在 10 秒后关闭
bannerAds