忘備録 > サーバー構築5
Linuxによるサーバー構築メモ5 |
Intel® NUC キット BXNUC10I5FNHに1TB のSSDを搭載して、Ubuntu 20.04LTS をインストールし大阪サーバーの後継機とする。
同時にサイトの https化に挑戦する。
Ubuntu 20.04 LTSのサーバー版インストールイメージ、「ライブインストーラー版」を使ってインストール。
モジュール名:ubuntu-20.04.2-live-server-amd64.iso
$ sudo apt update : $ sudo apt upgrade : $ sudo apt install net-tools
# This is the network config written by 'subiquity' network: ethernets: eno1: dhcp4: true version: 2
$ cd /etc/netplan/ $ sudo cp 00-installer-config.yaml 00-installer-config.yaml.disabled
$ sudo vi /etc/netplan/00-installer-config.yaml network: ethernets: eno1: addresses: [192.168.3.203/24] gateway4: 192.168.3.1 nameservers: addresses: [192.168.3.1] search: [] optional: true version: 2※以下のネットワーク設定の記述例。
$ sudo netplan apply
$ ifconfig eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.3.203 netmask 255.255.255.0 broadcast 192.168.3.255 inet6 2001:a453:6346:100:1e69:7aff:fe6f:fbb8 prefixlen 64 scopeid 0x0<global> inet6 fe80::1e69:7aff:fe6f:fbb8 prefixlen 64 scopeid 0x20<link> ether 1c:69:7a:6f:fb:b8 txqueuelen 1000 (Ethernet) RX packets 75463 bytes 110054579 (110.0 MB) RX errors 0 dropped 54 overruns 0 frame 0 TX packets 15522 bytes 1098082 (1.0 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 164 bytes 13530 (13.5 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 164 bytes 13530 (13.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ubuntu20.04では、インストール時にサーバーをインストールできる。
$ ps -ax | grep ssh ii libssh-4:amd64 0.9.3-2ubuntu2.1 amd64 tiny C SSH library (OpenSSL flavor) ii openssh-client 1:8.2p1-4ubuntu0.1 amd64 secure shell (SSH) client, for secure access to remote machines ii openssh-server 1:8.2p1-4ubuntu0.1 amd64 secure shell (SSH) server, for secure access from remote machines ii openssh-sftp-server 1:8.2p1-4ubuntu0.1 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines ii ssh-import-id 5.10-0ubuntu1 all securely retrieve an SSH public key and install it locally
$ sudo apt update $ sudo apt install samba
$ sudo vi /etc/samba/smb.conf [gloval] workgroup = XXXXXX [share] path = /var/samba/fshare read only = no browseable = yes
$ sudo mkdir -p /var/samba/fshare $ sudo chmod 777 /var/samba/fshare $ sudo pdbedit -a ユーザー名
$ sudo systemctl restart smbd nmbd
$ sudo apt install tasksel $ sudo tasksel install lamp-server
$ apachectl -v $ mysql --version $ php --version
http://サーバーIP/
ドキュメントルートを/var/www/htmlから変更せずに使用する場合。
$ sudo chgrp -R グループ名 /var/www $ sudo chmod g+w /var/www $ sudo chmod g+w /var/www/html
$ cd /var/www/html $ vi index.php <?php phpinfo(); ?>
$ cat index.php
http://(LinuxのIPアドレス)/index.php
$ sudo vi /etc/apache2/apache2.conf <Directory /> Options FollowSymLinks # AllowOverride None AllowOverride All Require all denied </Directory> : <Directory /var/www/> # Options Indexes FollowSymLinks # AllowOverride None Options FollowSymLinks AllowOverride All Require all granted </Directory>
$ sudo /etc/init.d/apache2 restart
ローカルコンソールからMySQLサーバに接続 $ sudo mysql -u root 状態表示 mysql> status ユーザ一覧表示 mysql> select user,host from mysql.user; データベース一覧表示 mysql> show databases; 特定のユーザーの権限確認 mysql> show grants for 'ユーザ名'@'ホスト名'; 終了 mysql> exit
新しくユーザを作成 CREATE USER 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード'; ユーザ名は、'ユーザ名'@'ホスト名'のように表す。ホスト名はMySQLへ接続するホスト名。サーバパソコンの場合はlocalhostとなる。ネットワークアドレスを指定する場合は192.168.1.%などのようにする。 @以下ホスト名を省略した場合は、'ユーザ名'@'%'として扱われ、どのホストからも接続できる。 ユーザ一覧を表示 mysql> SELECT user, host FROM mysql.user; 作成したユーザに権限を付与 mysql> CREATE USER文でユーザを作成した場合、初期設定では権限「なし」の状態。GRANT文を使って、権限を付与する。 mysql> GRANT [権限] ON [適用対象のデータベース].[適用対象のテーブル] TO 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード'; mysql> FLUSH PRIVILEGES; [権限]の部分には、設定したい権限を列挙する。[適用対象の~]には、権限を適用する対象を指定。例えば適用の単位に「データベース」を指定できる権限であれば、データベース名を指定して設定することができる。「全範囲(グローバル)」を指定したい場合は、「*.*」と指定。FLUSH PRIVILEGESを実行することで、権限の変更をデータベースに反映する。 ユーザの権限を確認する mysql> SHOW GRANTS FOR 'ユーザ名'@'ホスト名'; ユーザの権限を削除する mysql> REVOKE [権限] ON [適用対象のデータベース].[適用対象のテーブル] FROM 'ユーザ名'@'ホスト名'; mysql> FLUSH PRIVILEGES; 新規データベースの作成 mysql> CREATE DATABASE [任意のデータベース名]; データベースの削除 mysql> DROP DATABASE [任意のデータベース名];
$ sudo mysql -u root
mysql> CREATE USER 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード';
mysql> GRANT ALL ON *.* TO 'ユーザ名'@'localhost'; mysql> FLUSH PRIVILEGES;
mysql> status -------------- mysql Ver 8.0.21-0ubuntu0.20.04.4 for Linux on x86_64 ((Ubuntu)) Connection id: 9 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 8.0.21-0ubuntu0.20.04.4 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /var/run/mysqld/mysqld.sock Binary data as: Hexadecimal Uptime: 36 min 39 sec Threads: 2 Questions: 27 Slow queries: 0 Opens: 145 Flush tables: 3 Open tables: 66 Queries per second avg: 0.012
$ sudo apt install phpmyadmin Webサーバの種類を聞かれるので「apache2」を選択。 dbconfig-commonで設定しますか?と聞かれるので「yes」を選択。続いてMySQLサーバ上の「phpmyadmin」ユーザのパスワードを聞かれるので2回入力。
mysql> SHOW GRANTS FOR 'phpmyadmin'@'localhost'; +--------------------------------------------------------------------+ | Grants for phpmyadmin@localhost | +--------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' | | GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost' | +--------------------------------------------------------------------+ 2 rows in set (0.00 sec)
mysql> GRANT ALL ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> SHOW GRANTS FOR 'phpmyadmin'@'localhost'; +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for phpmyadmin@localhost | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `phpmyadmin`@`localhost` WITH GRANT OPTION | | GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,FLUSH_OPTIMIZER_COSTS,FLUSH_STATUS,FLUSH_TABLES,FLUSH_USER_RESOURCES,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `phpmyadmin`@`localhost` WITH GRANT OPTION | | GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO `phpmyadmin`@`localhost` | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 3 rows in set (0.00 sec)
http://サーバーIP/phpmyadmin phpmyadminのIDとパッケージをインストール時に入力したパスワードでログイン。
$ echo "deb http://download.webmin.com/download/repository sarge contrib" |sudo tee /etc/apt/sources.list.d/webmin.list $ wget http://www.webmin.com/jcameron-key.asc -O - | sudo apt-key add - $ sudo apt update -y $ sudo apt install -y webmin
Linuxの管理ユーザとパスワードでログイン。 https://サーバーIP:10000 言語をJapanese(JA_JPUTF-8),Japanease ,yyyy/mm/dd(ie 2001/09/16) に変更。
$ sudo apt install php-soap
$ sudo vi /etc/php/7.4/apache2/php.ini post_max_size = 32M upload_max_filesize = 32M allow_url_fopen = Off
$ sudo service apache2 restart
LAN 内から公開webサーバーにアクセスする場合、名前解決ができない。YAMAHAルーターではそのための設定ができるが残念ながら徳島のNTTルーターではその機能がない。
とりあえず「hosts」ファイルを編集して対応する。
Ubuntu インストール後、論理パーティションがストレージいっぱいまで使われてなかったのに気が付いてで拡張した。結構ハマって苦労したので最終結果を覚書として残しておく。(インターネットの情報は鮮度に気を付けるべしとの教訓を得た。)
$ df -h Filesystem Size Used Avail Use% Mounted on udev 3.7G 0 3.7G 0% /dev tmpfs 755M 1.4M 754M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 196G 6.3G 180G 4% / tmpfs 3.7G 0 3.7G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup /dev/sda2 976M 106M 803M 12% /boot /dev/loop0 56M 56M 0 100% /snap/core18/1944 /dev/loop1 70M 70M 0 100% /snap/lxd/19188 /dev/loop2 32M 32M 0 100% /snap/snapd/10707 /dev/sda1 511M 7.9M 504M 2% /boot/efi /dev/loop3 33M 33M 0 100% /snap/snapd/12057 /dev/loop4 56M 56M 0 100% /snap/core18/2066 /dev/loop5 68M 68M 0 100% /snap/lxd/20326 tmpfs 755M 0 755M 0% /run/user/1000
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 55.4M 1 loop /snap/core18/1944 loop1 7:1 0 69.9M 1 loop /snap/lxd/19188 loop2 7:2 0 31.1M 1 loop /snap/snapd/10707 loop3 7:3 0 32.1M 1 loop /snap/snapd/12057 loop4 7:4 0 55.4M 1 loop /snap/core18/2066 loop5 7:5 0 67.6M 1 loop /snap/lxd/20326 sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 930G 0 part └─ubuntu--vg-ubuntu--lv 253:0 0 200G 0 lvm /
$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv Size of logical volume ubuntu-vg/ubuntu-lv changed from 200.00 GiB (51200 extents) to <930.01 GiB (238082 extents). Logical volume ubuntu-vg/ubuntu-lv successfully resized.
$ df -h Filesystem Size Used Avail Use% Mounted on udev 3.7G 0 3.7G 0% /dev tmpfs 755M 1.4M 754M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 196G 6.3G 180G 4% / tmpfs 3.7G 0 3.7G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup /dev/sda2 976M 106M 803M 12% /boot /dev/loop0 56M 56M 0 100% /snap/core18/1944 /dev/loop1 70M 70M 0 100% /snap/lxd/19188 /dev/loop2 32M 32M 0 100% /snap/snapd/10707 /dev/sda1 511M 7.9M 504M 2% /boot/efi /dev/loop3 33M 33M 0 100% /snap/snapd/12057 /dev/loop4 56M 56M 0 100% /snap/core18/2066 /dev/loop5 68M 68M 0 100% /snap/lxd/20326 tmpfs 755M 0 755M 0% /run/user/1000
$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv resize2fs 1.45.5 (07-Jan-2020) Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required old_desc_blocks = 25, new_desc_blocks = 117 The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 243795968 (4k) blocks long.
$ df -h Filesystem Size Used Avail Use% Mounted on udev 3.7G 0 3.7G 0% /dev tmpfs 755M 1.4M 754M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 915G 6.3G 869G 1% / tmpfs 3.7G 0 3.7G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup /dev/sda2 976M 106M 803M 12% /boot /dev/loop0 56M 56M 0 100% /snap/core18/1944 /dev/loop1 70M 70M 0 100% /snap/lxd/19188 /dev/loop2 32M 32M 0 100% /snap/snapd/10707 /dev/sda1 511M 7.9M 504M 2% /boot/efi /dev/loop3 33M 33M 0 100% /snap/snapd/12057 /dev/loop4 56M 56M 0 100% /snap/core18/2066 /dev/loop5 68M 68M 0 100% /snap/lxd/20326 tmpfs 755M 0 755M 0% /run/user/1000