コンテンツへスキップ

SU コマンドの有効化

セキュリティ対策ですが、利用したくなる「su -」コマンド、最近のUbuntsなどのLinux OSでは、初期設定時にrootのパスワードを設定しないので、suコマンドは利用できない状態となります。

以下が、suコマンドを実施して、失敗した際の例です。

SU コマンド有効化(rootユーザーのパスワード設定)

SUコマンドが利用できるように、rootユーザーのパスワードを設定します。
sudo su コマンドは利用できるので、自分のアカウントパスワードを用いて、rootユーザに切り替えを行います。

rootユーザーになり、パスワードコマンドでパスワードを設定します。
この状態で、suコマンドでのrootユーザーへの変更は可能となります。

動作確認のため、rootユーザーから抜けて、su -コマンドを実行し、パスワード入力後にrootユーザーに変更されることを確認します。

 

Jetson Nanoに Tensorflow-gpu、Keras などを導入

NVIDIA Jetsonへの各種ツールインストールは、NVIDAより公開されているOSイメージを利用することで、一通りのツールは導入済みとなります。
JETSON NANO DEVELOPER KIT(JetPack)と呼ばれています。

  • NVIDIA提供のtensorflow-gpu
  • Keras
  • その他ツール
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

導入パッケージのアップデート

インストールパッケージを最新にアップデートします。

各種パッケージ導入

NVIDIAが提供する、JetPackを導入してください。
(NVIDIAが提供するイメージを用いたOSを導入して下さい)
以前は、OpenCVなどをコンパイルして導入しておりましたが、JetPack 4.3では、必要そうなツールは、事前に導入済みでした。

JetPack 4.3 components:

  • L4T R32.3.1 (K4.9)
  • Ubuntu 18.04 LTS aarch64
  • CUDA 10.0
  • cuDNN 7.6.3
  • TensorRT 6.0.1
  • VisionWorks 1.6
  • OpenCV 4.1 (4.1.1)
  • Nsight Systems 2019.6
  • Nsight Graphics 2019.5
  • Nsight Compute 2019.3
  • SDK Manager 1.0.0

TensorFlow-GPU導入

NVIDIAの開発者コミュニティに記載されている内容で、インストールを行います。

https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html#install

  1. TensorFlow導入の前提ソフトウェアをインストールします。
  2. 導入済みのPip3コマンドを最新版に更新します。
  3. 前提となるPythonパッケージをPip3コマンドで導入します。
最後に、NVIDIAより公開されている媒体を用いて、tensorflow-gpuのインストールを実施します。

以下のパッケージ群が導入されます。

Successfully installed absl-py-0.9.0 astor-0.8.1 cachetools-4.1.0 google-auth-1.14.1 google-auth-oauthlib-0.4.1 google-pasta-0.2.0 grpcio-1.28.1 keras-preprocessing-1.1.0 markdown-3.2.1 oauthlib-3.1.0 opt-einsum-3.2.1 pyasn1-0.4.8 pyasn1-modules-0.2.8 requests-2.23.0 requests-oauthlib-1.3.0 rsa-4.0 scipy-1.4.1 six-1.14.0 tensorboard-2.1.1 tensorflow-2.1.0+nv20.4 tensorflow-estimator-2.1.0 termcolor-1.1.0 werkzeug-1.0.1 wrapt-1.12.1

keras導入

以下が、導入したTensorflowや、導入されているOpenCVのバージョン確認結果となります。
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

Apache 2、PHP、DB関係モジュールを導入

apt installで必要なパッケージを導入します。

前提条件

JenkinsとGithubを連携

Jenkinsを利用して、Githubに新しいソースコードがコミットされた際に、Githubより新規ソースコードの通知をトリガーとして、Jenkinsのタスクを実行させます。

私は、Githubへの新規コミットをトリガーに、ジャンケンシステムを構成するメインのIntel NUC Ubuntuサーバー、Raspberry Pi、NVIDIA Jetson Nanoに最新のソースコードが自動的にデプロイ(Pull)される環境を構築しました。
デプロイ前に、簡単なテストなども自動化することが出来ます。

Jenkins向けユーザーを作成

Raspberry PiやNVIDIA JetsonにJenkinsユーザーを作成します。

Sudo設定

Jenkinsユーザーで、各種スクリプトを実行するので、sudoが簡単に実行出来るように設定します。
※ 全体的にパスワードなしでのsudoを許可しているので、利用するコマンドごとの設定や、各種設定ファイルのアクセス権などを環境に合わせて設定し、セキュリティ対策を行って下さい。

SSHキー作成

Jenkinsユーザー向けのSSHキーを作成します。
このSSHキーをGithubに登録します。
Githubに登録することにより、Jenkinsユーザーを用いて、Githubの操作が可能になります。

GithubへSSHキーの登録と接続確認

https://github.com/settings/keys で id_rsa.pub の内容を登録します。

最後に、対象のサーバーより接続確認を行います。

 

created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

 

 

 

 

Jenkins導入

複数機器の管理、複雑なCronでのシステム管理など、スケジュール管理には導入をお勧めします。
一度利用すると、この便利さから抜け出せません。無償でここまで高機能な管理ソフトが利用出来るのは、ただただすごいです。

前提

Docker Composeを利用して、Jenkinsを導入します。
Docker Composeの導入がまだの場合は、Docker Composeを事前に導入して下さい。

docker-compose.yml作成

利用するイメージファイルですが、「image: jenkins:latest」を利用した場合に、初期設定のプラグインインストールに失敗する場合があるので、「image: jenkins:latest」を利用します。

初回Jenkins起動

作成したdocker-compose.ymlファイルのディレクトリで、docker-compose upコマンドを実行し、Jenkinsの起動を行います。

初回起動時には、最新のJenkinsのイメージが取得され、イメージのビルドが実行されます。
大切なのが、初回の起動に、Jenkinsのセットアップ時に必要となるパスワードが表示されます。初回ブラウザでのアクセス時に、パスワードの入力が必要になります。

Jenkins初期設定

JenkinsにWEBブラウザでアクセスし、初期設定を行います。

Webブラウザ上でhttp://localhost:18080/にアクセスし、Jenkinsイメージをビルドした際に表示されたパスワードを画面に入力し、初期設定を進めます。

Customize JenkinsのInstall suggested pluginsで失敗する際は、利用するコンテナイメージを確認して下さい。「image: jenkins:latest」を利用した場合に、初期設定のプラグインインストールに失敗する場合があるので、「image: jenkins:latest」を利用します。

created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

Samba導入

簡単な内容ですが、UbuntuにSambaを導入する方法です。
sambaをインストールし、ユーザー・初期設定を行うと利用可能になります。

Sambaインストール

Samba用のユーザーを登録する

Sambaでは、独自の認証情報を利用するので、Samba用のユーザーを作成します。

パスワードの設定を要求されるのでパスワードを設定します。

設定ファイルsmb.confの設定

/etc/samba/smb.confの設定を行います。
最低限の設定として、文字コードの設定と、利用したい共有フォルダーを設定します。

設定変更後の再起動

設定変更後に、サービスを再起動して、導入作業は終了です。
また、サーバー起動時に、Sambaが自動起動するように設定しておきます。

Docker および Docker Compressを導入

参考記事(Docker導入):

参考記事(Docker導入):

Docker WordPress 導入

Docker Composeを用いて、Wordpressを導入します。Compseファイルを作成し、コンテナをビルド、起動すれば、Wordpressの利用が可能です。
すぐにWordpress環境の利用が可能です。

Docker Composeファイルの作成

プロジェクト用のフォルダーを作成します。

作成したプロジェクトフォルダーに、Composeファイル(docker-compose.yml) と 環境ファイル(.env) を作成します。

docker-compose.yml サンプル

.env サンプル

解説

利用するDBファイルとWordpressファイルの、永続化(保存しておきたいデータ)をCompseファイルで明示的に指定し、コンテナ停止時もデータが保持されるような設定を行います。

/var/lib/mysql に配置されるWordPressのデータベースを、db_dataという名前の永続化領域に指定。

/var/www/html に配置されるWordPress の各種ファイル (wp-config.phpなど) を、ホスト側の ./wordpress フォルダに配置する指定。

Docker Composeの起動

docker-composeコマンドを用いてコンテナの起動を行います。初回起動時には、コンテナのビルドが行われます。

永続化データの確認

コンテナを停止し、永続化指定したデータが保存されていることを確認します。

永続化したはずのデータが残っているか確認してみます。

以上となります。
実際の運用時には、SQLパラメータ変更やサイトのSSL化を実施しているので、少し異なる設定で運用を行っております。

Docker Compose導入

事前に、Dockerを導入している必要があります。
参考URL:

完全に新しい分野と横目で見ていたコンテナなりDockerという世界。
絶対導入をおすすめですね。
導入時間の短縮、環境自体のモビリティ(移動性)、災害対応向けシステムの構築の用意性、たくさんの観点で導入をおすすめします。
場合によっては、パブリッククラウドへの移行やパブリッククラウド間の移動も簡単になります。(実質、依存パッケージの個別のインストール作業なりが不要となります)

今後、性能、セキュリティなどを見ていこうと思いますが、ドキュメントなりで調べている範囲では、アプリケーションやサービスを提供する上で、必要なもののみを独自環境(コンテナ)に導入する方法は、非常に理にかなっていると思います。

Docker Compose 導入

Docker Compressのインストール方法をWEBなどで調べているとPipやaptでインストールなど、環境などにより各種導入方法が準備されています。
気にする必要があるのは、Cocker Composeのバージョンとなります。
利用したいコンテナのビルドが失敗する場合などは、バージョンを確認して下さい。

Docker Compressインストール参考URL: Install Docker Compose

Ubuntu に Docker Composeを aptで導入

Ubuntu環境で、docker-composeコマンドを実行すると、aptコマンドでのインストール方法がガイドされましたので、aptコマンドを利用してdocker composeを導入しました。結論ですが、バージョンが古く、次に紹介する公式レポジトリから直接導入する方法で、再度上書きインストールしております。

さっそく、aptコマンドでインストールしてみると、無事にインストールすることができました。

curlコマンドを用いたDocker Compse導入

Docker Compressインストール参考URL: Install Docker Compose

アクセス権の変更

 

これで、Docker Composeが利用可能になります。
次の記事で、Docker Compseを用いたWordpressの導入方法を紹介します。

MSI GeForce GTX 1660 Ti AERO ITX 6G OC グラフィックスボード VD6893
MSI

Docker 導入

完全に新しい分野と横目で見ていたコンテナなりDockerという世界。
絶対導入をおすすめですね。
導入時間の短縮、環境自体のモビリティ(移動性)、災害対応向けシステムの構築の用意性、たくさんの観点で導入をおすすめします。
場合によっては、パブリッククラウドへの移行やパブリッククラウド間の移動も簡単になります。(実質、依存パッケージの個別のインストール作業なりが不要となります)

今後、性能、セキュリティなどを見ていこうと思いますが、ドキュメントなりで調べている範囲では、アプリケーションやサービスを提供する上で、必要なもののみを独自環境(コンテナ)に導入する方法は、非常に理にかなっていると思います。
そりゃ、世界で広がる理由が分かります。

前提ソフトウェアのインストール

前提ソフトウェアをインストールします。

  • apt-transport-https
  •  ca-certificates
  • curl
  • software-properties-common

Dockerレポジトリを追加

Dockerレポジトリを追加し、パッケージリストの更新を行います。

Docker-ceのインストール

aptコマンド用のレポジトリを設定

ここで aptコマンド用のリポジトリを設定しますが、dockerではstableedgetestが公開されています。

stableとして、以下のように設定しています。

x86_64

 

これで、Dockerが利用可能になります。
Docker導入にあたり、管理の便利なDocker Composeを導入したので、
明日の記事で、Docker Compseの導入方法を紹介します。

 

 

PHP関連モジュールのインストール

Ubuntu環境を数回続けて、インストールした際に、PHP関連モジュールをインストールしたので、必要なコマンドのメモをのことしておきます。

Linux間のボリュームマウントNFS

今回は、Jetson NanoのUbuntuボリュームを、Intel NUCのUbuntuからマウントする方法を紹介します。

  1. ボリュームを提供するサーバー側にnfs-kernel-serverを導入および設定
  2. クライアント側にnfs-commonを挿入およびマウント

サーバー側:Ubuntu にnfs-kernel-server導入

Nvidia jetson NanoのUbuntuにNFSをインストールします。

共有したいボリュームを/etc/exportsに記載します。

クライアント側:Intel NUCにnfs-common導入

Intel NUCのUbuntuにNFSツールをインストールします。

マウントポイントとなるフォルダーを作成し、マウントコマンドでマウントを実行します。

created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)