django練習:() 作成者:kiyo 記録日:2024年5月27日22:35
django練習での記録簿

django settings.py DEBUG=Falseについて

Debug=False にすると静的ファイルが読み込めない CSS とか JS
なので少し調べてみた


Whitenoiseを使う方法


pip install whitenoise
この後 setting.py に記入
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'whitenoise',  # add
]



MIDDLEWARE = [
   'xxxxxxxxx',
   'whitenoise.middleware.WhiteNoiseMiddleware', # add
].



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

STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
    STATIC_DIR,
)

DEBUG=False に編集後 python manage.py collectstatic とする

これで静的ファイルが読めるらしい

参考サイト



別の方法(公式かはわかりませんがうまく動きました)

urls.pyに記入 ps: mediaも追加しています。

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

static_patterns = [
    re_path(r"^%s(?P<path>.*)$" % re.escape(settings.STATIC_URL.lstrip("/")),
            serve,
            {'document_root': settings.STATIC_ROOT}),
    re_path(r"^%s(?P<path>.*)$" % re.escape(settings.MEDIA_URL.lstrip("/")),
            serve,
            {'document_root': settings.MEDIA_ROOT}),

] if not settings.DEBUG else []

urlpatterns = static_patterns + [
    path('admin/', admin.site.urls),
    path('xxxxx' xxxx),
]


django練習:() 作成者:kiyo 記録日:2024年1月31日23:08
django練習での記録簿

sqlite.db json形式で export

ubuntu22.04LTS
apt install sqlite3
mkdir sqlite-json-export && cd sqlite-json-export
ここへ既存のsqlite.dbをコピーする

sqlite json export

sqlite3 接続

sqlite3 dj-blog.sqlite3 (データベース名)

jsonモードへ

sqlite> .mode json

export用 jsonファイルを作成

sqlite> .once blog_bbstitle.json (書き込むJSONファイル名) // ①

実際へ書き込む

sqlite> select * from blog_bbstitle;  //②


エクスポートしたいテーブルだけ①と②を繰り返す  
②でタイポー等した場合も①からやり直す





終わり

djangoならもっと簡単だった。

jsonデータをエクスポート

python manage.py dumpdata > data.json

作ったjsonデータをインポート

python manage.py loaddata  data.json

ちなみに試してはいない


django練習:() 作成者:kiyo 記録日:2019年10月31日21:26
django練習での記録簿

django nginx+gunicorn 自鯖にデプロイ

参考にさせてもらったサイト

django filterの使い方
django チート
djangoでのSQL

開発環境で作成した djangoをサーバーへコピー
仮に 
django-admin startproject mysite
django-admin startapp blog
で作成したとすると
 cd ~/mysite/mysite
 vim settings.py
  DEBUG = True->False

  ALLOWED_HOSTS = [] ->['サーバ名(IPアドレス)']  #又は['*'] 何でもあり どこで見たか忘れたがセキュリティ上 非推奨だったような?

  STATIC_URL = '/static/'
  STATIC_ROOT = '/usr/share/nginx/html/static'
  #  STATICFILES_DIRSの設定をしているならコメントアウト
  #  STATICFILES_DIRS = [
  #    os.path.join(BASE_DIR, 'static'),
  # ]

  # media の設定もあるなら変更
  MEDIA_URL = '/media/'
  MEDIA_ROOT = '/usr/share/nginx/html/media'

python 3.7を使って構築する場合

sudo mkdir /usr/share/nginx/html/media
sudo mkdir /usr/share/nginx/html/static

sudo pip3.7 install django django-markdownx ほかのパッケージも使っていればそれも
sudo pip3.7 install  gunicorn

cd ~/mysite
sudo python3.7 manage.py collectstatic

自分の場合media、startic/css,static/img, static/jsが空だったので強制コピーした。

nginxの設定

sudo vim /etc/nginx/conf.d/project.conf

server {
    listen  80;
    server_name サーバ名かIPアドレス;
    #  画像ファイル等扱う場合 規定値1Mなので増やす
    client_max_body_size 10M;

    location /static {
        alias /usr/share/nginx/html/static;
    }

    location /media {
        alias /usr/share/nginx/html/media;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

ssl等の設定もあれば付け足す。

Gunicornを使って動かしてみる。

cd ~/mysite
sudo gunicorn --bind 127.0.0.1:8000 mysite.wsgi:application
デーモンを使った場合
sudo gunicorn --daemon --bind 127.0.0.1:8000 mysite.wsgi:application

gunicornの起動ファイルを作る。

gunicorn動作させている場合は再起動するか、kill コマンド等で一旦止める

sudo vim /etc/systemd/system/mysite.service


[Unit]
Description=gunicorn
After=network.target

[Service]
WorkingDirectory=/home/ユーザ/mysite
ExecStart=/usr/local/bin/gunicorn --bind 127.0.0.1:8000 mysite.wsgi:application

[Install]
WantedBy=multi-user.target



systemctl を使って起動

sudo systemctl start mysite  
# 起動確認したら、  
sudo systemctl stop mysite    #停止
sudo systemctl enable mysite



オープンなクラウド:() 作成者:kiyo 記録日:2019年6月25日21:03
クラウドシステムの調査中

lxcからlxdへ

このBBSも古くなってubuntu18.04では動かない。
そこでubuntu18.04にlxdを使ってubuntu16.04を作りその中で動かす。

lxdインストール

sudo snap install lxd --channel=3.0

sudo lxd init <-- 今回よくわからないのですべてエンターで
次にubuntu16.04のシステムを作成

lxc launch ubuntu:16.04 ub16
ub16 を作成中
ub16 を起動中
シャットダウンするには
lxc stop ub16
再度起動するには
lxc start ub16
ub16に入るには
lxc exec ub16 bash
root@ub16:~#  <-- ここで apt で必要な物を入れる 意外にも rsync が入ってなかった。
apt update
apt install ssh rsync nodejs npm -y
この後 /home/ubuntu にパスワード( passwd ubuntu )を設定して ssh-keygen -t rsa sshキーでホストから接続できるようにした。
su - ubuntu   <--  ユーザ ubuntuで作業
次に最低限のポートをあける。
sudo ufw default deny
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8200/tcp <-- このblogを動かすポート
sudo ufw enable
sudo service ufw restart

コンテナ(ub16)のIPアドレスを固定したい。

lxc stop ub16 
lxc network attach lxdbr0 ub16 eth0
lxc config device set ub16 eth0 ipv4.address 10.191.73.100 
lxc start ub16

ホストを再起動した時に自動で ub16を起動するには

lxc config set ub16(コンテナ名) boot.autostart 1 で有効,0で無効になるらしい.   




サーバ関連:() 作成者:kiyo 記録日:2019年5月26日21:25
コマンド等、主に記録用

AMDGPUでエンコード

構成
ubuntu18.04
Radeon RX580 8G
ダウンロード
AMF-1.4.9.tar.gz https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/tag/v1.4.9
ffmpeg-4.1.3.bz2
amdgpu-pro-19.10-785425-ubuntu-18.04.tar.xz(いるかな?)

Radeon RX 580用ドライバー準備

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt get update
sudo apt upgrade -y

AMF-1.4.9.tar.gzを解凍して amf/public/include /usr/local/include/AMFへコピー
一応 export PATH=/usr/local/include/AMF:/usr/local/include/AMF/components:/usr/local/include/core:$PATH

sudo vi /etc/apt/source.list
# deb-src のコメント( # )をすべてはずす。
sudo apt update
sudo apt build-dep ffmpeg    <- ffmpegをビルドするのに必要なファイルを入れる  

ffmpeg-4.1.3.tar.bz2を解凍

tar xf ffmpeg-4.1.3.tar.bz2 && cd ffmpeg-4.1.3
./configure
make
sudo make install

試してみる。

普通に
time ffmpeg -i test.ts test.mp4
30分のtsファイルが4分で完了CPUに負荷あり 2.3G -> 512M
ハードウエアエンコード
time ffmpeg -vaapi_device /dev/dri/renderD128 -i test.ts -vf 'format=nv12,hwupload' -c:v h264_vaapi -q 28 test.mp4
役半分の時間で完了 CPU負荷ほとんど無し 2.3G -> 1.6G
-q の数値が小さくなると制度が上がり大きなふぁいるになる。

qsv + ffmpeg

Ubuntu 18.04 + media-driver + ffmpeg4 QSVエンコード


django練習:() 作成者:kiyo 記録日:2018年10月30日21:27
django練習での記録簿

mongodbのデータをJson形式に変換してdjango内のデータベースへ

myapp/fixtures/data.jsonに jsonファイルを書いて
python manage.py loaddata data.jsonで読み込む


Meteor:() 作成者:kiyo 記録日:2018年10月18日21:29
Meteorについてのお話しましょう

mongodb をjson形式に変換するには

sudo apt install mongo-tools 

mongoexport -d database -c collection -o filename.json

-d データベース名
-c テーブル名
-o 出力先ファイル名


django練習:() 作成者:kiyo 記録日:2018年8月20日21:22
django練習での記録簿

Jetbrains IDEA vagrantのdjangoで作業できるように関連づける

まず IDEAを日本語化する。
今回はLinux版をダウンロード
http://mergedoc.osdn.jp/#pleiades.html#PLUGIN から対応したOS用をダウンロードして解凍すると
pluginsフォルダーにjp.sourceforge.mergedoc.pleiadesと言うフォルダーがあるので
idea-IU-xxxx/plubinsへコピーする
vi などのエデッターで idea-IU-xxx/bin/idea64.vmoptionsを開き
最下行に

-Xverify:none
-javaagent: (idea-IU-xxxのあるpath)/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

私の例

-Xms2G (メモリーに余裕があるので -Xms128m を変更)
-Xmx4G (メモリーに余裕があるので -Xmx512m を変更)
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
-Xverify:none
-javaagent:/home/kiyo/idea-IU-182.3684.101/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

idea を起動して前回再生したmyappをopenする
ファイルー>設定ー>ツールー>vagrantをクリック

vagrant実行可能ファイル vagrant  
インスタス・フォルダ d:\vagrantwork\django_ub18  
Box を
bento/ubuntu-18.04をマークしてOKをクリック

ファイルー>設定ー>ツールー>ssh ターミナルをクリック

接続設定

現在のvagrantにチェックしてOK






接続設定

現在のvagrantにチェックしてOK



vagrant 起動、停止、再起動等
ツールー>vagrantから選択




vagrant 起動、停止、再起動等

ツールー>vagrantから選択

アップ
再ロード
停止 等から選択する


ツールー>sshセッション開始
で下部に[127.0.0.1][localhost]ダブが表れる
[127.0.0.1]をクリックするとvagrant 内部(ubuntu-18.04)で作業できる。

プロジェクト構造の設定は
ファイルー>プロジェクト構造をクリックし表示されたウインドウのプロジェクト設定の下にあるプロジェクトをクリック
プロジェクトSDKの値は 新規(N)...ボタンから vagrant内部のenvフォルダーを選択する



練習用:() 作成者:kiyo 記録日:2018年8月12日21:17
お試しにどうぞ

GitLab導入のリンク

gitlabリンク


django練習:() 作成者:kiyo 記録日:2018年8月4日21:13
django練習での記録簿

pip でインストールしたモジュールを確認するコマンド

pip freeze