記事の項目

最近の投稿

Ubuntu server 構築のお勉強

ユーチューブ動画でUbuntuサーバーの作り方を勉強してみた。英語なのでよく聞き取れないかもしれないが、参考になります。
ubuntu server

この記事の項目

Ubuntu server: Getting started

Ubuntu server を作るのに参考になると思われる動画です。

  1. OSのインストール方法
  2. CLI ログイン、ネットワーク設定、ssh接続
  3. ディスクトップLXDE、リーモトディスクトップ xrdp
  4. サーバー管理 cockpit
  5. ユーザー管理
  6. webサーバー(LAMP)<- ubuntu 22.04 はtasksel に含まれず
  7. ファイルサーバー samba

実際にサーバーを作る時につまずいたことの解決方法

  1. スリープ解除方法(ディスクトップ インストール時に変更になった?)
  2. 起動時 GRUB タイムアウト時間変更方法

Ubuntu Server ダウンロードとUSBメモリに書き込み

ソフトウエアのダウンドード

https://jp.ubuntu.com/

Ubuntu Server 22.04.1 LTS (LTS Long Term Support 長期保守される )をダウンロードする。
ディクストップ版もあるが、今回はサーバー版を選択。

ローカルにダウンロードして、USBに入れてサーバーから起動する方法。

balenaEtcher-Flash OS images to SD card & USB drivers

で、ダウンロードしたファイルをUSBメモリに書き込むために、Etcher をダウンロードする。

Etcherを使ってUSBメモリにUbuntu serverのイメージを書き込みます。

Ubuntu Server 22.04 install

サーバーにUSBメモリを差し込んで、サーバーの電源を起動するときに BIOS 画面を表示させ、または、Ubuntuのブート画面で。

UEFI Firmware Settings

を選択して

Please select boot device から、起動順序を USBメモリを一番上に変更する。

Try or Installer Ubuntu Server を選択

select your language

select keyboard layout

network connections. 

  :
  :

インストーラーに従ってインストールを進めると

Reboot を促され、USBメモリを取りはすして、Enter

CLI ログイン

インストール時に設定したユーザー名とパスワードでログインします。

server login :

password :

ユーザーディレクトでログインされます

				
					$ pwd
/home/bytemypi

$ exit
				
			

セキュリティ

まずは、ソフトウエアを最新に

				
					$ sudo apt update
$ sudo apt upgrade

$ sudo reboot
				
			

ATP ( Advanced Package Tool ) is a powerful tool for handling the installation and removal of software

update-notifier

				
					$ sudo apt install update-notifier-common

				
			

自動でアップデートするには、

9 , 14 のコメントを外して、設定を変更する。

				
					$ cd /etc/apt/apt.conf.d

$ sudo nano 50unattended-upgrades

// Automatically reboot *WITHOUT CONFIRMATION* if
//  the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";

Unattended-Upgrade::Automatic-Reboot "true";

// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
//  Default: "now"
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";

Unattended-Upgrade::Automatic-Reboot-Time "02:00";

				
			

“1” の確認みたい

				
					$ sudo nano 20auto-upgrades

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

$ sudo reboot
				
			

 Active: active (running) を確認する。

				
					$ sudo systemctl status unattended-upgrades

 Active: active (running) since Mon 2023-02-06 08:11:20 UTC; 5min ago
				
			

network

ネットワークの状態を確認

				
					$ ip a

				
			

ネットワークのアドレスを変更したい場合は下のコマンドでファイルを修正する。

ファイルの設定を適用する。

				
					$ sudo nano /etc/netplan/00-installer-config.yaml

$ sudo netplan apply
				
			

ssh

サーバーをリモートアクセスする時に必要な ssh をインストールする。

インストーラーで [ x ] ssh チェックを入れた場合には必要ない。

				
					$ sudo apt install openssh-server
				
			

ssh クライアントからアクセスする。

MacOS はターミナルから

Windows はコマンドプロンプト

Ubuntu server のIP アドレスとユーザー名、パスワードでログインする。

				
					> ssh username@server-ip-address

				
			

sshでサーバーをコントロールできるので、モニターやキーボードを繋がなくてもよくなる。

GUI

軽量なディスクトップ LXDE 環境をインストールする。

最新の機器の場合は、標準採用のGnomeの方がWindowdライクに便利に使えるのでストレスは少ないと思います。)

dm(ディスプレイマネージャー)は、lightdm を選択

				
					$ sudo apt install lxde-core lxappearance

$ sudo reboot
				
			

Remoto DeskTop

xrdp(x リモート デスクトップ) をインストール

				
					$ sudo apt istall xrdp

$ sudo nano /etc/xrdp/startwm.sh

#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession

lxsession -a LXDE -e LXDE

$ sudo adduser xrdp ssl-cert

$ sudo reboot
				
			

LXDEディスクトップはとてもシンプルですね。

LXDE
LXDEディスクトップ環境をxedpとMicrosoft Remote Desktop で表示

webブラウザからサーバー管理

Cockpit をインストール

ブラウザーからアクセスしてサーバーを管理できる Cockpit をインストールする。

cockpit.socket を確認するとアクティブになっていました。インストールすると自動的に有効設定になるのかな。

				
					$ sudo apt isntall cockpit

$ sudo systemctl status cockpit.socket

 Active: active (listening) 
 
$ sudo vi /etc/netplan/00-installer-config.yaml 

renderer: NetworkManager


				
			

デスクトップのブラウザに サーバーの IP アドレス:9090 を入力すると、保護されていない通信のダイアログが表示されますが、構わずに進めると、cockpitの管理画面が表示されました。

サーバーのディスクトップでも、ローカルPCからでもアクセスして表示が可能なので、便利に使えそうです。

cockpitの管理画面
cockpitはサーバー管理が簡単になりますね

ユーザー管理

ユーザー作成

サーバーにユーザーアカウントを追加する

				
					sudo adduser new-username
				
			

Adding Administrative Privileges

ユーザー名 accout-username を sudo group に追加

				
					sudo usermod -a -G sudo account-username
				
			

ユーザー切り替え

swich user ( su )

				
					su -username
				
			

become root

root は、なんでもできてしまうので、注意が必要ですね。

				
					$ sudo su -

# exit

$
				
			

Listing User Accounts

				
					compgen -u
				
			

Remove User Account

				
					sudo deluser account-username
				
			

Enable the "root" Account

root アカウントでログインできるようにする

				
					sudo passwd root
				
			

root アカウントでログインできないようにする

				
					sudo passwd -l root
				
			

サーバー名を変更

インストール時にサーバー名を設定するが、途中でサーバー名を変更するには、

				
					hostname

hostnamctl

sudo hostnamectl set-hostname new-name
exec bash

cat /etc/hosts
sudo nano /etc/hosts


				
			

/etc/hosts

127.0.1.1 server  ->> new-name

Tasksel

choose software to install

Ubuntu のインストーラーで表示されていましたが、 taksel は動作させるサービスを選択してインストールできる

				
					sudo apt update
sudo apt install tasksel
sudo tasksel
				
			

動画で説明のあったソフトウエアセレクション tasksel の選択項目はとても簡素でした。

ubuntu 20.xx と 22.xx で変更があったのかもしれません。

動画では、LAMP サーバーを tasksel を使ってインストールしていました。

ubuntu tasksel
ubuntu tasksel
				
					$ tasksel --list-tasks

u desktop	Debian desktop environment
u gnome-desktop	GNOME
u xfce-desktop	Xfce
u gnome-flashback-desktop	GNOME Flashback
u kde-desktop	KDE Plasma
u cinnamon-desktop	Cinnamon
u mate-desktop	MATE
u lxde-desktop	LXDE
u lxqt-desktop	LXQt
u web-server	web server
u ssh-server	SSH server
u laptop	laptop

				
			

あれ!

LAMP-server の項目がありません。

 $ sudo tasksel install lamp-server

と直接入力しても sasksel ではインストールできませんでした。
ubuntu 22.04LTS でtaskselの内容変更があったのかもしれません。

個別にインストールして設定しても同じですが、労力が違います。

ちなみに、LAMP とは

L inux
A pache
M ysql
P hp

の頭文字です。

ここは、聞き流して

Adding a Drive

				
					$ lsblk
				
			

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 61.9M 1 loop /snap/core20/1405
loop1 7:1 0 63.3M 1 loop /snap/core20/1778
loop2 7:2 0 79.9M 1 loop /snap/lxd/22923
loop3 7:3 0 111.9M 1 loop /snap/lxd/24322
loop4 7:4 0 49.8M 1 loop /snap/snapd/17950
sda 8:0 0 953.9G 0 disk
├─sda1 8:1 0 1G 0 part /boot/efi
└─sda2 8:2 0 952.8G 0 part
└─md0 9:0 0 952.7G 0 raid1
└─md0p1 259:0 0 952.7G 0 part /
sdb 8:16 0 953.9G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 952.8G 0 part
└─md0 9:0 0 952.7G 0 raid1
└─md0p1 259:0 0 952.7G 0 part /
sr0 11:0 1 1024M 0 rom

空きディスクがあって、そのディスクをマウントする手順です。

				
					$ sudo wipefs -a /dev/空きディスク
				
			

GPT fdisk ( gdisk ) でパーテーションを作成する。(ディスクのデーターが無くなるのでディスク名の選択に充分注意してください)

※ GTP ( GUID Partition Table )

				
					$ sudo gdisk /dev/空きディスク
				
			

1パーテーションならば、質問はデフォルトで良さそうです。

				
					$ sudo gdisk -l /dev/空きディスク
				
			

パーテーションナンバーまで含めて指定し、ここでは、ext4 でフォーマットしていました。

				
					$ sudo mkfs.ext4 /dev/空きディスク1
				
			

Mount the Drive

				
					cd /mnt

sudo mkdir mount-point-name

sudo chattr +i mount-point-name
				
			

UUID ( Universally Unique Identifier ) を下のコマンド blkid で表示してコピーする。

UUID=”3620ee6a-3d49-ce07-5df9-f0f9d6863f58″

				
					sudo blkid

sudo nano /etc/fstab
				
			

/etc/fstab に追加する

たとえば、

UUID=”3620ee6a-3d49-ce07-5df9-f0f9d6863f58″ /mount/path ext4 defaults  0 2

マウントの設定を反映するには、

				
					sudo mmount -a

df -h パーテーション名

sudo chown -R user-name パーテーション名/

sudo chmod -R 750 パーテーション名/
				
			

File Sharing With Samba

SMB ( Server Message Block ) or CIFS ( Common Internet File System ) protocol

ネットワークにあるドライブ 記憶装置 ハードドライブ があるとさまざまなディバイスから見れると便利ですね。

要するに Samba は NAS と同様なことができます。

				
					sudo apt updete

sudo apt install samba
sudo smbpasswd -a existing-useername
				
			

Create Samba Share

				
					cd etc/samba

sudo cp smb.conf cmb.bk

sudo nano smb.conf

				
			

smb.conf に設定を追加します。

[share]
path = /mnt/ドライブ名
valid user = ユーザー名
read only = no

				
					smb.conf 設定例(自分の)

[homes]
    comment = Home Directoris
    browseable = yes
    read only = no
    create mask = 0700
    direvtory mask = 0700
    valid user = %S
				
			

設定を有効にするために、smbd.service を再起動します。

				
					sudo systemctl restart smbd.service
				
			

Windows から Samba server にアクセス

ip アドレスと smb.conf に設定したshare で共有してみよう。

\\\192.188.0.200\share

The Uncomplicated Firewall (ufw)

ファイアウォールを設定、

デフォルトは inactive 未設定になっています。
サーバーなので、不特定多数にアクセスされる場合は、ポートを最小限に絞る方が安全です。

				
					$ sudo ufw status

Status: inactive
				
			

allow と deny で制御する

				
					$ sudo ufw allow ssh
$ sudo ufw enable
				
			

sshでの接続をローカルのみにしたいのであれば、自宅のネットワーク  IP アドレスの範囲 [ 192.168.1.0/24] に設定

				
					$ sudo ufw allow from 192.168.1.0/24
				
			
				
					$ sudo apt isntall net-tools
				
			
				
					$ sudo netstat -tulpn
				
			

-t.   show only TCP connections
-u.  show only UDP connections
-l.   show only listening sockets
-p.  show numerical addresses instead of trying to determine host,port or user names
-n   show the PID and program name to which each socket belongs

スリープを無効に

Ubuntu22.04 server 版をインストールしたのですが、ディスクトップを入れたせいか、しばらくアクセスをしないと、スリープしてしまいます。

スリープを解除するのは、 systemctl で mask するようです。

				
					$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.
				
			

スリープを有効にしたい場合

				
					$ sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

				
			

GRUB タイムアウト時間変更

ブートローダーを読み込んで、OS を選択させる時間を設定変更できます。

サーバーなので、再起動時の時間は短い方が良いので、変更の仕方を勉強してみましょう。

				
					sudo nano /etc/default/grub
				
			

GRUB_TIMEOUT=0

の数字を変更すると、起動時のタイムアウトの時間が変更されるようですが、最初から =0 である???。

デフォルトの設定値は =0 だけど、なぜか 30 秒くらいカウントしていました。

もう一つ設定箇所を発見しました。

				
					sudo nano /etc/grub.d/00_header
				
			

 set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}

2箇所あったので、2つとも変更しました。(内容を読むのがめんどくさかったので)

の数字 (-30 )を変更すると、起動時のタイムアウトの時間が変更されるようです。

試しに ( -5 ) を入れて再起動するがダメでした。

設定値をアップデートしないと、反映されないみたいです。

				
					sudo update-grub
				
			

これで、GRUB のタイムアウト 5秒に設定できました

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事
ubuntu server

Ubuntu Linux の基礎

Ubuntu のターミナルを使うための基礎知識の解説です. GUI に慣れた体には CLI はめんどくさいですが、覚えると便利です.

Translate »