2018年10月18日木曜日

Raspberry Pi3 Redmine導入(諦めました)

Raspberry Pi3 Raspbian Stretch redmineインストール覚書
(まだできてません)

[背景]
Raspberry Piをサーバー化してみたい
なんとなくredmineを使いたい

[目的]
Raspberry Pi でRedmineの設定を行う

[内容]
以下のコマンドを順番に実行する。

■ソフトウェアアップデート
  • sudo apt-get update
  • sudo apt-get upgrade 


■Apache, Imagemagick, Ruby, Gitをインストール
  • sudo apt-get install apache2 libapache2-mod-passenger
  • sudo apt-get install imagemagick libmagick++-dev
  • sudo apt-get install ruby-dev bundler
  • sudo apt-get install git subversion

■MySQLをインストール
  • sudo apt-get install mysql-server default-libmysqlclient-dev 



MySQLのパスワード設定
SSHでインストールとかしてると,rootパスワード設定しろとか言ってくれないから,コマンドを叩いて設定する。

MySQLにログイン。

  • sudo mysql -u root

rootでログインしたら,「MariaDB [(none)]> 」みたいのが表示される。
その状態で,以下のコマンドを実行してrootのパスワードを変更する。
  • update mysql.user set password=password('XXXXXXXX') where user = 'root';
  • (XXXXXXXXは,パスワード。)
つぎに,パスワードの変更を適用して,MySQLのrootからログアウト。
  • flush privileges;
  • exit;
最後に,パスワードが反映されているかどうかをチェックする。
  • sudo mysql -u root -p
  • (この後,パスワードの入力が求められるので,XXXXXXXX(自分が設定したパスワード)を入力する)
多分,rootだけでなく,piについても,同様に設定するのが良いのだと思う。


■MySQLにRedmine用のデータベースを作成

MySQLにログイン。

  • sudo mysql -u root -p

MySQLにログイン後,以下のコマンドを実行。
  • create database redmine default character set utf8;
  • (redmineという名前のデータベースを作成)
  • grant all on redmine.* to redmine@localhost identified by 'redmine';
    (ユーザ名 : redmine, Pass : redmine のユーザを作成)
  • flush privileges;
    (適用!)
redmine用のデータベースが作成されるので,ログアウト。

  • exit;


■Redmineのインストール
  • sudo mkdir -p /var/www/redmine
  • sudo chown www-data /var/www/redmine
  • sudo -u www-data svn co http://svn.redmine.org/redmine/branches/3.3-stable /var/www/redmine
  • (Enter押した記憶ないけど,突然のチェックアウト開始だった)
チェックアウト成功の確認は,以下のコマンドで,なんか色々入ってたらOKだと思う。
  • ls /var/www/redmine

■RedmineとMySQLのRedmine用データベースの紐付け
ファイルを作成。
  • sudo nano /var/www/redmine/config/database.yml
nanoで,以下を入力して,保存。


production:
  adapter: mysql2
  host: localhost
# Redmine用のMySQLデータベース名
  databese: redmine
# Redmine用のMySQLユーザ名
  username: redmine
# Redmine用のMySQLパスワード
  password: redmine
  encoding: utf8


設定ファイルを作成(コピー)。
  • sudo cp /var/www/redmine/config/configuration.yml.example /var/www/redmine/config/configuration.yml


■gemパッケージインストール
  • cd /var/www/redmine
  • sudo -u www-data bundle install --without development test --path vendor/bundle

■gemパッケージの初期設定?
  • sudo -u www-data bundle exec rake generate_secret_token
  • sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate
  • sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

■Apacheの設定
  • cd /etc/apache2/sites-enabled
  • sudo nano 000-default.conf
nanoで,以下のように変更して,保存。

DocumentRoot /var/www/html
DocumentRoot /var/www/html
DocumentRoot /var/www/redmine/public


■Raspberry Piの再起動

  • sudo reboot


■Redmineへアクセス

ブラウザから,Raspberry PiのIPアドレスを叩いて,アクセスしてみた。

We're sorry, but something went wrong.

We've been notified about this issue and we'll take a look at it shortly.

とか出てログインはおろか,ページすら表示されないぞ!

■Redmineへアクセスできない問題の調査

●MySQLへログインができなくなってる!
色々調べてみたら,Rubuy on RAILS の問題とか,MySQLとRedmineのリンクができてないとか書いてた。
RubyやMySQLの再インストールをやったりしてるうちに,
MySQLにログインできなくなってることに気付いた。

pi@raspberrypi:/ $ sudo mysql -u root -p

mysql: error while loading shared libraries: /lib/arm-linux-gnueabihf/libreadline.so.5: invalid ELF header

このエラーは,対象のファイルがリンクされてないのが原因らしい。
再インストールしたら治るとか書いてあったが,治らなかった。
そこで,とりあえず,MySQLを再起動しようとしても,失敗する。

pi@raspberrypi:/var/log/mysql $ sudo service mysqld restart
Job for mariadb.service failed because the control process exited with error code.

See "systemctl status mariadb.service" and "journalctl -xe" for details.

で,ステータスをみてみると,


pi@raspberrypi:/var/log/mysql $ systemctl status mariadb.service
・・・(略)・・・
10月 22 00:01:17 raspberrypi systemd[1]: Starting MariaDB database server...
10月 22 00:01:18 raspberrypi systemd[1]: mariadb.service: Main process exited, code=exited, status=127/n/a
10月 22 00:01:18 raspberrypi systemd[1]: Failed to start MariaDB database server.
10月 22 00:01:18 raspberrypi systemd[1]: mariadb.service: Unit entered failed state.

10月 22 00:01:18 raspberrypi systemd[1]: mariadb.service: Failed with result 'exit-code'.

そもそもスタートしてないっぽい。
そこで,とりあえず,スタートさせようとしても,できない。

pi@raspberrypi:/var/log/mysql $ sudo service mysqld start
Job for mariadb.service failed because the control process exited with error code.

See "systemctl status mariadb.service" and "journalctl -xe" for details.

そこで,エラーの詳細を表示する。

pi@raspberrypi:/var/log/mysql $ journalctl -xe
10月 22 00:01:17 raspberrypi sudo[1249]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
10月 22 00:01:17 raspberrypi systemd[1]: Starting MariaDB database server...
-- Subject: Unit mariadb.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- Unit mariadb.service has begun starting up.
10月 22 00:01:18 raspberrypi mysqld[1356]: /usr/sbin/mysqld: error while loading shared libraries: /lib/arm-linux-gnueabihf/libaio.so.1: invalid ELF head
10月 22 00:01:18 raspberrypi systemd[1]: mariadb.service: Main process exited, code=exited, status=127/n/a
10月 22 00:01:18 raspberrypi systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- Unit mariadb.service has failed.
-- 
-- The result is failed.

ここでも,リンクに失敗しているらしい。
/usr/sbin/mysqld: error while loading shared libraries: /lib/arm-linux-gnueabihf/libaio.so.1: invalid ELF head」が,リンク失敗のところ。

解決法は,リンクを教えてやればいいとのこと。
以下のコマンドを実行し,.cfgファイルを編集する。

  • sudo vi /etc/ld.so.conf
以下の文を追記する。


/lib/arm-linux-gnueabihf


ld.so.confには,「include /etc/ld.so.conf.d/*.conf」が書かれている。
includeされるファイルの中に,同じ文が書かれているので,リンクされそうなものだが,されていないっぽい。

この後に,以下のコマンドを実行して,MySqlを実行する。

  • service mysql start
すると,問題なく,MySqlを開始することができた。
できなかった。エラーが出た。
そこで,Raspberry Pi自体を再起動したところ,
自動でmysqlがスタートされたらしく,
MySQLにrootでログインできた。

  • sudo reboot
    (再起動)
  • mysql -u root -p
    (rootでログイン)




[参考URL]







2018年10月1日月曜日

Raspberry Pi 3 SSH接続

Raspberry Pi3 Raspbian Stretch でSSH接続 覚書

[前提]
  • PC : Mac OS High Sierra
  • Raspberry Pi : Raspbian Stretch

[手順]
Raspberry Pi側の設定
  1. Raspberry PiのSSH接続を有効にする。(デフォは「無効」)
    1. スタート->設定->Raspberry Piの設定
    2. インターフェイスタブを選んで,SSHを「有効」にする
  2. Raspberry Piを再起動(いらんかも)
  3. ターミナルを立ち上げて,「ifconfig」を入力して,IPアドレスをチェック
Mac側の設定
  1. ターミナルを起動
  2. 「ssh pi@xxx.xxx.xxx.xxx」を入力
  3. パスワードが聞かれるので,Raspberry Piのpiユーザのパスワードを入力

[注意]
MacからSSH接続しようとしたら,ずっと

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
・・・
が表示されて接続拒否されてた。

これは,Mac側の問題らしい。
SSHのキーが古いよってことらしい。

  • ssh-keygen -R xxx.xxx.xxx.xxx
とコマンドをうって,再度ssh接続を試みたらつながった。
(xxx.xxx.xxx.xxxは,Raspberry Piに割り当てられてるIPアドレス)

参考URL : https://www.niandc.co.jp/sol/tech/date20150729_507.php


Raspberry Pi 3 デバイスドライバ作成 Part1

[前提]
  • HW : Raspberry pi 3
  • OS : Raspbian Stretch with Desktop

[やったこと]
gccでコンパイルとかできないといけない。
Linuxのデバイスドライバ開発では,Linuxのソースコードとヘッダが必要らしい。

メインで参考にしたURLは以下。

まずは,以下のコマンドを実行したい。
  1. sudo apt-get install build-essential
  2. sudo apt-get install git
  3. cd /usr/src
  4. sudo apt-get install linux-image-rpi-rpfv
  5. sudo apt-get install linux-headers-rpi-rpfv
しかし,4で失敗する。
エラー内容は,以下の通り。
  • ・・・へのハードリンクの作成に失敗しました : 許可されていない操作です
  • dpkg: パッケージ initramfs-tools の処理中にエラーが発生しました (--configure)
  • サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
  • etc.
調べたところ,BOOT領域が足りないのが原因っぽい。
以下のコマンドを実行した。
  1. sudo apt-get remove linux-image-4.9.0-6-rpi
    (4.9.0-6は,OSのバージョン。適宜変更のこと)
  2. sudo apt-get autoremove
  3. sudo apt-get dist-upgrade
その後,失敗していたコマンドを実行する。
  1. sudo apt-get install linux-image-rpi-rpfv
  2. sudo apt-get install linux-headers-rpi-rpfv
エラーを吐くことなく,正常に終了。

このエラーで参考にしたURLは以下。


つぎに,インストールした,linuxイメージをboot時に読み出すために,
/boot/config.txt に追加編集する。
  1. sudo vi /boot/config.txt
追加するのは,以下の文。
# Add chuchulabo : Parameters to boot on raspbian kernel(linux-image-rpi-rpfv package)
kernel=vmlinuz-4.9.0-6-rpi
initramfs initrd.img-4.9.0-6-rpi followkernel

そして,再起動。
  1. sudo reboot

そして・・・
SSHでRaspberry piに繋がらなくなりました!
うおーい!!!
間違いなく,config.txtをいじったのが悪いんやけど・・・


/********** 続く **********/