Arch Linux MariaDB

・先ずソースから挑戦

入ってなければ
pacman -S cmake
pacman -S ncurses

ソースをダウロードして解凍
tar zxvf mariadb-10.3.12.tar.gz
cd mariadb-10.3.12

cmake . -DCMAKE_INSTALL_PREFIX=/root/share/mariadb -DCMAKE_PREFIX_PATH=/var/lib/pacman/local/ncurses-6.1-6/ -DPLUGIN_TOKUDB=NO

(.はソースディレクトリでCMakeLists.txtが必要)
(DCMAKE_INSTALL_PREFIXはmake installしたときの配置先)

make -j 1
make -j install

パッと調べるとこんな感じのようだかエラーが出るので要調査。

・パッケージにて

pacman -S mariadb
mysql_install_db –user=mysql –basedir=/usr –datadir=/var/lib/mysql

Arch Linux カーネルのコンパイル

・カーネルバージョン確認

uname -r

・カーネルソース保存

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.99.tar.gz

・シンボリックリンク

ln -s linux-4.9.99 linux

・コンフィグ作成

make clean && make mrproper
今までconfigで設定した内容の消去を行う。初期化。

Archのデフォルト設定を利用する場合。
zcat /proc/config.gz > .config

あるいは、

make localmodconfig
ゲストOS内で現在ロードされているカーネルモジュール情報から
カーネルに読みこまれていないmoduleを無効にした設定をおこなう。

・その他コンフィグ

必要な場合。

make oldconfig
今あるconfig使って、新しい設定だけを問い合わせてくるというものがある。

make config
対話型のコンフィギュレータ

make menuconfig
メニューベースのコンフィギュレータ

make xconfig
Xベースのコンフィギュレータ

・コンパイル

make

今回はbcが無いとエラーがでた。

pacman -S bc

makeは時間がかかる。

・カーネルモジュールのコンパイル

make modules_install

以下にコピーされる。

/lib/modules/xxx

・bootディレクトリにカーネルをコピー

名前の前にvmlinuz-をつけるのは必須。
cp -v /usr/src/linux-4.9.99/arch/x86_64/boot/bzImage /boot/vmlinuz-linux49

・initramfs生成

mkinitcpioを利用。

mkinitcpio -k 4.9.99 -g /boot/initramfs-linux49.img

/lib/modules/xxxのソースディレクトリ名を使う。

・ブートローダーの設定

/boot/grub/grub.cfg

linux /vmlinuz-linux …
initrd /initramfs-linux.img
この部分を変更。

これで完了。

・カーネルモジュール

一覧
lsmod

内容確認
modinfo

ロード
insmod

アンロード
rmmod

ロード・アンロードの依存関係を自分で処理。
(lsmodのUsed byにて分かる)

依存関係を自動で処理する場合のロード・アンロード
modprobe xxx
modprobe -r xxx

Arch Linux VirtualBoxのディスクサイズ変更

・VirtualBox

cd C:\Program Files\Oracle\VirtualBox
VBoxManage.exe modifyhd “G:\VirtualBox VMs\Arch Linux\arch.vdi” –resize 20480

・ブートメディアで起動

・パーティーションサイズの変更
parted
p
resizepart xxx 100%

・デバイス名チェック
fdisk -l

・整合性チェック
fsck -f /dev/sda2

・ファイル
resize2fs /dev/sda2 [size]

Arch Linux 初期設定

今回はVirtualBoxにて実験

インストールメディアからブート

基本インストール

・キーボードレイアウト

loadkeys jp106

・パーティション確認

fdisk -l

・起動モード確認

ls /sys/firmware/efi/efivars

ディレクトリがあればUEFI

・パーティション作成

parted /dev/sda
mklabel msdos
mkpart primary ext4 1MiB 100MiB
mkpart primary ext4 100MiB 100%
q

・partedコマンド

p
確認

q
終了

rm
削除

・パーティションフォーマット

mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda2

・マウント

mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

・リポジトリ変更

/etc/pacman.d/mirrorlist
日本のリポジトリを一番上に移動。

・ベースシステムインストール

pacstrap /mnt base base-devel

・fstab

genfstab -U /mnt >> /mnt/etc/fstab

・chroot

arch-chroot /mnt /bin/bash

・ロケール設定

/etc/locale.gen
コメントを解除
en_US.UTF UTF-8
ja_JP.UTF UTF-8

実行
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf

・キーマップ設定

/etc/vconsole.conf
追加
KEYMAP=jp106
FONT=lat9w-16

・タイムゾーン設定

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

・ハードウェアとシステムの日時同期

hwclock –systohc –utc

・ホストネーム設定

echo vm > /etc/hostname

/etc/hosts
追加
127.0.0.1 localhost.localdomain localhost vm
::1 localhost.localdomain localhost vm

・DHCP有効化

systemctl enable dhcpcd

・rootパスワード設定

passwd
123

・GRUBインストール

pacman -S os-prober grub
grub-install –target=i386-pc –recheck /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

・起動

exit
umount -R /mnt
reboot

・復旧する場合

起動メディアでブート

mount /dev/sda1 /mnt/boot
mount /dev/sda2 /mnt
arch-chroot /mnt

・VirtualBoxを含めネットワークの設定

VirtualBoxの設定でネットワークをブリッジに。
ncpa.cplからVirtualBoxのNICを192.168.11.200に。

・WiFiオン

wifi-menu -o

有線は自動でつながる

・IPアドレス確認

networkctl status

・DHCP停止

systemctl disable dhcpcd

・IPアドレス指定

/etc/systemd/network/static.network

[Match]
Name=enp0s3

[Address]
Address=192.168.11.201/24

[Network]
DNS=192.168.11.1

[Route]
Gateway=192.168.11.1

systemctl start systemd-networkd
systemctl start systemd-resolved
必要ならenable

・SSHインストール

pacman -S openssh
systemctl start sshd

/etc/ssh/sshd_config
追加
PermitRootLogin yes
AllowUsers root

・iptables設定

この段階では特に編集しなくてもつながる。

確認
iptables -L

/etc/iptables/iptables.rules
追加
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT

再起動
systemctl restart iptables

・vim

pacman -S vim

・samba

必要ならユーザー追加。今回はrootで処理。

useradd -c “Guest User” -d /dev/null -s /bin/false pcguest
chown pcguest:pcguest share

作成したユーザがパスにアクセスできること。

LAN向けなので、最低限

pacman -S samba

mkdir share
chmod ugo+rwx share

設定ファイル
vim /etc/samba/smb.conf

作成されない場合ArchLinuxのサイトにサンプルがあるので写す。
あるいは直接作成。

[global]
unix charset=UTF-8
dos charset=CP932
security = user
guest account = root
map to guest = bad user

[share]
path = /root/share
writable = yes
guest ok = yes
force create mode = 0777
force directory mode = 0777
share modes = yes
vfs objects = recycle

起動
systemctl start smb
systemctl start nmb
必要ならenable

動作確認
ss -ltnp

・dotnet

pacman -S dotnet-runtime
pacman -S dotnet-sdk
pacman -S aspnet-runtime

・pacmanコマンド

レポジトリ最新
-Syy

ソフト更新
-Syyu

レポジトリ検索
-Ss

ローカル検索
-Qs

インストール済みリスト
-Q

-S
インストール

-R
アンインストール

-Rs
依存も含みアンインストール

-Rns
アンイントール時のバックアップ削除

-Scc
インストール時のキャッシュ削除

-Sg
グループに含まれるパッケージ。

GUIの設定

・GUIとCUIの切り替え

Ctrl + Alt + F1,F2~

・グラフィックドライバ

環境にあわせて選択。
pacman -S xf86-video-intel
pacman -S xf86-video-amdgpu
pacman -S xf86-video-ati
pacman -S nvidia nvidia-utils

・調べ方

lspci | grep VGA

・xserver

pacman -S xorg-server
pacman -S xorg-xinit
pacman -S xorg-apps(必要なら)
pacman -S mesa(必要なら)

・キーコンフィグ

/etc/X11/xorg.conf.d/10-keyboard.conf
追加
Section “InputClass”
Identifier “Keyboard Defaults”
MatchIsKeyboard “yes”
Option “XkbLayout” “jp”
EndSection

・デスクトップインストール

pacman -S xfce4

echo “exec startxfce4” >> ~/.xinitrc

startx

・ロケール設定

/etc/locale.conf
追加(あるいは置換)
LANG=ja_JP.UTF-8

・フォントインストール

pacman -S otf-ipafont

MuuMuu + Xserver 独自ドメイン

以前、MuuMuuで取得したドメインがあって、NSをXserverに指定したまま放置していたのでこのドメインを活用する。メールはそのままXserverで、wwwのみVPSに回す。

MuuMuuでXserverのネームサーバー(ns[1-5].xserver.p)を指定する。
Xserverのサーバーパネル>ドメイン設定
から対象ドメインを追加し、
サーバーパネル>DNSレコード設定
から編集する。

AタイプのIPアドレスをVPSのアドレスに変更する。通常はやらないけど今回はアスタリスクを使ったサブドメインとwww付きを消して1つにしてしまう。

MXはホスト名と内容が同じになっているので、ホスト名をそのまま独自ドメインで、内容をXserverのドメイン(xxx.xsrv.jp)にする。

ホスト名 | A | 210.xxx.xxx.xx | 0
ホスト名 | MX | xxx.xsrv.jp | 0

これでしばらく待つと独自ドメインからSSHアクセスできる。

・DNSレコードについて

A:
ドメインとIPv4を関連づける

MX:
メールサーバー

CNAME:
別名

TXT:
ドメインに関連づけるテキスト情報。主に、メール送信の認証(SPFレコード)に利用される。受信サーバは送信もとアドレスのドメインのTXTレコードを取得しチェックする。

・SPFレコードについて

version qualifier mechanism
という組み合わせになる。

・version:
v=spf1固定

・qualifier:
mechanismでマッチしたらそのメールをどうするかを記号で指定する。

+:
正当なメール

-:
不当なメール(配信しない)

~:
不当なメール(配信する)

?:
指定なし

・mechanism:
送信もとアドレスとマッチするデータを指定する。

ip4:
送信アドレスが一致するか

mx:
MXレコードのIPアドレスと一致するか

a:
AレコードのIPアドレスと一致するか

参考として、
*.domain.com/TXT/v=spf1 +ip4:xxx.xxx.xxx.xxx ~all
ここでは、
+ip4:xxx.xxx.xxx.xxx

~all
の2つが指定されている。

例えば、XserverのDNSレコードはどうなっているか。
*.domain.com/TXT/v=spf1 +ip4:xxx.xxx.xxx.xxx ~all
domain.com/TXT/v=spf1 +ip4:xxx.xxx.xxx.xxx ~all
domain.com/A/xxx.xxx.xxx.xxx
*.domain.com/A/xxx.xxx.xxx.xxx
domain.com/MX/domain.com

WSL2 初期設定、Sambaなど

WSL有効化

・WSLの有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

・Virtual Machine Platformの有効化
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

上記2つはoptionalfeaturesから直接チェックしてもOK
・Linux用Windowsサブシステム
・仮想マシン プラットフォーム

WSLコマンド

・インストール済み
wsl –list

・インストールできるもの
wsl –list –online

・WSL1or2どちらで動作しているか。バージョン確認
wsl –list –ver

・WSL、カーネルのバージョン確認
wsl –version

・WSL、カーネルのバージョンアップ
wsl –update

今回は、
WSL バージョン: 1.2.5.0
カーネル バージョン: 5.15.90.1
から
WSL バージョン: 2.1.4.0
カーネル バージョン: 5.15.146.1-2
になった。

***

・インストール
wsl –install -d Ubuntu-22.04

・既定に設定
wsl -s Ubuntu-22.04
(–set-default)

・削除
wsl –unregister Ubuntu-22.04

・リセット
wsl –unregister Ubuntu-22.04
wsl –install -d Ubuntu-22.04
wsl -s Ubuntu-22.04

・起動
wsl
(デフォルトのディストリビューションにログイン)

・終了(削除ではない)
wsl –shutdown
(wsl –terminate Ubuntu-22.04でも終了できる)

・DNS指定
(名前解決できないとエラーがでる)

sudo vim /etc/wsl.conf

[network]
generateResolvConf = false

を追加
(WSL起動のたびresolv.confが上書きされるため)

sudo vim /etc/resolv.conf
を開き
nameserver 8.8.8.8
または
nameserver 192.168.11.1
など、追加する。
(通常は、起動する度にリセットされる)

ポートフォワード

・wslのIPアドレス確認
wsl -e hostname -I

・ポートフォワード(ポート1つ指定)
netsh interface portproxy add v4tov4 listenport=80 listenaddress=* connectport=80 connectaddress=172.19.144.232

・確認
netsh interface portproxy show all

・削除
netsh interface portproxy delete v4tov4 listenport=80

・ファイアーウォール
netsh advfirewall firewall add rule name=”wsl” dir=in action=allow protocol=tcp localport=80,53 profile=private,public

・削除
netsh advfirewall firewall delete rule name=”wsl”

ポートフォワード(PowerShell)

 

GUI

geditなど、使う場合

sudo apt install gedit
sudo gedit /etc/samba/smb.conf
で起動できる。

Samba

・インストール

sudo apt update
sudo apt install samba

・共有フォルダ

sudo vim /etc/samba/smb.conf

[TEST]
path = /home/user
writable = yes
guest ok = yes

を追加。
([]が共有名になる。)

・パーミッション
sudo chmod o+rwx user

Samba-AD

・conf削除
sudo rm -f /etc/samba/smb.conf

・provision
sudo samba-tool domain provision –use-rfc2307 –interactivegyou

SSH接続

sudo apt update
sudo apt install openssh-server

sudo systemctl start ssh
system has not been booted with systemd as init system …
というメッセージが表示される。

通常PID1がsystemdだが、WSL2においては/initがPID1になっている模様。

sudo /etc/init.d/ssh start
sshd: no hostkeys available — exiting.
というメッセージが表示される。

sudo ssh-keygen -A

sudo vim /etc/ssh/sshd_config
から
PasswordAuthentication yes

これでTeraTermからlocalhost:22で接続できる。

・リセットする場合
アプリと機能>Ubuntu>詳細オプション>リセット
スタートメニューにあるUbuntuから起動するとユーザー名、パスワード
を決めるところから。

.NET Core SDKのインストール

https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu
を参考にする。

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb

sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-3.1

・作成方法(WSL)

アプリ作成
dotnet new console -o myapp

実行
dotnet run
(myappの中で実行)

・作成方法(Visual Studio)

Visual StudioでASP.NET Core Webのプロジェクトを作成し、プロジェクトの右クリックから発行をして、WSL側のフォルダに保存。

転送フォルダにて、
dotnet WebApplication1.dll
を実行

・自動起動

WSLなので.profileに入れてプロセスと同時に立ち上げる。

/usr/bin/dotnet /mnt/g/Dropbox/Workspace/Bash/html/WebApplication1.dll > /dev/null 2>&1 &

テスト用のWordPressをインストールする

sudo apt-get update

・Apache2

インストール
sudo apt-get install apache2

起動
sudo /etc/init.d/apache2 start

・wget
sudo apt-get install wget

・PHP
sudo apt-get install php
sudo apt-get install libapache2-mod-php
sudo /etc/init.d/apache2 restart

とりあえずこれでPHPファイルは実行できるようになる。

・MySQL
sudo apt-get install mysql-server
sudo apt-get install php-mysql

データベース作成
mysql > set password = ‘1234’;
mysql > create database wpdb;

・WordPress
sudo wget https://ja.wordpress.org/latest-ja.tar.gz

解凍
sudo tar -zxvf latest-ja.tar.gz

/var/www/html(http://localhost/解凍フォルダ名)
にブラウザからアクセス。

wp-config.php ファイルに書き込みできません。
とでる場合。

まず、
/etc/apache2/envvars
を開き、
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
の部分でユーザー名を確認し、
sudo chown -R www-data:www-data 解凍フォルダ名
を実行する。

CentOS 初期設定

基本コマンド

・起動

CentOS6まで
/etc/init.d/xxx start (7は使えない)
service xxx start (7はsystemctlにリダイレクト)
CentOS7では
systemctlとなる。

・自動起動

CentOS6まで
chkconfig xxx on | off (7はsystemctlにリダイレクト)
CentOS7では
systemctlとなる。

yumとrpm

yumの内部でrpmが呼ばれている。

利用可能かどうかと、インストール済み両方表示。
yum list xxx

パッケージを探す
yum search xxx

パッケージ情報
yum info

yum -y install php
(-yは全てyes回答)

yum remove xxx
削除する場合

アップデート
yum update
yum update xxx

インストール済みでアップデートがあるかどうか
yum check-update

SSHの設定

基本はそのまま接続できるはず、VirtualBoxに接続の場合、
設定>ネットワーク>割り当て
をブリッジアダプターに変更して、自動取得のIPに繋げれば大丈夫。

・SSHの状態確認
systemctl status sshd.service

・ファイアーウォールの確認
firewall-cmd –list-all

・rootのパスワード認証を不可にする。

PasswordAuthentication no
ChallengeResponseAuthentication no

になっているかどうか確認。

ユーザーを追加し、
PermitRootLogin no
にするかrootのままにするなら、
PermitRootLogin without-password
にする。

・ポート番号変更(49152 – 65535辺り)

firewall-cmd –add-port=49152/tcp –zone=public –permanent
firewall-cmd –reload
ポートを開ける。

systemctl restart sshd

現在の接続を切る前に接続できるか試す。

問題なければポートを閉じる。

firewall-cmd –remove-service=ssh –zone=public –permanent
firewall-cmd –reload

・再起動

systemctl restart sshd
systemctl enable sshd

firewalld

publicゾーンにnicが割り当ててあるか確認。
(active)は有効かどうかという意味ではなく、ゾーン指定しないときの対象かどうかという意味。

定義されているサービス
firewall-cmd –get-services

許可されている情報
firewall-cmd –list-all –zone=public
–list-all
–list-services
–list-port

リロード
firewall-cmd –reload

サービスを許可する
firewall-cmd –add-service=http –zone=public –permanent

許可したサービスを削除
firewall-cmd –remove-service=http –zone=public –permanent

許可するポートの追加
firewall-cmd –add-port=22/tcp –zone=public –permanent

ポートを追加。(接続元を指定する場合)
firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=ipv4 source address=192.168.13.2 port protocol=tcp port=80 accept”

許可するポートの削除
firewall-cmd –remove-port=22/tcp –zone=public –permanent

定義済みサービス(編集はしない)
/usr/lib/firewalld/services

定義済みゾーンの確認
firewall-cmd –list-all-zones

アクティブなゾーンの確認
firewall
cmd getactivezones

Nicに対するデフォルトゾーンの確認
firewall-cmd –get-default-zone

NICのゾーンを変える(permanetが不要という記事ある要確認)
firewall-cmd –change-interface=lo –zone=public

NICをゾーンから削除(permanetが不要という記事ある要確認)
firewall-cmd –remove-interface=lo

だいたいの流れ。本来サービス登録なんだろうけど。

登録済みのサービスを消す。
firewall-cmd –remove-service=http –zone=public –permanent
firewall-cmd –remove-service=ssh –zone=public –permanent
firewall-cmd –remove-service=dhcpv6-client –zone=public –permanent

必要なポート追加。
firewall-cmd –add-port=54424/tcp –zone=public –permanent
firewall-cmd –add-port=80/tcp –zone=public –permanent

・ターゲット

定義にマッチしないパケットをどうするかをターゲットといい、ACCEPT,DROP,REJECT(default)がある。

ACCEPT:全て許可。
DROP:拒否ルールに該当すると拒否。
REJECT:拒否ルールに該当すると拒否。(エラーコードを返す)

vimrc

vimrcを作成し以下を記述。
Ubuntuとほぼ同じで自動補完の部分を削除。

bashrc

Ubuntuから必要最低限のみ持ってきた。

LAMP

CentOS(ConoHa) 初期設定 LAMP

.NET Core

https://www.microsoft.com/net/learn/dotnet/hello-world-tutorial
を参考にする。

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-2.1

基本アプリ

dotnet new console -o myapp
cd myapp
dotnet run

ASP.NET CoreWeb

ASP.NET CoreWebアプリケーションのプロジェクトを作成。
Webアプリケーション(モデルビューコントローラー)を選択。
HTTPS用の構成のチェックを外す。

ビルド>xxxの発行
にて作成されたファイルを転送し、転送フォルダにて、
dotnet xxx.dll
のように実行する。

その他

dotnet –info
でバージョン確認できる。

FTPの設定

VSから発行したいのでFTPを入れる。

インストール
yum install -y vsftpd

設定ファイル
/etc/vsftpd/vsftpd.conf

変更
anonymous_enable=NO
listen=YES
listen_ipv6=NO
tcp_wrappers=NO

コメントアウト削除
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
ls_recurse_enable=YES

追加
use_localtime=YES
allow_writeable_chroot=YES

起動
systemctl start vsftpd

スタートアップ
systemctl enable vsftpd

ファイアーウォール
firewall-cmd –add-service=ftp –zone=public –permanent
firewall-cmd –reload
firewall-cmd –list-all –zone=public

ユーザー制御
userlist_enableを有効にすると、userlist_denyも有効になる。
ブラックリストがデフォなので対象のユーザー名を削除のみ実行。

ブラックリスト(デフォルト)
userlist_enable=YES
userlist_deny=YES or 記述なし

ホワイトリスト
userlist_enable=YES
userlist_deny=NO

ファイルのパス(必要なら)
userlist_file=/etc/vsftpd/user_list

userlist_enableを優先度が高い禁止リスト
/etc/vsftpd/ftpusers

user_listとftpusersから対象のユーザー名を削除する。

パーティションタイプ

パーティションタイプにMBRとGPTがあり、
MBRは2TB以下×4まで、GPTだと2TB以上×128可能

GPTに対応したOSじゃないと(Vista~64bit)じゃないと使えない
さらにUEFIじゃないと起動できない。

UEFIはBIOSの後継。

Ubuntu シンボリックリンク

シンボリックについて
apacheのconfの場合、
a2dissite、a2ensite
などの専用スクリプトが用意されている。

通常は、
ln -s 実体 リンク
で、
ln -s /home/okamura/ruby/asagao/public /home/okamura/www/app1
のよう記述する。

実体もリンクも最後にスラッシュを付けない。
リンクはフォルダではないので、最初から存在してはダメ。

リンク削除
unlink /home/okamura/www/app1

wget/curl コマンド

curl

curl -O “http://xxx.com/[0-20].pdf”

-O は表示ではなくファイル名そのまま。(ちなみにwgetで-Oは別名で保存)
-o は別名で保存する。
-L リダイレクトを追う。
-C – レジューム

レジューム保存
curl -o out.mp4 -L -C – http://

wget

-c ダウンロードを続きから。
-t リトライ回数指定する。(0は無制限)
-O 別名で保存する。
–retry-connrefused 接続拒否無視

wget -c -t 0 –retry-connrefused xxx