最新の投稿

django-breeze デプロイ
カテゴリー:django 作成日:2025年6月15日16:28

事前準備

conf/settings.py


import os #add

DEBUG=Fasle

ALLOWED_HOSTS = ['127.0.0.1', 'サーバー名']

INSTALLED_APPS = [
  *********,
  'whitenoise',  # add
]

MIDDLEWARE = [
  **********,
'whitenoise.middleware.WhiteNoiseMiddleware', # add

]

STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')


conf/urls.py

from django.contrib import admin
from django.urls import path, include, re_path # add include, re_path 
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.views.static import serve # add
import re #add

urlpatterns = [
    path(settings.ADMIN_PATH + '/', admin.site.urls), # settings.ADMIN_PATH admin以外でadminに入る設定
    path('markdownx/', include(('markdownx.urls','markdownx'))),
    re_path(r"^%s(?P<path>.*)$" % re.escape(settings.MEDIA_URL.lstrip("/")),
            serve,
            {'document_root': settings.MEDIA_ROOT}),
    path('', include('blog.urls')),
]
urlpatterns += staticfiles_urlpatterns()

# 開発環境でのメディアファイルの配信設定
urlpatterns += static(
    settings.MEDIA_URL,
    document_root=settings.MEDIA_ROOT
)

この後

vscode ターミナルで

npm run build

python manage.py  collectstatic

コードを修正して build + collectstatic し直す場合は

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

で設定したフォルダー(この場合 static)の中身を消去してやり直す

ps:

nginx


    location /static {
          alias /var/www/html/static;
      }


    #location /media {
    #   alias /var/www/html/media;
    #}

など設定する場合は
    chmod 777 -R /var/www/html
など設定した   

複数サイトを立ち上げる時 axiosを使うばあいの注意


axios.get('/api/posts/') //'http://127.0.0.1:8080/api/posts/')


http://127.0.0.1:8080を書かないほうが柔軟に対応できる

ポート8080, 8000, 8001 等i色々使える為

しかし書き込み時ではやはりhttp://127.0.0.1:8080は必要になる

そこでreactでも .envを使う方法


srcフォルダー内に .envつくって以下を記入

VITE_API_URL=127.0.0.1:8080  //viteのばあい

xxx.jsx側で


const uploadImage = () => {
  const [image, setImage] = useState()
  const [onBtn, setOnBtn] = useState(false)   
  const [data, setData] = useState('')

  const apiUrl = import.meta.env.VITE_API_URL 
  const URL = `${apiUrl}/upload/`

  const Submit=async()=>{
        const fdata = new FormData()
        fdata.append('image', image)
        const requestOptions={
            method:"POST",
            body:fdata,
        }
        const response =await fetch(URL,requestOptions)
        const data=await response.json()
        const imageUrl = data.image
        setData(imageUrl)
    }


}

gunicorn も ソケット形式では複数サイトは無理のようだ

/etc/systemd/system/xxxx.service

[Unit]
Description=gunicorn daemon
After=network.target


[Service]
User={user}
Group=www-data
WorkingDirectory=/home/{user}/djb-blog-pg
# ExecStart=/home/{user}/djb-blog-pg/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/{user}/djb-blog-pg/conf.sock conf.wsgi:application
ExecStart=/home/{user}/djb-blog-pg/venv/bin/gunicorn  --bind  127.0.0.1:8080 conf.wsgi:application

[Install]
WantedBy=multi-user.target

{user} あなたの名前へ変更します # ExecStart=/home/{user}****がソケットでの処理です

消すかも知れませんが複数サイトのテストサイト以下にあります

開発中てすとサイト


長い文字列を改行するには
カテゴリー:tailwind 作成日:2025年4月30日22:10

tableでの長い文字列の改行

firefoxは勝手に改行されるけど
chromeは次のカラムが見えなくなる


<table>
    <tbody>
        <tr>
            <td className="wordbreak: break-all">{image.url}</td>
        </tr>
    </tbody>
</table>


django-otp 二要素認証
カテゴリー:django 作成日:2025年1月26日21:58

google Authenticator(スマホアプリ)とdjango認証

すでに構築済みに二要素認証を追加する簡単な方法

(venv)$ pip install django-otp qrcode

setting.py に追加

INSTALLED_APPS = (

    ...

    'django_otp',
    'django_otp.plugins.otp_totp',
    'django_otp.plugins.otp_static',

    ...


)

MIDDLEWARE = (
    ...
    'django_otp.middleware.OTPMiddleware',
    ...
)

migrateの実行

(venv)$ python manage.py migrate

superuserを作っていなければ作る

(venv)$ python manage.py createsuperuser

user:
email:
password:
確認用password:
を入力

この跡 adminを実行する

(venv)$ python manage.py runserver

localhost:8000/adminを実行



localhost:8000/adminを実行し
左図のようにTOTP Devices +追加で
User:枠に ユーザ名を入れ右の検索ボタンを押す
ブラウザーが開くので登録したadminユーザを選択して日付、時刻など入力後保存する。




次にqrcodeを表示させる


赤枠のqrcodeをクリック




qrcodeが表示される

google Authenticator(スマホアプリ)に追加する


urls.pyに追加

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.views.generic.base import TemplateView
from django_otp.admin import OTPAdminSite # 追加

urlpatterns = [
    path('admin/', admin.site.urls),
    ...
    path('', include('blog.urls')),

]

# admin でdjango-otp
admin.site.__class__ = OTPAdminSite # 追加

この設定後adminでのログイン画面

OTP Token枠が表示される
ここにはスマホのgoogle Authenticatorの6文字を入力する。



ここではincludeした blog.urls.pyにloginを追加

from django.urls import path
from . import views
#from django.contrib.auth import views as auth_views
from django.contrib.auth.views import LoginView
from django_otp.forms import OTPAuthenticationForm


app_name = 'blog'

urlpatterns = [
    path('', views.PostList.as_view(), name='post_index'),
    path('login/', LoginView.as_view(authentication_form=OTPAuthenticationForm,template_name='login.html'), name='login'),
 ]

最後にtemplates/ligin.htmlを作成
{% load tailwind_filters %}は pip install django-tailwindを使ってるため

{% extends "base.html" %}
{% load tailwind_filters %}

{% block title %}ログイン | {{ block.super }}{% endblock %}

{% block content  %}


<form action="." method="POST" class="max-w-sm mx-auto text-sm font-medium">
    {% csrf_token %}
    <div class="form-row"> {{ form.username.errors }}{{ form.username.label_tag }}{{ form.username }} </div>
    <div class="form-row"> {{ form.password.errors }}{{ form.password.label_tag }}{{ form.password }} </div>
    {% if form.get_user %}
    <div class="form-row"> {{ form.otp_device.errors }}{{ form.otp_device.label_tag }}{{ form.otp_device }} </div>
    {% endif %}
    <div class="form-row"> {{ form.otp_token.errors }}{{ form.otp_token.label_tag }}{{ form.otp_token }} </div>
    <div class="submit-row">
        <input type="submit" value="ログイン" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"/>

    </div>
</form>
{% endblock content  %}

これによりlogin画面も OTP Tokenが追加表示される。

login画面も OTP Tokenが追加表示される。



LVM挑戦
カテゴリー:BIOS等 作成日:2024年11月28日23:05

ProxmoxでLVM作成+結合の練習を行う

後日に参照しても分かるようになるべく楽して(コマンド少なく)やりたい。

xubuntu24.04 LTS isoのLiveモードを起動してインスールを行う


全容を簡単に説明する

xubuntu24.04.iso をdvd又はuseにつくる
最初1台のssdにLVM機能を使ってインストール
インストールを終了後2台目を追加
xubuntu24.04 cdかusbで再度起動し
gpartedを使って追加した2台目のssdをlvm2 pvにてフォーマット
PV(Phisical Volume)
VG(Volume Group)
LV(Logical Volume)
上記コマンドで結合して2台で ( / )領域を共有する

それでも容量がたりない場合同様の要領で追加可能

インストール 1


 日本語の選択をして
 次をクリック



インストール 2


 日本語キーボードの選択
 枠の中でキーの試し打ちをして
 よければ 次をクリック


インストール 3


 対話式インストールを選択して次をクリック


インストール 4


 Minimalを選ぶと基本的なものをインストール
 最初はDesktopを選択する方が良いと思う(後から削除する事も可能)
 ここではディスク容量が少ないのでMinimalを選択した。
 次をクリック


インストール 5


 ディスクを削除して Xubuntu をインストールにチェックをいれ
 高度な機能...をクリック


インストール 6


 LVMを使用 にチェックする




インストールを完了して2台目のssdを追加しインストールに使ったcdかusbで再起動後 gparted を開く


 インストールを終了したら
 240gbのssdを取り付けて
 再起動してもう一度 Xubuntu24.04 LTS のISOをLIVEモード起動して
 メニュー ー> システム ー> gpartedを選択して確認する


240g ssdの設定 1


 /dev/sdbを選択し
 メニュー ー> Device ー> Create Partition Table 選択


240g ssdの設定 2


 BiosでUEFI boisに設定しているので gptを選択
 もしlegacy biosなら msdosを選択する


240g ssdの設定 3


 gptを選択した。


240g ssdの設定 4


 メニュー Partition ー> NewでPartitionを作る


240g ssdの設定 5


 すべての Partitionを ext4 に割り当てる


240g ssdの設定 6


 その後作成した New Partition #1を選択し 
 メニューの Partition ー> Format to ー>lvm2 pvを選択する


240g ssdの設定 7


 lvm2 pvになっている事を確認


240g ssdの設定 8

 メニューの Apply アイコンで設定を反映する。



240g ssdの設定 9


 左端が少し切れてしまったがインストール後に
 240Gssd を追加しLiVE usbでGpartedで設定したばかりの
 rootになって コマンド lsblkを叩いたところです。 
 sda 64G
  sda3 lvmになっているのがわかる
 sdb 240G


240g ssdの設定 10


 ここでは sdb1も設定されている


240g ssdの設定 11


 pvscan
 /dev/sda3 VG ubuntu-vg lvm2
 /dev/sdb1       lvm2
 Total: で容量が まだ 62.00 Gで結合がされていないのがわかる


240g ssdの設定 12


 pvscan で VGの名前が ubuntu-vg だと解り
 vgextend ubuntu-vg /dev/sdb1 ubuntu-vgに結びつけている。


240g ssdの設定 13


 vgdisplay -v
 LV Name  ubuntu-lv
 VG Name ubuntu-vg
 など確かめる


240g ssdの設定 14


 lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lvで ubuntu-lvに結びつけている。


240g ssdの設定 15


 resize2fs /dev/ubuntu-vg/ubuntu-lvでフォーマットするつもりだったが
 Please 'e2fsck -f /dev/ubuntu-vg/ubuntu-lv' firstと怒られたので
 e2fsck -f /dev/ubuntu-vg/ubuntu-lv 実行後
 resize2fs /dev/ubuntu-vg/ubuntu-lv とした。

 df -h
 ubuntu-lv 301.99gと表示されているが
 いつもの df -hの表示とは少し違うような?


240g ssdの設定 16


 再起動してインストールした xubuntu24.04から df -hを実行
 いつもの見慣れた df -h 
 /dev/mapper/ubuntu-vg/ubuntu-lv 297G となり成功したようだ。



mbrとgpt
カテゴリー:BIOS等 作成日:2024年11月28日21:25

古すぎるPC

私のつかっているPCはあまりに古い
dell T350, T550, T750, (全部で9台ある)
BIOSの設定にUEFI等見当たらないので2TBまでしかシステムを起動不可能という事はなんとなく
知ってはいたのだが
windows 7 -> windows10 もうそろそろサポート終了かな
windows11はuefiでないとアップデートできなくなると誰が言ったか知らないが気になる。
そもそも最近はもっぱら xubuntuを使っていたので、、、
どうしようか
もちろん古いPCは速度も遅いなので HDD->SSDへ変更するとだいぶましになった
アマゾンで少し又少しと買った結果 240Gb(3個),480から500Gb(4個),1TB(5個),2TB(2個)
最近 xubuntu24.04 LTS に変更ついでに240Gb( / )+500Gb( /home )構成でインストール完了した。


これはもったいない

/dev/sda1 198Gも使われていない

何とか198Gを/homeで使う方法はないか

調べた結果 LVMで何とかなるらしいので又挑戦してみよう