お名前ドットコムVPSへ移行への道8-コマンド一覧

※ 当サイトではアフィリエイト広告を利用しています。リンクは広告リンクも含みます。

この記事は約14分で読めます。

お名前.com VPS を使用するにあたって私が使用しているコマンド一覧です。
環境
パソコン Windows11
VPS OS Ubuntu 20.04.3 LTS、 Dockerを使用

広告
MINISFORUM日本公式ストア

Docker

一覧、削除

コンテナ一覧表示(-aを付けない場合は稼働中のコンテナのみ表示)
sudo docker ps -a
コンテナstop
sudo docker stop コンテナID
コンテナ個別削除
sudo docker rm コンテナID
コンテナ全削除
docker container prune
コンテナ全削除(動いていても削除できる)
docker rm -f `docker ps -a -q`

イメージ一覧
sudo docker images
イメージ個別削除
sudo docker rmi イメージID
イメージ全削除(うまくいかない場合は個別で削除)
sudo docker image prune

ボリューム一覧
sudo docker volume ls
ボリューム削除
sudo docker volume rm ボリューム名

ネットワーク一覧
sudo docker network ls
動いているネットワーク名はbridge、host、noneは多分必要なもので消さないほうがいい。
ネットワーク削除
sudo docker network rm ネットワークID
ネットワーク作成(Error response from daemon: network shared not foundが出たとき実施)
sudo docker network create shared

Build Cacheを削除
sudo docker system prune
イメージ、コンテナ、ネットワークを削除(prune)するショートカットのようですが。
(ボリュームはデフォルトでは削除されない。)
これを実行するとDeleted build cache objects:となってBuild Cacheも削除されました。
目次へ

コンテナ操作

コンテナの中に入る
imeageがalpineの場合
sudo docker exec -it コンテナ名 sh
imeageがalpine以外の場合
sudo docker exec -it コンテナ名 bash
rootでコンテナの中に入る
sudo docker exec -it --user root コンテナ名 bash

Nginxのconfを反映させる(restartの他にstopで停止、startで開始)
sudo docker restart コンテナ名
ymlを変更したとき反映させたり、最初にymlを実行するとき(オプションの -d はバックグラウンドでコンテナを起動してくれる)
cdでdocke-compose.ymlのあるディレクトリに移動して
sudo docker-compose up -d 

docker-compose up で作成されたコンテナ、ネットワーク、ボリューム(明示的に定義されている場合)、および関連するイメージ(build 指定がある場合)を、docker-compose down によって削除します。

目次へ

ファイルコピー

SSH接続したVsコードの左側のツリー(ホスト上)からファイルをコピー
(ファイルは、このコマンドを実行する同階層におく。)
sudo docker cp ファイル コンテナID:ディレクトリ
例sudo docker cp 50x.html コンテナID:/usr/share/nginx/html

コンテナからSSH接続したVsコードの左側のツリー(ホスト上)にファイルをコピー
sudo docker cp <コンテナID>:<コピーしたいファイルパス> <ホスト上のコピー先パス>
例docker cp 1c8caa876b98:/usr/local/apache2/conf/httpd.conf ./
ホスト上のコピー先パスを./にすればコマンドを実行しているディレクトリにコピーされます。
Vsコードでファイルを右クリックしダウンロードでローカルにダウンロードできます。

ログ

エラーログをターミナルに表示(-f:ログをリアルタイムで追跡)
sudo docker logs コンテナ名 -f 1>/dev/null

アクセスログをターミナルに表示
sudo docker logs コンテナ名 -f 2>/dev/null

1or2>/dev/nullの意味は
1は標準出力、2はエラー出力、
>/dev/nullを付けると、その番号の出力は捨てるという意味なので上記のようになる。

ログが長すぎるとき(5行10個のフィールドの場合)
sudo docker logs コンテナ名 -f --tail=5 2>/dev/null | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'
各行の最初から8つ目までのフィールドをスペースで区切って出力します。各フィールドは、スペースで区切られたテキストのセグメントです。
10個のフィールドにしておけば多くの場合statusまで表示します。
ログの中身を見るときはメモ帳ではなくVsコードに貼りましょう。
ログをメモ帳に貼ると勝手に改行が入り行の判別がわからなくなります。
VSコードに貼ると長くても改行はしませんので分かりやすいです。

 {"transaction": ...}で始まる行は、ModSecurityによって生成されたトランザクションデータを含むJSON形式の文字列です。これは、ModSecurityが検出したセキュリティイベントに関する詳細情報を提供します。{"transaction": ...} 内のデータには、クライアントのIPアドレス、サーバーの応答、リクエストの詳細などが含まれています。

リアルタイムでアクセスとエラーログを監視するとき私が使うのは
sudo docker logs コンテナ -f --tail=5 | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'

アクセスログをlog.txtファイルにコピー
sudo docker logs コンテナ名 > log.txt
日付後のアクセスログをlog.txtファイルにコピー
sudo docker logs --since 2024-04-01T00:00:00 コンテナ名 > log.txt
日付後のアクセスログをlog.txtファイルにコピー、エラーログをerror_log.txtにコピー
sudo docker logs --since 2024-05-24T00:00:00 コンテナ名 > log.txt 2> error_log.txt
日付後のアクセスログとエラーログを混ぜてcombined_log.txtにコピー
sudo docker logs --since 2024-05-24T00:00:00 コンテナ名 &> combined_log.txt

Vsコード接続してるときに、このコマンドを実行するとVsコードにlog.txtなどができる。
VPSのほうはコマンドを実行したディレクトリにできます。
Vsコードでlog.txtを右クリックしダウンロードでローカルにダウンロードできます。
目次へ

使用状況確認他

# コンテナのリソース使用状況を確認
docker stats

Nginxの構文チェック

構文チェックはrestartでNginxの設定変更を反映させる前に確認できるので、設定がおかしくてコンテナが動かなくなったりすることを防げます。

コンテナの中に入って確認する
sudo docker exec -it waf-nginx sh
Nginxのバージョン
nginx -V
Nginxの構文チェック
nginx -t

Linux(ubuntu)

一覧表示
ls
削除
rm -r 削除するディレクトリ
消していいか聞かれるのでy+Enter
ディレクトリ移動
cd ディレクトリ名
ディレクトリ上へ移動
cd ..

ログイン状況の確認
last
パーミッション確認
ls -l
パーミッション設定
chmod *** ディレクトリorファイル
例chmod 755 /etc/letsencrypt/live

メモリ容量
free
メモリ使用率の高い順にプロセスを表示
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
メモリ使用率の高い順にプロセスを表示(上位9個)
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem |head
リアルタイムでプロセスのメモリ使用量確認
top
Shift + M を押すと、メモリ使用量順に並び替え可能
ディスク容量
df -h

ファイルの最後の数行表示
tail ファイル名
ファイルサイズ確認
du -ch ファイル名 | grep total$ | cut -f 1
ディレクトリと、その中のファイルサイズ確認
du -ah ディレクトリ名
ディレクトリのサイズ確認
du -h ディレクトリ名

検索
find 探すディレクトリ -type f -name "ファイル名"
例:find /path/to/search -type f -name "filename.txt"

grep -r -i "検索する文字列" 探すディレクトリ
例:grep -r -i "StartServers" /etc/apache2/

コンテナとプロセスの関係が分かるツリー表示
systemctl status
pstreeよりもこっちのほうが見やすい

443portのトラフィックをキャプチャ
(SSH接続のVsコードでは見れなかったが管理画面のシリアルコンソールだと見れた。)
sudo tcpdump -i ens3 port 443

TCPソケットのみ表示
ss -natp
TCPでコネクションが確立してるのだけ表示
ss -t

最近5件のログインのみ表示
last -n 5

Cronの状況確認(エラーが出てたら確認できる)
systemctl status cron

プロセス表示
ps aux
pythonに関係あるプロセス表示
ps aux | grep python

プロセス削除
kill
実施例
python manage.py runserver 0.0.0.0:800* &
で起動したプロセスの削除https://kikuichige.com/24495/#toc11

Djangoのログ(ターミナルを閉じても実行し続けlogファイルを作る方法)
以下で実行するとpython manage.py runserver 0.0.0.0:8008でターミナルに出力されていたものが
logに保存される。ターミナルを閉じてもok。
nohup python manage.py runserver 0.0.0.0:8008 > output.log 2>&1 &

目次へ

おすすめ

必要に迫られてコマンド実行していましたが、
こちらのYoutubeみたら、だいぶ何やっているか分かってきました。
https://youtu.be/-asvOd3nmNY?si=ni5IU9KtDKxLR-eP
https://youtu.be/XyUFp1SQEic?si=64C29myWiAV1aWRJ

その他

Django

モジュールインストール
pip install -r requirements.txt
サーバーラン
python manage.py runserver 0.0.0.0:8000
静的ファイルをstaticfilesに集める
python manage.py collectstatic
データベース
migrationファイル作成
python manage.py makemigrations
migrationファイル登録
python manage.py migrate

requirements.txtを1つにまとめる。
ディレクトリに移動して
find . -name "requirements.txt" -exec cat {} \; | sort | uniq > all_requirements.txt
ただ、重複が完全に削除できないし、
こんな感じdjango-environDjangoで変に連結されるので手動削除

Git

git clone https://アクセストークン@github.com/ユーザーname/レポジトリ名.git
目次へ

ローカルからホストへのコピー

ファイルを送る

鍵認証で接続する場合
PowerShellを立ち上げる。

scp -P ポート番号 "C:\Users\user\test.txt" ホスト名(例myserver):/home/user/

-P ポート番号は、ローカルのSSH接続の設定値を書いたconfigファイルに(~/.ssh/config)書かれている場合、不要。
ホスト名は、ローカルのSSH接続の設定値を書いたconfigファイルに(~/.ssh/config)書かれている名前。以下の例ではmyserver

Host myserver
    HostName host
    User user
    Port <ポート番号>
    IdentityFile ~/.ssh/id_rsa(秘密鍵ファイルの場所)

フォルダを圧縮して送る

フォルダは圧縮して上の方法でサーバーに転送し回答すればいいです。

tar -czvf myfolder.tar.gz myfolder
  • myfolder → 圧縮対象
  • myfolder.tar.gz → 出力される圧縮ファイル
🧰 tar -czvf myfolder.tar.gz myfolder/ の意味

このコマンドは、フォルダ myfolder.tar.gz 形式で圧縮するものです。

コマンドの構造:

tar -czvf [出力ファイル名] [対象フォルダ]

各オプションの意味:

オプション意味
-ccreate:新しいアーカイブを作成する
-zgzip圧縮.gz 形式で圧縮する
-vverbose:処理中のファイル名を表示する
-ffile:アーカイブファイル名を指定する(順番重要)

✅ Ubuntuでtarが使えるか確認する方法

Ubuntuでは多くの場合、tar は初期インストールされています。確認するには次のコマンドを実行してください:

tar --version

たとえば:

tar (GNU tar) 1.34

のようにバージョンが表示されれば すでに使えます

もし command not found と出たら、以下でインストールできます:

sudo apt update
sudo apt install tar


💡サーバーで解凍

  • .tar.gz の形式は Linuxとの相性が非常に良く、サーバー上でも展開が簡単
  • 展開は以下のコマンドでできます:
tar -xzvf myfolder.tar.gz

CRLFとLFの問題

存在するのにnot found

圧縮してSCPで送って解凍したファイルに関して
以下のようにlsで確認すると存在するのに実行するとnot foundになった。
#ls 
README.md api db.sqlite3 deploy.sh flashcard_backend gunicorn.conf.py manage.py requ
# deploy.sh sh: 16: deploy.sh: not found

原因
改行コードが Windows形式(CRLF)になっていると、Linuxでうまく動かないことがあります。
対策
VSCodeは右下にCRLFと出ているので、それをクリックしてLFに変更する。

Gitでもwarningの原因になる

git addでワーニング
warning: in the working copy of ‘vite.config.ts’, LF will be replaced by CRLF the next time Git touches it

「② 改行コードの自動変換を無効化する」にして様子見

🔧 Gitの警告「LF will be replaced by CRLF」についての解説と対処法

この警告は、Gitがファイルの改行コードを LF(Line Feed)からCRLF(Carriage Return + Line Feed)に変換しようとしていることを示しています。これは主に Windows環境で起こります。

🧠 なぜ起こるのか?


  • LF:Unix系(Linux/macOS)で使われる改行コード
  • CRLF:Windowsで使われる改行コード

Gitは、OSに応じて改行コードを自動変換する設定があり、これが原因で警告が出ます。


✅ 対処法

① 警告を無視してもOKな場合

  • 単なる警告なので、Gitの動作には支障ありません
  • ただし、改行コードの混在があると、チーム開発で差分が出やすくなるので注意。

② 改行コードの自動変換を無効化する(おすすめ)

git config --global core.autocrlf false
  • これでGitが改行コードを勝手に変換しなくなります。

他の設定値:

設定値意味
trueチェックアウト時にLF→CRLF、コミット時にCRLF→LF
inputチェックアウト時は変換せず、コミット時にCRLF→LF
false変換しない(おすすめ)

.gitattributes で個別に制御する

プロジェクトルートに .gitattributes を作成して、ファイルごとに改行コードを指定できます:

*.ts text eol=lf
*.sh text eol=lf

🧼 改行コードを統一したいなら

VSCodeなどのエディタで「改行コードをLFに統一」して保存するのも有効です。

CRLF(\r\n改行)はHex(0D0A)で見ないと見えないので、今どうなっているのか気付きにくいし、不具合の原因になっても発見しにくい。AIも気づきにくい。

コメント

タイトルとURLをコピーしました