問題だらけ。。。

色々な覚書(まとまっていないもの多数)

RaspberryPi初期設定(ライブラリインストール編)

前回の記事で初期設定は完了したので、今回はライブラリ関係をインストールしていく。

まず、下準備としてパッケージ管理システムを入れていく。

(ライブラリインストールに必要だからね)

 

【下準備】

1.apt-getとpipをアップデート

最低限、インストールに必要なもの。

大体デフォルトで入っているから、それにアップデートをかけてやる。

もし入ってなかったらインストールすること。

 

$sudo apt-get update

$sudo pip install -U pip

 

もし、”名前解決がうんたらかんたら~”ってエラーが出たら

何も考えず以下を打ち込む。

$sudo dhclient wlan0

 

2.gitのインストール

パッケージ管理システムといえばこれ!

$sudo apt-get install git

 

3.homebrewのインストール

以下のサイトを参照

http://www.gworks.jp/2020/01/raspberry-pi-homebrew/

 

brewテスト実行時にめっちゃエラー

$brew install nmap

 

Error:No Homebrew ruby 2.6.3_2 available for armv6l processors!

等々。

 

とりあえずrubyが必要なのか。。。

ということで、以下を参考にインストール

https://qiita.com/orihomotakanat/items/b4a983617f64d4768b7c

 

上サイトの8.でつまづく。

rbenv に installコマンドねーよ!って言われる。。。

以下解決策っぽい。

https://komeiy.hatenablog.com/entry/2014/12/23/222210

 

とりあえずいけた。

あとは元のサイトに戻って、rubyインストール

$rbenv install 2.6.6

 

インストールが終わらない。

→とりあえずbrewrubyのインストールは保留。

気が向いたら再開。

 

6. GPIO制御のためのライブラリインストール

 

1. wiringPiのインストール

$pip install wiringpi 

$pip install RPi.GPIO

 

7.DB周辺のライブラリインストール

 

$sudo apt-get install mariadb-server

$pip install sql_alchemy

$pip install pymysql

 

8. ポートスキャンツールnmapのインストール

ポート設定で必要かと思いインストール。

以下のサイトを参照

https://qiita.com/SotaAtos/items/29b10a875b0371518d3c

 

インストールしたパッケージ一覧を見たいときは

$dpkg -l [ワイルドカード]

ちなみに一覧抜けるときは"q"。

 

 pythonのインストール済みライブラリ一覧が見たいときは

$pip list | grep [検索語]

 

 

 

RaspberryPiから別のRaspberryPiのDBへ値を書き込む

以下のサイトを参照

https://blog.websandbag.com/entry/2018/06/03/223431

 

mariaDBのconfigファイルのありか

/etc/mysql/mariadb.conf.d/50-server.cnf

 

 

Q. iptablesって何だ?

A.Unix系のパケットフィルタ(ファイヤーウォールみたいなやつ)

https://qiita.com/dtanimoto00/items/1d0a9b02867add646ea5

 

RaspberryPiでiptablesを使うには

 https://www.downtown.jp/~soukaku/archives/2019/0728_185332.html

 

1. MariaDBのポート確認

これは"3306"から変えてないから問題なし

 

2. ファイアーウォールにMariaDBポート用の設定を追加する

ここでいきなりつまづく。iptablesコマンドが使えない!

以下のサイトでiptablesを使えるようにした。

 

また、サイトの通りの記述だと走らなかったのと、全IP許可はセキュリティが心配なので以下のようにした。

×: iptables -I INPUT 2 -m state --state NEW -p tcp --dport 3306 -j ACCEPT

〇:iptables -A INPUT -s [IPアドレス] -m state --state NEW -p tcp --dport 3306 -j ACCEPT

 

さらに上記の変更を保存するのに

service iptables save

を打ったが、そんなコマンドはないといわれる。

 

以下のサイトで、iptables-persistentを使った保存方法を実施。

https://qiita.com/yas-nyan/items/e5500cf67236d11cce72

 

やっと保存できた。

 

3.外部からの接続確認

telnetを使った確認だったので、RaspberryPiでなくwindows10上のUbuntoで確認。(RaspberryPiにはtelnetデフォルトで入ってないから)

とりあえず、ポート開放は確認できた。

 

4.MariaDBの環境ファイル編集

 

bind-address = 0.0.0.0

を追加。

 

5.MariaDBに外部接続用のユーザー追加

ほかのユーザーが全部"localhost"なので、ホストが"%"(どこからでもアクセスできるような)のユーザーを作る。

GRANT ALL PRIVILEGES ON *.* TO "ユーザー名"@"%" IDENTIFIED BY 

"パスワード" WITH GRANT OPTION;

 

6.外部からMariaDBに接続

別のPCから以下を実行

$mysql -u [ユーザー名] -p -h [IPアドレス]

 

やっと繋げた。。。

 

以下、補足。

 

MariaDBRaspberry Piにインストール

http://fanblogs.jp/mi9999/archive/51/0

 

 

バインドアドレスが書かれたファイルを検索

$sudo grep bind-address /etc/ -r -n --color

 

 

Raspberry Pi初期設定(覚書)

Raspberry Pi 初期設定

 

1.piユーザーの変更

piユーザーだとセキュリティリスクが高いので、ユーザー名とパスワードを変更。

piユーザー自体を削除する人もいるそうだが、権限の委譲等の面倒さがあるため

変更のほうが色々楽チン!

以下のサイトを参照。

rs-techdev.com

 

一部補足。。。

 

・tmpユーザーでログインしてもpiユーザー使用のプロセスがある。

tmpユーザーでログインしてpiユーザー名変更の部分で

tmpのみでしか使用者がいないことを確認するところがあるが、

時々piユーザーが生きていることがある。

一度raspi-configでCLIモード(GUIでないモード)にしてreboot、

tmpユーザーでログインすれば問題なくpiユーザー使用は

なくなるはず。

 

・tmpユーザー作成

$sudo useradd -M tmp

ちなみに、オプション-Mは"ホームディレクトリを作らない"だそうだ。

 

$sudo gpasswd -a tmp sudo

gpasswdはユーザーが所属するグループを管理するコマンドで、

オプション-aは”グループに追加する”。

上のコマンドは"tmpユーザーをsudoグループに追加する"ということ。

 

$sudo usermod -l [新ユーザー名] [旧ユーザー名]

usermodはユーザー設定を変更するコマンドで、オプション-lで

"ユーザー名を変更する"。

 

$ sudo usermod -d /home/[新作業ディレクトリ名] -m [新ユーザー名]

これで"元のホームディレクトリの内容を指定のフォルダに移動する"ことができる。


$ sudo groupmod -n [新ユーザー名] [旧ユーザー名]

groupmodはグループ設定を変更するコマンドで、オプション-nで

"グループ名を変更する"。

 

2.一時的にwifiに繋いで、文字化け修正とvimインストール

CLIで文字化けがあると何もできないので、とりあえずGUIデスクトップで

wifi接続して文字化け修正とvimインストールを実施。

 

文字化け修正は以下のサイトを参照

https://www.out48.com/archives/895/

以下のフォント等が必要らしい。

sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
sudo apt-get install uim uim-anthy
sudo apt-get install jfbterm

 

もしこれでも治らなければ、jfbtermを実行して、そのターミナルで

作業すれば一応問題はない。

 

【追記】

何台か上記文字化け対策を試したが、直るものと直らないものがある。

要調査。

 

vimインストールは

$sudo apt-get install vim

で一発。

 

3.ホスト名を変更

社内システムに合わせるために必要。

以下のサイトを参照

https://qiita.com/naoyukisugi/items/66fd21512da75b437465

 

4.SSHサーバーの有効化、wifi有効化

以下のサイト 4.2と4.3を参考に設定

https://qiita.com/aryoa/items/86ddae2212c789ddece0

 

 

また念のため、パスワードをwpa_passphraseコマンドで暗号化。

結果をリダイレクトでhoge.txtに出力。

$wpa_passphrase "SSID" "パスワード" >> hoge.txt

 

こいつをwpa_supplicant.confに追加。

あ、ちゃんと#pskの中身は消してね。

 

5.IPアドレスの固定化

方法が2つあって、

 

A. /etc/dhcpcd.confファイルに記述

 これは以下を参照。

http://yurugadge-channel.com/article/185920110.html

 

B. /etc/network/interfacesファイルに記述

 こっち使わなかった

また、調べます。

 

6. pythonのデフォルトバージョン変更

そのまんまの状態だとデフォルトでpython2系が選択されているので

python3系に変更する。

以下のサイトを参考に設定

https://qiita.com/nagase/items/029e8fab5d783bbf2743

 

何だupdate-alternativesって?

また調べたら追記します。

 

 

 

とりあえず、初期設定はこんな感じか。

次は必要なライブラリ関係のインストールをしていく予定。

【未解決】pipenvで作成した仮想環境のコピー

  • やりたかったこと

         作成済みの仮想環境"A"と同等の環境"B"を簡単に作りたい。

         フォルダ"B"内で pipenv shell を実行すれば、仮想環境"B"内で

         作業可能にしたい。

 

  • やったこと

        1. 仮想環境を設定したフォルダ"A"を cp -r A B にてコピー

        2.フォルダ"B"内のPipfileとPipfile.lockを削除

        3.フォルダ"B"内で pipenv shell を実行→これで"B"でアクセスできると考える

        →"shell for 仮想環境Aのパス already activated."

           "no action taken to avoid nested enviroments"となる

        4.フォルダ"B"内のファイル読み書き不能("B"でアクセスできてないから)

        5.試しにフォルダ"B"内で sudo pipenv install したら

            "Successfully created virtual environment!"

            "Virtualenv location: /hoge/hoge/hoge~"となったので仮想環境作成は成功

           しているっぽい。(Pipfile, Pipfile.lockもある)

        6.この後 pipenv shell を実行したが、3.と同様の結果だった。

 

  •  そもそもpipenvとは

          python公式が正式に推薦する依存関係管理・パッケージングツール。

          pip, venv, requirements.txtが連動して動くようになっている感じのものらしい。

         →まず、venv,requirements.txtが何かよく分かってない。

 

  •  とりあえずの課題

          Pipfile, Pipfile.lockにヒントがありそうだから、読んでみること。

          pip, venv, requirements.txtの概要を調査すること。

         このブログ参考になりそう↓

          https://www.instrumedley.net/entry/2018/08/16/134512