#author("2020-10-18T07:11:09+00:00","default:mizutu","mizutu") [[忘備録]] > サーバー構築3 * 自宅サーバー構築3 [#afe40c99] | Linuxによるサーバー構築メモ3| Ubuntu 14.04LTS で構築してから5年たち14.04LTSのサポート期限を過ぎたので、サーバー環境を新しくすることにした。 新規にサーバーを用意して、Ubuntu 18.04LTS をインストールして現行サーバーのデーター移行を行った。 #contents * Ubuntu 18.04LTS [#u53c11d2] Ubuntu 18.04 LTSのサーバー版インストールイメージには、新しく開発された「ライブインストーラー(subiquity)版」と、従来の「Debianインストーラー版」があるらしい。~ 「ライブインストーラー版」を使ってインストール。~ ~ モジュール名:ubuntu-18.04.3-live-server-amd64.iso~ 参考:https://www.yokoweb.net/2018/05/04/ubuntu-18_04-lts-server-install/ ~ ** Ubuntu 18.04 LTSのサーバー版で「固定IPアドレス」を設定する方法 [#wa71bd01] - ネットワーク設定ファイル「/etc/netplan/50-cloud-init.yaml」 DHCPサーバーからネットワーク設定を取得するよう設定した場合 network: ethernets: enp0s3: addresses: [] dhcp4: true version: 2 - 元の設定ファイルを保存しておく。 $ cd /etc/netplan/ $ sudo cp 50-cloud-init.yaml 50-cloud-init.yaml.disabled - 「50-network-config.yaml」をviなどを使って変更 $ sudo vi /etc/netplan/50-cloud-init.yaml network: version: 2 ethernets: enp0s3: addresses: [192.168.1.5/24] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.1] search: [] optional: true ※以下のネットワーク設定の記述例。~ ネットワークインタフェース:enp0s3~ アドレス:192.168.1.5~ ネットマスク:255.255.255.0(ビット指定だと「/24」)~ ゲートウェイ:192.168.1.1~ DNS:192.168.1.1~ - 設定の反映~ $ sudo netplan apply - IPアドレスの確認 $ ip a s enp0s3 enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:00:5e:00:53:27 brd ff:ff:ff:ff:ff:ff inet 192.168.1.5/24 brd 192.168.111.255 scope global enp0s3 valid_lft forever preferred_lft forever inet6 2001:0db8::200:5eff:fe00:5327/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 2591998sec preferred_lft 604798sec inet6 fe80::200:5eff:fe00:5327/64 scope link valid_lft forever preferred_lft forever 複数の「YAML」ファイルを「/etc/netplan/」に配置すると、ファイル名の辞書順で読み込んで設定がマージされ設定項目が重複する場合は、後から読み込まれたファイルが前に読み込まれたファイルの設定を上書きする。よって、「01」「50」で始まるファイルより、「99」で始まるファイルに書かれた設定が優先される、ということになる。~ ~ 出典:https://linuxfan.info/ubuntu-1804-server-static-ip-address ** SSHサーバー [#b9dcb3ae] Ubuntu18.04では、インストール時にサーバーをインストールできる。 - SSHサーバーの確認 $ dpkg -l | grep ssh openssh-serverが含まれていればOK。 - SSHサーバーのインストール~ $ sudo apt-get install openssh-server - SSHサーバーの起動しているかの確認 $ ps -ax | grep ssh 2994 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu 4960 ? Ss 0:00 /usr/sbin/sshd -D 5178 pts/0 S+ 0:00 grep --color=auto ssh ** sambaサーバー [#pdee01f9] - samba インストール $ sudo apt update $ sudo apt install samba - 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 ユーザー名 - samba 再起動 $ sudo systemctl restart smbd nmbd ** LAMPサーバ (Linux Apache MySQL PHP) [#vfdb2966] - tasksel を用いて LAMP サーバをインストール $ sudo apt install tasksel $ sudo tasksel install lamp-server - インストールの確認 $ apachectl -v $ mysql --version $ php --version - Webブラウザで実行 http://サーバーIP/ ** Apache2 (Webブラウザ) [#db575d41] ドキュメントルートを/var/www/htmlから変更せずに使用する場合。 - ログインしているアカウントで作成・変更できるようにパーミッションを変更。 $ sudo chgrp -R グループ名 /var/www $ sudo chmod g+w /var/www $ sudo chmod g+w /var/www/html - index.phpの作成 $ cd /var/www/html $ vi index.php <?php phpinfo(); ?> - index.phpが作成されているか確認 $ cat index.php - ブラウザで確認 http://(LinuxのIPアドレス)/index.php ** MySQL設定 [#wa8c0f32] - MySQLコマンドおさらい ローカルコンソールから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 [任意のデータベース名]; rootユーザーからの接続はパスワード要求がなくなった。ので、若干の設定変更が必要となる。 - 新しくユーザを作成 mysql> CREATE USER 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード'; - 作成したユーザに権限を付与 mysql> GRANT ALL ON *.* TO 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード'; mysql> FLUSH PRIVILEGES; - DBの文字コードをUTF-8にする デフォルトの文字コードを確認すると、「latin1」になっている。 mysql> status /etc/mysql/mysql.conf.d/mysqld.cnfファイルの[mysqld]セクションに下記行を追加する。 character-set-server = utf8 default_password_lifetime = 0 ※default_password_lifetime の設定は、MySQL 5.7 からユーザーのパスワードの有効期限がデフォルトで360日になった。360日するとパスワードの変更を促されてログインできなくなるので有効期限を無効にしておく。 - MySQLサービスの再起動 $ sudo service mysql restart 文字コードを確認すると、「UTF8」になっている。 mysql> status -------------- mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper Connection id: 2 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.22-0ubuntu18.04.1 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 14 sec Threads: 1 Questions: 5 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.357 ** phpmyadmin (MySQLをWebから管理) [#gf491d5c] - phpmyadmin インストール $ sudo apt install phpmyadmin Webサーバの種類を聞かれるので「apache2」を選択。 dbconfig-commonで設定しますか?と聞かれるので「yes」を選択。続いてMySQLサーバ上の「phpmyadmin」ユーザのパスワードを聞かれるので2回入力。 - MySQLサーバー上でのphpmyadminユーザーの権限確認 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) - phpmyadminユーザーに管理や権限付加 mysql> GRANT ALL ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'XXXXXX' WITH GRANT OPTION; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> SHOW GRANTS FOR 'phpmyadmin'@'localhost'; +---------------------------------------------------------------------------+ | Grants for phpmyadmin@localhost | +---------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION | | GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost' | +---------------------------------------------------------------------------+ 2 rows in set (0.00 sec) - Webブラウザで実行 http://サーバーIP/phpmyadmin パッケージをインストール時に入力した、phpmyadminのIDとパスワードを入力。 ** webmin (Webブラウザでの管理) [#v3ea3128] - webmin の導入 Webminのリポジトリを追加してwebminパッケージをインストール。 $ 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 - webブラウザからアクセス Linuxの管理ユーザとパスワードでログイン https://サーバーIP:10000 言語をJapanese(JA_JPUTF-8),Japanease ,yyyy/mm/dd(ie 2001/09/16) に変更。 ** PHP7 設定ほか [#bb92fba8] - Soapの拡張をインストール $ sudo apt install php-soap - php.iniを変更 $ sudo vi /etc/php/7.2/apache2/php.ini post_max_size = 32M upload_max_filesize = 32M allow_url_fopen = off - aoache2再起動 $ sudo service apache2 restart