学術研究向けLinuxサーバーの構築手順
最近、私はMiniPCをUbuntuベースのサーバーに改造し、将来の研究ニーズに対応できるように設定しました。
Linuxの知識があまりなかったため、構築にあたり学習と試行錯誤を重ね、その手順や発生しうる問題、解決策を記録しました。
Ubuntuで管理者権限を持つ新規ユーザーの作成
クラウドサービスやベンダー提供、または自分でセットアップしたUbuntuサーバーでは、デフォルトユーザー(default User)が作成されます。通常、このユーザーはsudo
コマンドで一時的に権限を昇格できますが、本質的には一般ユーザーです(管理者アカウントではありません)。同じ管理者権限を持つカスタムユーザーを作成したい場合は、以下の手順で行います。
1. 新規ユーザーの作成(ホームディレクトリとログインシェル指定)
sudo useradd -d "/home/<user_name>" -m -s "/bin/bash" <user_name>
パラメータの説明:
-
-d "/home/<user_name>"
:ユーザーのホームディレクトリを/home/<user_name>
に設定 -
-m
:ホームディレクトリを自動作成 -
-s "/bin/bash"
:デフォルトのログインシェルを/bin/bash
に指定
2. 新規ユーザーに管理者権限を付与
sudo(管理者)権限を持つユーザーを作成するには、以下のコマンドを実行します。
sudo useradd -d "/home/<user_name>" -m -s "/bin/bash" -G sudo <user_name>
-
-G sudo
:<user_name>
をsudo
グループに追加し、管理者権限を付与
3. 新規ユーザーのパスワード設定
新規ユーザーはデフォルトでパスワードがありません。以下のコマンドで <user_name>
のパスワードを設定します。
sudo passwd <user_name>
コマンド実行後、2回パスワード入力を求められます。セキュリティ上、入力時に文字や記号は表示されません。パスワードを入力し、Enter
で確定してください。
以上で、管理者権限を持つ新規ユーザー <user_name>
を作成できます。sudo
コマンドで管理者作業が可能です。
ターミナルのプロンプト美化
見た目が良く使いやすいプロンプトは作業効率を高めます。ここではzsh
を使った美化方法を紹介します。詳細は以前の記録を参照してください。
サーバーのリモートアクセス有効化
サーバーを物理的に離れた場所から操作するには、SSHサービスのインストールと設定、防火壁の調整が必要です。
1. SSHサービスのインストールと設定
基本的なSSHアクセスのみ必要な場合は、openssh-server
のインストールとサービス起動で十分です。セキュリティを高めるには、/etc/ssh/sshd_config
の設定を最適化します。
sudo apt update
sudo apt install openssh-server
インストール後、SSHサービスの状態を確認します。
sudo systemctl status ssh
-
設定の推奨事項:
-
rootユーザーの直接ログイン禁止(推奨):rootでの直接ログインを避け、セキュリティを向上させます。
/etc/ssh/sshd_config
でPermitRootLogin
をno
に設定。sudo nano /etc/ssh/sshd_config
PermitRootLogin no
-
許可ユーザーの制限:
AllowUsers
でSSHログインを許可するユーザーを指定し、セキュリティを強化。AllowUsers <user_name>
-
デフォルト以外のポート使用(任意):SSHポートを22以外(例:2200)に変更し、スキャン攻撃を減らします。防火壁設定も合わせて変更してください。
Port 2200
-
アイドル接続の自動切断:未使用のSSHセッションを自動切断するには、以下を追加。
ClientAliveInterval 300 ClientAliveCountMax 2
-
設定後、SSHサービスを再起動して反映します。
sudo systemctl restart ssh
2. UFWファイアウォールの設定
UFWファイアウォールを有効にしている場合は、SSHポートを開放します。デフォルト(22番)の場合:
sudo ufw allow ssh
ポートを変更した場合(例:2200):
sudo ufw allow 2200/tcp
-
設定の確認:
sudo ufw enable sudo ufw status
3. SSH接続の確認
クライアント(例:Windows)からサーバーへの接続をテストします。Windowsでは PuTTY や Windows Terminal などのSSH対応ターミナルを推奨します。
telnetコマンドで接続テストも可能ですが、本番環境ではSSHクライアントを使用してください。
telnet <remote_ip> <remote_port>
<remote_ip>
はサーバーのIPアドレス、<remote_port>
はSSHポート(デフォルト22)に置き換えてください。
4. .Xauthorityファイルの権限問題修正
/home/<user_name>/.Xauthority
の権限エラーは、root以外で作成された場合に発生します。ユーザーディレクトリの所有権を修正し、必要に応じて.Xauthority
を新規作成します。
sudo chown <user_name>:<user_name> -R /home/<user_name>
問題が解決しない場合は、以下で新規作成:
sudo -u <user_name> touch /home/<user_name>/.Xauthority
sudo chown <user_name>:<user_name> /home/<user_name>/.Xauthority
5. Fail2Banの導入(推奨)
SSHへのブルートフォース攻撃対策としてfail2ban
を導入します。失敗したログイン試行を検知し、該当IPを一時的に遮断します。
sudo apt install fail2ban
fail2ban
はSSH保護を自動で有効化します。/etc/fail2ban/jail.local
で詳細設定可能です。
[sshd]
enabled = true
port = 22
maxretry = 5
bantime = 600
サーバーとGitHubのSSH接続設定
UbuntuサーバーからGitHubへ安全にクローン・プッシュ・プルするためのSSH接続手順です。
1. Gitのインストールと確認
まずGitをインストールし、バージョンを確認します。
sudo apt install git
git --version
2. Gitユーザー情報の設定
GitHubのユーザー名とメールアドレスを設定します(GitHubアカウントと一致させてください)。
git config --global user.name "<github_account_name>"
git config --global user.email "<github_account_email>"
この設定は~/.gitconfig
に保存され、全リポジトリで有効です。
3. SSH鍵ペアの生成
GitHubと安全に通信するため、SSH鍵ペアを生成します。
ssh-keygen -C "<github_account_email>" -t rsa
-
-C "<github_account_email>"
:鍵にコメント(通常はメールアドレス)を付与 -
-t rsa
:RSAタイプの鍵を生成
コマンド実行後、3回Enter
を押して(デフォルト名・パスフレーズなし)、~/.ssh
に鍵が保存されます。
4. SSH公開鍵をGitHubに登録
-
公開鍵を表示し、内容をコピーします。
cat ~/.ssh/id_rsa.pub
-
GitHubの「Settings」→「SSH and GPG keys」→「New SSH key」で貼り付け、説明を入力して保存します。
5. GitHubとのSSH接続テスト
設定後、以下で接続をテストします。
ssh -T git@github.com
成功すると、以下のようなメッセージが表示されます。
Hi <github_account_name>! You've successfully authenticated, but GitHub does not provide shell access.
6. よくある問題と対処法
-
SSH鍵の権限エラー:権限を正しく設定してください。
chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub
-
SSH Agentへの鍵追加(推奨):
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
Python環境の構築と管理
Miniforge
サーバーでPythonの科学計算環境を管理するため、軽量かつ高速なMiniforgeを採用しました。Miniforgeはconda-forgeチャンネルをデフォルトで利用し、Mambaも統合されています。
1. Miniforgeのインストール
Miniforge公式GitHubの手順に従い、以下でインストールします。
wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
-
/usr/local/miniforge3
へのインストールを推奨(複数ユーザーで共有可能、変更はrootのみ) -
ZSH利用時は
.zshrc
にパスを追加export PATH="$usr/local/miniforge3/bin:$PATH"
-
.zshrc
を再読み込み:source ~/.zshrc
2. Mamba環境の初期化
インストール後、Mambaを初期化します(例:/usr/local/miniforge3
にインストールした場合)。
/usr/local/miniforge3/bin/mamba init
ZSHでうまくいかない場合は、.bashrc
の設定を.zshrc
にコピーしてください。
3. 環境の作成と管理
複数ユーザー環境では、root権限(sudo su
)で環境を作成・管理することを推奨します。
新規環境の作成
mamba create --name <new_env_name> python=3.11 --no-default-packages
-
--name <new_env_name>
:環境名 -
python=3.11
:Pythonバージョン指定 -
--no-default-packages
:Pythonのみインストール
一般ユーザーはホームディレクトリ配下にプライベート環境を作成可能:
mamba create --prefix /home/username/myenv python=3.11 --no-default-packages
環境の削除
mamba remove --name <env_name> --all
mamba remove --prefix /path/to/directory --all
4. よく使うパッケージのインストール
base
環境は直接変更せず、用途ごとに専用環境を作成してください。例:JupyterHub
のインストール
mamba create --name ml_env python=3.12 jupyterhub jupyterlab notebook notebook scipy numpy numpy
mamba activate ml_env
mamba install jupyter-lsp-python jupyterlab-lsp jupyterlab-git jupyterlab_execute_time
5. 権限による更新制限
一般ユーザーがシステム環境を更新しようとすると、権限エラーが発生します。
mamba update --all
エラー例:
EnvironmentNotWritableError: The current user does not have write permissions to the target environment.
environment location: /usr/local/miniforge3
uid: 1000
gid: 1000
一時的にbase
環境を更新する場合はsudo
を利用:
sudo /usr/local/miniforge3/bin/mamba update --all
Poetry
PoetryはPythonプロジェクトの依存管理・仮想環境管理・パッケージ公開を効率化するツールです。
1. Poetryのインストール
Python 3.7以上が必要です。
-
公式インストールスクリプトを利用:
curl -sSL https://install.python-poetry.org | python3 -
-
PATHに追加:
export PATH="$HOME/.local/bin:$PATH"
-
インストール確認:
poetry --version
2. 新規プロジェクトの作成
poetry new my_project
生成されるディレクトリ構成:
my_project/
├── my_project/
│ └── __init__.py
├── pyproject.toml
└── tests/
└── __init__.py
既存プロジェクトの場合:
cd existing_project
poetry init
3. 依存関係の管理
-
本番依存の追加:
poetry add requests
-
開発依存の追加:
poetry add pytest --dev
-
依存のインストール:
poetry install
4. 仮想環境の管理
-
仮想環境の有効化:
poetry shell
-
仮想環境の終了:
exit
-
仮想環境のパス確認:
poetry env info --path
-
仮想環境の削除:
poetry env remove python
5. 依存ロックファイルの管理
-
依存バージョンの更新:
poetry update
-
ロックファイルに基づくインストール:
poetry install
6. スクリプト・コマンドの実行
-
スクリプトの実行:
poetry run python script.py
-
テストの実行:
poetry run pytest
7. Pythonパッケージの公開
-
パッケージのビルド:
poetry build
-
PyPIへの公開:
poetry publish --build
テスト用PyPIの場合:
poetry publish --repository testpypi
以下は計量経済学分野でR環境を構築する手順です。RおよびRStudioのインストール、主要パッケージの導入方法をまとめます。
Ubuntuで計量経済学向けR環境を構築する
計量経済学では、Rは経済データの処理や回帰分析、時系列分析などに適しています。
1. Rのインストール
Ubuntu標準リポジトリのRは最新版でない場合があります。最新バージョンを入手するにはCRANリポジトリを利用します。
-
CRANリポジトリの追加:
sudo apt update sudo apt install software-properties-common dirmngr -y
-
CRANのGPGキー追加:
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
-
GPGキーの確認(任意):
gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
-
CRANリポジトリをaptソースに追加:
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
-
Rと開発パッケージのインストール:
sudo apt install r-base r-base-dev -y
2. RStudioのインストール
RStudioはデータ分析や可視化に便利なIDEです。公式ガイドを参照してください。
- RStudio Server最新版をダウンロード
-
dpkg
でインストールsudo dpkg -i rstudio-server-<version>.deb
-
インストール確認
sudo systemctl status rstudio-server
RStudio Serverはhttp://<your-server-ip>:8787
でアクセスできます。
3. 計量経済学関連Rパッケージのインストール
-
システム依存パッケージのインストール:
sudo apt-get install build-essential libssl-dev libcurl4-openssl-dev libxml2-dev
-
主要パッケージのインストール:
Rコンソールで以下を実行:
chooseCRANmirror(graphics = FALSE) install.packages(c("tidyverse", "data.table", "broom", "plm", "forecast", "lmtest", "sandwich", "stargazer"))
-
tidyverse
:データ処理・可視化 -
data.table
:高速データ処理 -
broom
:回帰結果の整形 -
plm
:パネルデータ回帰 -
forecast
:時系列分析 -
lmtest
・sandwich
:計量経済学的検定・ロバスト標準誤差 -
stargazer
:回帰結果の表形式出力
-
-
高度な計量経済学ツール:
install.packages(c("AER", "urca", "vars"))
-
金融時系列分析パッケージ(任意):
install.packages(c("quantmod", "TTR", "zoo", "xts"))
4. GitHubトークンを使ったプライベートパッケージのインストール
GitHubからパッケージをインストールする場合、API制限回避のためトークン利用を推奨します。
-
Rコンソールでトークン生成:
usethis::create_github_token()
-
GitHubでPersonal Access Tokenを作成
-
R環境にトークンを設定:
gitcreds::gitcreds_set()
5. サンプル:plmパッケージでパネルデータ回帰
-
plmのインストール:
install.packages("plm")
-
plmの利用例:
library(plm) # サンプルパネルデータ data("Produc", package = "plm") pdata <- pdata.frame(Produc, index = c("state", "year")) # 固定効果モデル fe_model <- plm(log(gsp) ~ log(pcap) + log(hwy) + log(water) + log(util), data = pdata, model = "within") summary(fe_model)
以下は整理优化后的指南,以帮助更有效地同步数据、安装字体、并处理 Nvidia 驱动程序和库的相关问题。
其他问题
1. データ同期
ローカルデータをリモートサーバーに同期するには、rsync
が効率的です。詳細はこちらのチュートリアルを参照。
-
同期コマンド例:
rsync -r /path/to/sync/ <username>@<remote_host>:<destination_directory>
-
大容量ファイルの進捗監視:
watch -n <time_interval> du -sh /path/to/large/file
2. よく使うフォントのインストール
LinuxにはWindowsの標準フォント(ArialやTimes New Romanなど)が含まれていません。これらをインストールし、matplotlib
のキャッシュを削除してフォントを反映させます。
sudo apt install msttcorefonts
rm -rf ~/.cache/matplotlib
3. ドライバ/ライブラリのバージョン不一致
nvidia-smi
で以下のエラーが出る場合:
Failed to initialize NVML: Driver/library version mismatch
Stack Overflowの解決策を参考にしてください。
-
サーバーの再起動:
sudo reboot
-
Nvidiaドライバの再インストール:
sudo apt purge nvidia* libnvidia* sudo ubuntu-drivers install sudo reboot
4. Nvidiaドライバのアップグレード
-
旧ドライバの削除:
sudo apt purge *nvidia* -y sudo apt remove *nvidia* -y sudo rm /etc/apt/sources.list.d/cuda* sudo apt autoremove -y && sudo apt autoclean -y sudo rm -rf /usr/local/cuda*
-
推奨ドライバの検索とインストール:
ubuntu-drivers devices
例:バージョン550をインストール
sudo apt install libnvidia-common-550-server libnvidia-gl-550-server nvidia-driver-550-server -y
-
再起動と確認:
sudo reboot now
nvidia-smi
でエラーが出る場合は、カーネルヘッダーを再インストールしてください。
5. カーネルヘッダーとGCCの設定
-
カーネルヘッダーの再インストール:
sudo apt install --reinstall linux-headers-$(uname -r) sudo reboot
-
GCCバージョンの更新:
sudo apt-get install gcc-12 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
カーネルヘッダー再インストール後、
nvidia-smi
が正常に動作するはずです。
- 监控大文件的传输进度:
如果同步的是较大文件,可以用 watch
命令来监控同步进度:
watch -n <time_interval> du -sh /path/to/large/file
该命令会每隔 <time_interval>
秒刷新一次文件的大小变化。
2. 安装常用字体
Linux 系统默认不带有一些 Windows 中的常用字体(例如 Arial
和 Times New Roman
)。安装这些字体可以改善文档和网站的显示效果,特别是那些依赖这些字体的图形输出。安装 Microsoft TrueType 核心字体包并刷新缓存:
sudo apt install msttcorefonts
rm -rf ~/.cache/matplotlib
-
msttcorefonts
包括多种 Microsoft 字体,如 Arial 和 Times New Roman。 - 第二个命令删除了
matplotlib
缓存目录,以确保更新后的字体正确加载。
3. 驱动程序/库版本不匹配
在运行 nvidia-smi
时,如果出现以下错误:
Failed to initialize NVML: Driver/library version mismatch
可以参考 Stack Overflow 上的解决方案。简要的步骤如下:
-
重启服务器:
某些情况下,重启服务器即可解决问题:sudo reboot
-
卸载并重新安装 Nvidia 驱动程序:
如果重启无效,尝试以下命令清除现有的 Nvidia 驱动程序并重新安装:
sudo apt purge nvidia* libnvidia* sudo ubuntu-drivers install sudo reboot
4.升级 Nvidia 驱动程序
要升级 Nvidia 驱动程序,可以按照以下步骤进行:
-
卸载旧驱动程序:
sudo apt purge *nvidia* -y sudo apt remove *nvidia* -y sudo rm /etc/apt/sources.list.d/cuda* sudo apt autoremove -y && sudo apt autoclean -y sudo rm -rf /usr/local/cuda*
-
查找并安装推荐的驱动程序:
运行以下命令来查找推荐的 Nvidia 驱动程序版本:
ubuntu-drivers devices
或者通过以下命令安装指定版本(例如
550
,根据系统需求调整版本号):sudo apt install libnvidia-common-550-server libnvidia-gl-550-server nvidia-driver-550-server -y
-
重启并检查:
重启服务器并使用
nvidia-smi
检查新驱动是否正常运行:sudo reboot now
如果
nvidia-smi
返回以下错误:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
尝试重新安装内核头文件并重启。
5.内核头文件安装和 GCC 配置
如遇到内核头文件或 GCC 版本问题,按以下步骤操作:
-
重新安装内核头文件:
sudo apt install --reinstall linux-headers-$(uname -r) sudo reboot
-
更新 GCC 版本:
如果内核头文件安装过程中遇到 GCC 错误,可以升级到
gcc-12
:sudo apt-get install gcc-12 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
重新安装内核头文件并重启服务器后,
nvidia-smi
应该能够正常工作。
この記事を楽しみましたか?
次におすすめの記事はこちら: