インフラ

VPSサーバーを立ち上げた後の一般的な設定

サーバーへのログイン

コントロールパネルで作成されたサーバーのIPアドレスを確認。
そのIPアドレスをコピー&貼り付けできるようにしておく。

ssh接続キーの作成

Macの場合は

Finder > アプリケーション > ユーティリティ > ターミナル

でターミナル起動

ssh-keygen

と打って、何か聞かれても只管リターン連打。

そうすると
cat ~/.ssh/id_rsa.pub
で表示される中身が、sshキーの中身として、VPSのインスタンスを作成する時に、保存しておくべき接続キー情報になる
(sshキー接続できるような状態から始まるVPSの場合 / 「インスタンスを作る前に登録」しておかないといけない)


sshで接続

sshがターミナルから利用可能な場合は

sshキーの登録をしてある場合は、

ssh -l root $IPアドレス

または

ssh -l root $IPアドレス -i $キーファイルの場所(...pemまたはid_rsa.pub等)

とターミナルから打つ事でログイン。

なお
・sshキー事前登録型のVPSでない場合には、そこからパスワードの入力をして接続する事になる(さくらVPS等)
・WebArenaはユーザーがrootではなくUbuntuならubuntu、CentOSの場合は従来のWebArenaならrootだがIndigoはcentos、という違いがあるので注意

SSHログインについては
https://www.conoha.jp/guide/guide.php?g=6などを参照。

因みに

Permissions 0644 for '/Users/hajimekurita/keys/md/20190224164923.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/hajimekurita/keys/md/20190224164923.pem": bad permissions
root@118.27.3.113: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

みたいなエラーが返ってきたら

chmod 600 ~/keys/md/20190224164923.pem 

と打って、自分だけが読めるファイルの権限にsshキーのファイル権限を変更する。


ホスト名をつける

そのサーバーの用途に応じた名前を付ける。

HOSTNAME=ホスト名;
hostnamectl set-hostname $HOSTNAME;

一回ログアウトして、またログインして、ホストネームが変わっている事を確認する。


ターミナルによるコマンド接続で最低限知っておくべきコマンド

いるディレクトリの変更

cd $ディレクトリ名

そのディレクトリのファイルの表示

ls

そのディレクトリ以下にあるファイルを表示

find

そのファイルの中身を表示

cat $ファイル名

ターミナルからの脱出

exit

ソフトのインストール (CentOS8系)

dnf install $ソフト名

ソフトのインストール (CentOS7以下系)

yum install $ソフト名

ソフトのインストール (Ubuntu系)

apt-get install $ソフト名

Swap領域の設定

Swap領域が無ければ(自分の見た環境ではなかった)、Swap領域を作りましょう。

top

と打った時に、

KiB Swap:        0 total,        0 free,        0 used...

となっていれば、SWAP領域が無いという事になります。
SWAP領域がないと、メモリーを使い切るとプログラムが落ちます。

2019/01時点ではDigital Ocean、Lightsail等がSWAP領域がないです。

Swapはメモリー容量を超えた分のデータは、SSD/HDDの方で読み書きする事で、メモリ容量不足を防ぐ仕組みです。

例えばrootアカウントで

dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile;
mkswap /swapfile;
swapon /swapfile;

とすると、4GB分、スワップ領域を作ることができます。

top

コマンドを打って確認して下さい。

ただ、これだけだと、サーバーを再起動した時にSWAP領域がマウントされないので

echo "/swapfile swap swap defaults 0 0" >> /etc/fstab;

と打って、スワップ領域が再起動時に自動的にマウントされるようにします。


時間を日本時間に合わせる

timedatectl set-timezone Asia/Tokyo;
date;

ソフトウェアのアップデート

CentOS8系の場合

dnf update;

CentOS7以下系の場合

yum update;

Ubuntu系の場合

apt-get update;

もしもこのアップデートリストにkernelがあったら、OSのリブートが反映には必要なので

shutdown -r now

で再起動する。


作業ユーザーの用意

rootのユーザーを使うのは、セキュリティ上の問題があるので、root権限を持てるユーザーを作る。

ユーザー名を仮に hajimekurita とした場合

USER=hajimekurita;
useradd $USER;
passwd $USER;
usermod -aG wheel $USER

で、wheelのグループにユーザーを追加

記述例

wheel:x:10:$USERID1,$USERID2

パスワード無しでsudoコマンド(root権限)の実行を可能にするには

visudo

して

# %wheel        ALL=(ALL)       NOPASSWD: ALL

の行の#を削ってコメントアウト。

あと、このユーザーにssh loginできるように、まずそのユーザーにsudoでなり

sudo - $USERID

それからsshでリモートログインできるようにauthorized_keysを編集する

mkdir ~/.ssh/
chmod 700 ~/.ssh/;
touch ~/.ssh/authorized_keys;
chmod 600 ~/.ssh/authorized_keys;

それから

vi ~/.ssh/authorized_keys;

で、接続するPCのid_rsa.pubの中身をコピーする。

要注意作業
この後、別のターミナルを立ち上げて、新たに追加したユーザーでサーバーにsshログインして、sudo su – でrootユーザーになれる事を確認する。
その確認をせずに、以下のrootでの外部からのsshログインを遮断してしまうと、入れなくなる悲劇が発生するので注意。

それが出来たら、セキュリティ対策として、rootではsshログインは出来ないようにする。

vi /etc/ssh/sshd_config

して

PermitRootLogin no

の行を#無しで作る

configの内容のテスト

/usr/sbin/sshd -t

をして、問題なければSSHサーバーを再起動

service sshd restart

サーバ管理に必要な基本的なソフトのインストール

CentOS8以上はdnf、CentOS7以下はyum、ubuntu系の場合はapt-getをINSTに指定して下さい

INST=dnf;
# Tools for basic operation
yes | $INST install apr-devel;
yes | $INST install apr-util-devel;
yes | $INST install autoconf;
yes | $INST install bind-utils;
yes | $INST install bison;
yes | $INST install boost-devel;
yes | $INST install boost;
yes | $INST install cpan;
yes | $INST install curl-devel;
yes | $INST install curl;
yes | $INST install expect;
yes | $INST install flex;
yes | $INST install freeglut-devel;
yes | $INST install freeglut;
yes | $INST install ftp;
yes | $INST install gcc-c++;
yes | $INST install gdb;
yes | $INST install gedit;
yes | $INST install git;
yes | $INST install httpd-devel;
yes | $INST install java;
yes | $INST install libapreq2-devel;
yes | $INST install libapreq2;
yes | $INST install libjpeg-devel;
yes | $INST install libpng-devel;
yes | $INST install libssl-dev;
yes | $INST install libXext-devel;
yes | $INST install lsof;
yes | $INST install mailx;
yes | $INST install mysql;
yes | $INST install nginx;
yes | $INST install openssl-devel;
yes | $INST install pciutils;
yes | $INST install perl-Time-HiRes;
yes | $INST install perl-YAML;
yes | $INST install perl;
yes | $INST install php;
yes | $INST install postgresql;
yes | $INST install psmisc;
yes | $INST install python36;
yes | $INST install redhat-lsb-core;
yes | $INST install rsync;
yes | $INST install ruby;
yes | $INST install sqlite-devel;
yes | $INST install svn;
yes | $INST install tcl-devel;
yes | $INST install telnet;
yes | $INST install vim-enhanced;
yes | $INST install wget;
yes | $INST install whois;

その他代表的なソフトのインストール方法

  1. Apache2.4系のインストール・設定方法
  2. CentOS 8へのアップグレードの仕方
  3. Djangoのインストール・設定・開発方法(Django3.0対応)
  4. Dockerのインストール・設定方法
  5. MariaDBのインストール・設定方法
  6. MongoDBのインストール・設定方法
  7. node.jsのインストール・設定方法
  8. PHP 7系のインストール・設定方法
  9. PostgreSQLのインストール・設定方法
  10. Python 3系のインストール・設定方法
  11. WordPressの始め方/設定/有用プラグイン/テーマ/開発法まとめ
  12. メール送信サーバーの設定方法

インフラ構築時の参考資料

  1. MariaDBとMySQLとPostgreSQLどれを選ぶべきか選択フローチャート