環境
ConoHa でサーバーを立てる際の参考になれば
- Unbuntu 22.04.1 LTS
- ConoHa 1GBプラン
ユーザーの作成
[ローカル]$ ssh root@NNN.NNN.NNN.NNN -i ~/.ssh/XXXXXXXX.pem
adduserで対話的にユーザーを作成
ConoHa で VPS を立てた際は root ユーザーしか存在しないようなので、新しく好きな名前でユーザーを作成します。
Ubuntu では adduser と useradd は違うようなので注意。
cf. 【Ubuntu】useraddとadduserの違い
https://qiita.com/kaitoland/items/386ebc94c3efa17bbecb
$ adduser yuinore
ユーザーのホームディレクトリに公開鍵をコピーする
ConoHa では Root ユーザーのホームディレクトリ(/root
)に公開鍵が登録されるので、それを /.ssh/yuinore
にコピーする
ls -alh /root/.ssh/authorized_keys
mkdir /home/yuinore/.ssh/
cp /root/.ssh/authorized_keys /home/yuinore/.ssh/
chmod 700 -R /home/yuinore/.ssh/
chown yuinore:yuinore -R /home/yuinore/.ssh/
yuinore ユーザーで sudo できるように修正
cf. Ubuntuでsshのrootログインを禁止する
https://qiita.com/patao-tech/items/3ed828d6769a7adf5a12
visudo
以下を追記
%yuinore ALL=(ALL) ALL
作成したユーザーでログインできるかどうか確認
[ローカル]$ ssh yuinore@NNN.NNN.NNN.NNN -i ~/.ssh/XXXXXXXX.pem
sudo できることも確認
sudo echo hello
ssh設定の修正
rootログインを禁止する
root ユーザーで SSH ログインできるとセキュリティ的に良くないという話があるので禁止します。
sudo vi /etc/ssh/sshd_config
- PermitRootLogin yes
+ PermitRootLogin no
sudo systemctl restart sshd
ポートを変更する
ポート変更も簡単なので一応やっておきます。別に変えなくても大丈夫です。
sudo vim /etc/ssh/sshd_config
- # Port 22
+ Port 22
+ Port ****
sudo systemctl restart sshd
sudo ufw allow ****/tcp
sudo ufw reload
この状態でログインできることを確認
確認できたら22番ポート削除
sudo vim /etc/ssh/sshd_config
- Port 22
+ # Port 22
Port ****
sudo systemctl restart sshd
sudo ufw status
sudo ufw delete allow OpenSSH
sudo ufw reload
インターネット疎通確認
ping -c 4 8.8.8.8
ping -c 4 yahoo.co.jp
curl -L yahoo.co.jp
キーボード入力の確認
ConoHa ではデフォルトで日本語キーボードが設定されているのでそのままでOK
echo あいうえお
echo '!"#$%&()=~|'
タイムゾーンの設定
ConoHa ではデフォルトでタイムゾーンが日本になっているので設定しなくてもOK
date '+%Y/%m/%d %H:%M:%S %z'
sudo timedatectl set-timezone Asia/Tokyo
date '+%Y/%m/%d %H:%M:%S %z'
スワップ領域の設定
ConoHa ではデフォルトでスワップ領域が設定されていることを確認する。
設定しないと apt コマンドの実行中にメモリ不足のエラーが起きたりする(と思う)
$ free -h
total used free shared buff/cache available
Mem: 969Mi 246Mi 71Mi 1.0Mi 650Mi 569Mi
Swap: 2.0Gi 0.0Ki 2.0Gi
$ swapon -s
Filename Type Size Used Priority
/swap.img file 2097148 560 -2
.bashrc の編集
vi ~/.bashrc
- HISTSIZE=1000
- HISTFILESIZE=2000
+ HISTSIZE=20000
+ HISTFILESIZE=20000
+ alias be='bundle exec'
source ~/.bashrc
基本パッケージのインストール
curl、wget、vim、gitはデフォルトで入ってました。ありがたい。
sudo apt -y update
sudo apt -y install curl wget zip unzip vim git tig
sudo apt -y install mlocate
sudo updatedb
vim ~/.vimrc
scriptencoding utf-8
set encoding=utf-8
filetype plugin indent on
:set tabstop=2
:set shiftwidth=2
:set expandtab
cnoremap w!! w !sudo tee > /dev/null %<CR> :e!<CR>
set list
set listchars=tab:»-,trail:-,extends:»,precedes:«,nbsp:%
root ユーザーで vim を叩いた場合にも適用されるようにする
sudo ln -s ~/.vimrc /root/
git config --global user.email "yuinore@hotmail.co.jp"
git config --global user.name "yuinore"
git config --global core.editor "$(which vim)"
nginxのインストール
apache2 が動いていた場合は必ず disable しておく
sudo systemctl disable apache2
sudo apt -y install nginx
sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo systemctl restart nginx
sudo systemctl is-enabled nginx
sudo systemctl enable nginx
sudo systemctl is-enabled nginx # 確認
Javaのインストール
バージョンはお好きなものを
sudo apt -y install openjdk-17-jdk
java --version
Python3 のインストール (pyenv使用)
前提ライブラリのインストール
ubuntu 20.04 / 18.04 に pyenv をインストール
https://zenn.dev/neruo/articles/install-pyenv-on-ubuntu
sudo apt install \
build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl llvm \
libncursesw5-dev tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
libopencv-dev git
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec $SHELL
pyenv --version
pyenv install --list | grep '3.11.'
pyenv install 3.11.0
pyenv versions
pyenv global 3.11.0
pyenv version
MySQL のインストール
sudo apt install -y libmysqlclient-dev
sudo apt install -y mysql-server
サーバーではさすがにパスワードなしでログインできるようにはしないので、パスワードを一応設定する
sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '【パスワード】';
パスワードを使用して sudo なしでログインできることを確認
sudo systemctl restart mysql
mysql -u root -p
ruby (rbenv, bundler)
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="~/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
rbenv -v
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
sudo apt install -y build-essential libssl-dev zlib1g-dev
rbenv install --list
rbenv install 3.1.2
rbenv global 3.1.2
ruby -v
gem update
gem install bundler
bundle -v
php
sudo apt -y install php
sudo apt -y install php-fpm php-mysql
RMagick
sudo apt -y install libmagickcore-dev
node (nodenv + yarn)
git clone https://github.com/nodenv/nodenv.git ~/.nodenv
echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(nodenv init -)"' >> ~/.bashrc
source ~/.bashrc
nodenv -v
nodenv-yarn-install を導入して、 nodenv install コマンドの実行と同時に yarn もインストールします。
git clone https://github.com/nodenv/node-build.git $(nodenv root)/plugins/node-build
git clone https://github.com/pine/nodenv-yarn-install.git "$(nodenv root)/plugins/nodenv-yarn-install"
nodenv install --list
nodenv install 16.15.0
nodenv global 16.15.0
curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash
nodenv versions
nodenv version
yarn -v
pyonpyon
かわいい。
mkdir -p ~/projects
cd ~/projects/
git clone https://github.com/sgymtic/sl.git pyonpyon
cd pyonpyon/
git checkout pyonpyon
make
./pyonpyon
sudo cp pyonpyon /usr/local/bin
echo 'alias sl="pyonpyon"' >> ~/.bashrc
source ~/.bashrc
sl