「広告」

Django 初期設定 AlmaLinux

「広告」
記事内に広告が含まれています。
「広告」

AlmaLinuxで、Djangoの初期設定を行ってみました。

「広告」

AlmaLinux 8.4 & python3

# ls -al /etc/centos-release 
lrwxrwxrwx. 1 root root 17 May 26 08:38 /etc/centos-release -> almalinux-release

# cat /etc/almalinux-release
AlmaLinux release 8.4 (Electric Cheetah)

↑/etc/centos-release hのファイルは、/etc/almalinux-release へのシンボリックリンクになっています。

8.4というバージョンです。

# whichi python3
/usr/bin/python3
# ls -al /usr/bin/python3
lrwxrwxrwx. 1 root root 25 May 27 17:49 /usr/bin/python3 -> /etc/alternatives/python3
# ls -al /etc/alternatives/python3
lrwxrwxrwx. 1 root root 18 May 27 17:49 /etc/alternatives/python3 -> /usr/bin/python3.6
# python3 --version
Python 3.6.8

↑ python 3.6 が入っています。

ソフトアップグレード

# dnf check-update
# dnf upgrade-minimal

↑ソフトをアップグレードします。

# uname -a
Linux (ホスト名) 4.18.0-305.el8.x86_64 #1 SMP Wed May 19 18:55:28 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
# dnf groupinstall "Development Tools"

↑開発用ツールを入れます。

「広告」

firewall

# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2021-XX-XX XX:XX:XX JST; 5min ago
     Docs: man:firewalld(1)
 Main PID: 12109 (firewalld)
    Tasks: 3 (limit: 11396)
   Memory: 25.9M
   CGroup: /system.slice/firewalld.service
           └─12109 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
systemd[1]: Starting firewalld - dynamic firewall daemon...
systemd[1]: Started firewalld - dynamic firewall daemon.

↑firewallは、標準で稼働をしています。

「広告」

Python3 仮想環境

# dnf install python3-virtualenv
Last metadata expiration check: 0:XX:XX ago on XXX XX XXX 2021 XX:XX:XX XX JST.
Dependencies resolved

(略)

Installed:
  platform-python-devel-3.6.8-37.el8.alma.x86_64                                                                                   
  python3-rpm-generators-5-6.el8.noarch                                                                                            
  python3-virtualenv-15.1.0-19.module_el8.3.0+6191+6b4b10ec.noarch                                                                 
  python3-wheel-wheel-1:0.31.1-2.module_el8.3.0+6191+6b4b10ec.noarch                                                               
  python36-devel-3.6.8-2.module_el8.3.0+6191+6b4b10ec.x86_64                                                                       

Complete!

↑仮想環境がインストールされました。

「広告」

仮想環境の作成

仮想環境を作成します。

virtualenv (環境の名前)
と、「virtualenv」のあとに、適当な名称で指定します。

# useradd (一般ユーザ)
# su - (一般ユーザ)

↑一般ユーザを作成して、そのユーザで仮想環境を作成します。

[(一般ユーザ)@(ホスト名) ~]$ virtualenv venv
Using base prefix '/usr'
New python executable in /home/(一般ユーザ)/venv/bin/python3.6
Also creating executable in /home/(一般ユーザ)/venv/bin/python
Installing setuptools, pip, wheel...done.

↑仮想環境が作成されました。

仮想環境に入ります。

[(一般ユーザ)@(ホスト名) ~]$ source venv/bin/activate
(venv) [(一般ユーザ)@(ホスト名) ~]$

↑「source venv/bin/activate」というコマンドで、仮想環境に入ります。仮想環境に入ると先頭に「(仮想環境名)」(venv)が表示されます。

さて、目的の「django」をインストールします。

(venv) [(一般ユーザ)@(ホスト名) ~]$ pip install django
Collecting django
  Downloading Django-3.2.6-py3-none-any.whl (7.9 MB)
     |■■■■■■■■■■■■■■| 7.9 MB 19.8 MB/s 
Collecting asgiref<4,>=3.3.2
  Downloading asgiref-3.4.1-py3-none-any.whl (25 kB)
Collecting sqlparse>=0.2.2
  Downloading sqlparse-0.4.1-py3-none-any.whl (42 kB)
     |■■■■■■■■■■■■■■| 42 kB 2.3 MB/s 
Collecting pytz
  Downloading pytz-2021.1-py2.py3-none-any.whl (510 kB)
     |■■■■■■■■■■■■■■| 510 kB 80.2 MB/s 
Collecting typing-extensions
  Downloading typing_extensions-3.10.0.0-py3-none-any.whl (26 kB)
Installing collected packages: typing-extensions, sqlparse, pytz, asgiref, django
Successfully installed asgiref-3.4.1 django-3.2.6 pytz-2021.1 sqlparse-0.4.1 typing-extensions-3.10.0.0

↑最新安定版のdjango 3.2.6が入りました。

pip install django==3.0

↑バージョンを指定する場合、「==3.0」などと指定をします。

(venv) [(一般ユーザ)@(ホスト名) ~]$ deactivate
[(一般ユーザ)@(ホスト名) ~]$

↑仮想環境から、抜ける場合は、「deactivate」を実行します。

「広告」

プロジェクトの作成

プロジェクト名を「mysite」として、作成します。

(venv) [(一般ユーザ)@(ホスト名) ~]$ django-admin startproject mysite
(venv) [(一般ユーザ)@(ホスト名) ~]$ cd mysite/
(venv) [(一般ユーザ)@(ホスト名) mysite]$ python 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

↑SQLite 初期設定を行います。

(venv) [(一般ユーザ)@(ホスト名) mysite]$ python manage.py createsuperuser
Username (leave blank to use '(一般ユーザ)'): admindjango
Email address: (メールアドレス)
Password: (パスワード)
Password (again): (パスワード)
Superuser created successfully.

↑DBの管理者のユーザを作成します。
今回は、ユーザ名に「admindjango」を指定しています。
任意のユーザ名を入れます。
メールアドレスとパスワードも入れます。

「広告」

サーバー起動

アプリケーションサーバーを起動させます。

(venv) [(一般ユーザ)@(ホスト名) mysite]$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
XXXX XX, 2021 - 03:14:09
Django version 3.2.6, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

↑起動をしました。

「lynx」コマンドで、チェックをしてみます。

「広告」

lynxコマンド

直接は、Djangoに関係ないですが、lynxコマンドのインストール履歴です。
lynxとは、sshでログインしながら、webにアクセスすることが出来ます。
簡単なチェックに利用出来ます。

[root@(ホスト名) ~]# dnf --enablerepo=PowerTools install lynx
Error: Unknown repo: 'PowerTools'

↑「PowerTools」というリポジトリはない・・・

[root@(ホスト名) ~]# dnf repolist all
repo id                                 repo name                                                                          status
appstream                               AlmaLinux 8 - AppStream                                                            enabled
(略)
powertools                              AlmaLinux 8 - PowerTools                                                           disabled
powertools-debuginfo                    AlmaLinux 8 - PowerTools debuginfo                                                 disabled
powertools-source                       AlmaLinux 8 - PowerTools Source                                                    disabled

↑AlmaLinuxでは、すべて小文字で、「powertools」が正しいようです

[root@(ホスト名) ~]# dnf --enablerepo=powertools install lynx
AlmaLinux 8 - PowerTools                                                                           2.7 MB/s | 2.2 MB     00:00    

(略)

Installed:
  almalinux-indexhtml-8-7.el8.noarch                                    lynx-2.8.9-2.el8.x86_64                                   

Complete!

↑lynxがインストールされました。

# lynx http://127.0.0.1:8000/

↑ 上記のような画面になります。

# lynx http://127.0.0.1:8000/admin/

↑管理画面も表示されました。

「広告」

firewall変更

外部から閲覧するために、firewallを設定します。

[root@(ホスト名) ~]# cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/http-8000.xml
[root@(ホスト名) ~]# vi /etc/firewalld/services/http-8000.xml 


 <port protocol="tcp" port="80"/>
  ↓
 <port protocol="tcp" port="8000"/>

↑ 8000ポート用のファイルを作成して、ファイルの中を変更します。

[root@(ホスト名) ~]# firewall-cmd --permanent --add-service=http-8000
success
[root@(ホスト名) ~]# firewall-cmd --reload
success
「広告」

djangoの外部からの許可設定

(venv) [(一般ユーザ)@(ホスト名) mysite]$ vi mysite/settings.py

ALLOWED_HOSTS = []
 ↓
ALLOWED_HOSTS = ['*']

↑すべて許可

djangoの設定を、世界中どころからでも・・・、と、設定をします。

「広告」

サーバー起動

(venv) [(一般ユーザ)@(ホスト名) mysite]$ python manage.py runserver 0.0.0.0:8000
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
XXXX XX, 2021 - XX:XX:XX
Django version 3.2.6, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

↑外部から許可する場合は、上記のコマンドに「0.0.0.0:8000」を加えて起動します。

「広告」

外部からのアクセス

http://(独自IPアドレス):8000/

↑上記のような画面が出てきます。

http://(独自IPアドレス):8000/admin/

↑「/admin/」でアクセスをすると、上記のようになります。

↑ 事前に設定した、スーパーユーザのID、パスワードで入ると上記のような画面になります。

タイトルとURLをコピーしました