https://jp.ubuntu.com/download
RufusでUbuntuのインストールメディアを作成できる。
sudo apt install -y htop nvtop git vim openssh-server
/etc/skel/
に入っている.bashrc
などのファイルは新規ユーザ作成時のデフォルト設定として読み込まれる。
sudo add-apt-repository ppa:graphics-drivers/ppa
使用中のカーネルを確認しておく。
uname -r
GRUBのカーネル一覧を確認する。
sudo grep menuentry /boot/grub/grub.cfg
デフォルトで起動するカーネルを設定する。/etc/default/grub
のGRUB_DEFAULT=0
においてメニュー番号で"1>4"
のように選択順を指定できる。
最後に変更を反映させる。
sudo update-grub
sudo apt install -y xrdp
~/.xsessionrc
に接続時の設定を記述する。
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
$ mkdir /data
$ sudo chmod 777 /data
ディレクトリにスティッキービットを設定することで、他のユーザがファイルを削除できないようにする。
$ sudo chmod +t /data
$ sudo fdisk -l
...
Disk /dev/sdb: ... GiB, ... bytes, ... sectors
...
Device Start End Sectors Size Type
/dev/sdb1 ...
/dev/sdb2 ...
...
/etc/fstab
に追記する。
/dev/sdb2 /data auto defaults 0 0
各項目の詳細はこちら。
$ sudo mount -a
etc/supervisor/conf.d/
にxxx.conf
を作成する。
[program:サービス名]
directory=実行ディレクトリのパス
command=実行コマンド
user=起動ユーザ名
autorestart=true
stdout_logfile=ログファイルパス
numprocs=1
$ sudo systemctl restart supervisor
$ sudo iptables -L
$ sudo iptables -A INPUT -p tcp -s IPアドレス --dport ポート番号 -j ACCEPT
$ sudo iptables -D INPUT 行番号
$ sudo iptables -P INPUT DROP
$ sudo iptables -A INPUT -p tcp --dport ポート番号 -j DROP
$ sudo /etc/init.d/netfilter-persistent save
$ sudo /etc/init.d/netfilter-persistent reload
/etc/apt/source.list
にuniverse
が含まれていることを確認。
秘密鍵・公開鍵を作成する。(RSA、2048bit)
$ ssh-keygen -t rsa -b 2048
秘密鍵は~/.ssh/id_rsa
に、公開鍵は~/.ssh/id_rsa.pub
に保存される。
~/.ssh/authorized_keys
にクライアントの公開鍵を追加する。
/etc/ssh/sshd_config
のClientAliveInterval
とCilentAliveCountMax
を設定する。
以下の設定では60秒毎に接続確認を行い、3回以上接続確認ができなかった場合はSSH接続を切断する。
要するに180秒間応答なしの場合は切断。
ClientAliveInterval 60
ClientAliveCountMax 3
/etc/ssh/sshd_config
の下記のように編集する。
PubkeyAuthentication yes
PasswordAuthentication no
Key
には~/.ssh/id_rsa.pub
の中身をコピペする。
$ git remote set-url origin git@github.com:user/repo.git
$ openssl req -newkey rsa:2048 -keyout server.key -out server.csr
$ openssl rsa -in server.key -out server.pem
$ cat 中間証明書 >> サーバ証明書
$ sudo a2enmod ユーザディレクトリ
mod_ssl
をインストールする。
$ yum -y install mod_ssl
/etc/apache2/sites-available/default-ssl.conf
を編集し、SSL証明書のパスを入力する。
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName ホスト名
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile SSL証明書のパス
SSLCertificateKeyFile 秘密鍵のパス
SSLCertificateChainFile 中間証明書のパス
</VirtualHost>
</IfModule>
シンボリックリンクを作成する。
$ sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf
設定を反映する。
$ sudo systemctl restart apache2
シンボリックリンクを作成する。
$ sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
/etc/apache2/mods-available/userdir.conf
を編集する。
AddHandler
にはCGIとして動作させたいファイルの拡張子を入力する。
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride None
Options +ExecCGI
Require all granted
AddHandler cgi-script .cgi .py
</Directory>
</IfModule>
最後に設定を反映する。
$ sudo systemctl restart apache2
適当なconf
ファイルを作成し、以下のように記述します。
server {
listen 443 ssl;
server_name FQDN;
ssl_certificate SSL証明書のパス;
ssl_certificate_key 秘密鍵のパス;
}
シンボリックリンクを作成する。
$ sudo ln -s confファイルのパス /etc/nginx/sites-enabled/
設定を反映する。
$ sudo systemctl restart nginx
/etc/fail2ban/jail.local
に記述する。
[xxx]
enabled = true
port = http,https
filter = xxx
logpath = /var/log/nginx/access.log
action = iptables-multiport[name=404, port="http,https", protocol=tcp]
maxretry = 1
findtime = 30
bantime = -1
ignoreip = IPホワイトリスト(スペース区切り)
/etc/fail2ban/filter.d/xxx.conf
に正規表現を記述する。
ignoreregrex
でCSSやJSを指定しておくことで誤BANを防ぐ。
[Definition]
failregex = ^.*"(GET|POST).*" (403|404) .*$
ignoreregex = \.(jpe?g|js|css)
正規表現のマッチング結果については下記コマンドで確認できる。
$ fail2ban-regex /var/log/access.log xxx.conf --print-all-matched
BAN情報は下記コマンドで確認できる。
$ sudo fail2ban-client status xxx
https://download.qt.io/linguist_releases/
https://github.com/lelegard/qtlinguist-installers/releases
バージョン6からは.pro
による更新が不可になった。
$ pylupdate6 xxx.py ... -ts ja_JP.ts
#define MyAppName "アプリケーション名"
#define MyAppVersion "バージョン番号"
#define MyAppPublisher "作成者名"
#define MyAppURL "ホームページのURL"
#define MyAppExeName "バイナリ名(EXE)"
[Setup]
AppId={{...}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={%USERPROFILE}\{#MyAppName}
DisableProgramGroupPage=yes
LicenseFile=ライセンスファイルのパス
PrivilegesRequired=lowest
Compression=lzma
SolidCompression=yes
WizardStyle=modern
OutputBaseFilename=インストーラ名
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "バイナリがあるディレクトリパス\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "バイナリがあるディレクトリパス\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Windowsの「設定」→「システム」→「オプション機能」→「Windowsのその他の機能」にある「Linux用Windowsサブシステム」と「Virtual Machine Platform」を有効化する。
ターミナルを管理者権限で実行し、ディストリビューションをインストールする。
$ wsl --install -d Ubuntu-22.04
WSL2では、WindowsホストのNVIDIA GPU Driverを読み取るため、WSL2上で新たにGPUドライバを導入する必要はなし。
$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
$ sudo apt update
$ sudo apt -y install cuda-toolkit-12-3
公式サイトからlocal repoをダウンロードする。
リポジトリを登録する。
$ sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb
キーリングを追加する。(一応、dpkgから補足説明が出る。)
$ sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.7.29/cudnn-local-08A7D361-keyring.gpg /usr/share/keyrings/
パッケージをインストールする。
$ sudo apt install libcudnn8-dev
cuDNNのインストール先は/usr/lib/x86_64-linux-gnu
となり、/etc/ld.so.conf.d
の*.conf
ファイルの設定によって読み込まれることに注意してください。
$ python3 -c "import tensorflow as tf; print (tf.config.list_physical_devices('GPU'))"
$ python3 -c "import torch;print(torch.cuda.is_available())"
$ pip cache purge
$ wsl --export ディストリビューション名 xxx.tar
$ wsl --import ディストリビューション名 インストール先パス xxx.tar
$ wsl -s ディストリビューション名
/etc/wsl.conf
を下記のように編集する。
[user]
default=user-name
$ sudo systemctl edit ollama
以下の内容を入力する。
[Service]
Environment="OLLAMA_HOST=IPアドレス"
設定を反映する。
$ sudo systemctl daemon-reload
$ sudo systemctl restart ollama