トニーさんの備忘録

アメバより引越しの為、古い記事も再掲載しています

Rasberry pi(rasbian) に tomcat9 環境を構築してみた

様々なサイトでtomcat9を構築する際に、外部よりtarファイルを落とし込み

最新のtomcatで構築する手法を紹介していますが、今回はaptのみで構築する

際の方法について書きたいと思います。

また、apache2については、通常のaptで構築されている事を前提とします。

(aptでインストールし、環境設定をポリシーに合った設定)

 

2019年8月現在

 

まず、JDKのインストールです。

sudo apt install openjdk-11-jre

 

次に、tomcat9のインストールです。

sudo apt install tomcat9 tomcat9-admin tomcat9-docs tomcat9-examples

 

念のため、再起動

sudo reboot

 

 

ここまでで、クライアントから「サーバーIP:8080」で

「It works!」

のページが表示されれば正常にインストールされています。

 

 

ここから先が「Tomcat Webアプリケーションマネージャ」(以降、管理画面)

の設定に入ります。

まず、設定変更が必要なファイルは2つあります。

 

1./etc/tomcat9/tomcat-users.xml

2./usr/share/tomcat9-admin/manager/META-INF/context.xml

 

1つ目のtomcat-users.xmlは管理画面に入るユーザーの設定になります。

(今回、エディターはviを使っていますが、慣れたエディターで編集して下さい)

sudo vi /etc/tomcat9/tomcat-users.xml

 

編集内容(以下を追加

<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>

 

<user username="manager" password="s3cret" roles="manager-gui,manager-status,manager-script,manager-jmx,admin-gui,admin-script"/>

 

 

この時、オリジナルの設定時点ではコメントとして扱われているので外して下さい。

これ、忘れやすいです!

また、上記の他に3行程、初期の状態で記述があります。これらのパスワードも

同時に変更して下さい。

(オリジナルのままで実行すると401エラーでログインできない場合があります) 

 

これで管理画面に入るユーザーの設定が完了しました。ここから先の編集は

rasberry pi 本体でローカル作業をしている場合は、必要ないと思います。

但し、外部のクライアントからアクセスしている場合、必須となります。

(恥ずかしながら、ここで嵌りました・・・)

 

なぜ、この作業が必要なのかは、セキュリティの都合上で本体以外から管理画面の

編集や操作ができるのは、外部から乗っ取られた場合に公開されているページを

編集されてしまったり、他のサイトやサーバーへの攻撃を仕掛けられる可能性が

あるからだと思います。

外部公開する場合、DMZに設置すると思いますのでローカルIPを特定されない

限りIP縛りで阻止できる可能性は高いと思いますが、念のため、公開する際には

下記の編集は元に戻した方が良いと思います。

 

2つ目のファイル「context.xml」を編集します。

ここで、上記のファイルは、様々な場所に存在し「/etc/tomcat9」の配下にも

存在します。etc配下のファイルを編集しても管理画面は開きません。

なぜなら、当ファイルは、上部フォルダのアクセス制限になるため管理画面の

場合は

 

/usr/share/tomcat9-admin/manager/

 

の制限を行うので、ターゲットは

 

/usr/share/tomcat9-admin/manager/META-INF/context.xml

 

になります。

 

編集内容(赤文字を追加)

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.1\.d+" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>

 

注意)

赤文字で示している箇所は、ご自身のローカルIPの正規表現になります。

また、「|」パイプは前記のIPとの境になりますので、必須になります。

最後の「d+」は数値を表し、この場合は「192.168.1.1」から「192.168.1.255」

までがアクセス可能となります。

なので、管理するクライアントが1台で1つのIPの場合「d+」を数値にしても

良いと思います。

 

これで終了です。tomcat9のサービスを再起動するか、本体をrebootしクライアント

からブラウザで「サーバーIP:8080/manager/html」にアクセスするとログイン要求

が表示されますので

ログイン名:manager

パス:s3cret

でログインしてください。

 

これで管理画面が表示されたと思います。

 

 

長々と書きましたが、以上で「aptでのインストール+2つのファイルを編集」

で、tomcat9が動作できる状態になったと思います。

 

 

 

 

Rasberry Pi に Wordpressをインストールしてみた

『注意点』

今回のインストールは公に公開する事は目的にしていません!

故に、apacheの設定は省き、あくまでもプライベートネットワークでお遊び程度の動作確認を目的にしています。

また、各コマンドの詳細説明も省略しますので、一連のコマンド動作のみを記載します。

一気に行きます!

 

sudo apt install apache2 -y

 

hostname -I

(表示された文字列が、ブラウザで確認可能なアドレスになります)

 

sudo usermod -a -G www-data pi

 

sudo chown -R -f www-data:www-data /var/www/html

 

sudo apt install php7.3 php7.3-mbstring php7.3-mysql \

php7.3-curl php7.3-gd php7.3-curl php7.3-zip -y

 

sudo apt install mariadb-server

 

sudo mysql_secure_installation -y

 

sudo mysql -u root -p

>CREATE DATABASE wordpress;

>CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';

(user1とpasswordはwordpressからアクセスするアカウントになるので任意に変更して下さい)

>GRANT ALL ON wordpress.* TO 'user1'@'localhost';

(CTRL+[D]で終了)

 

cd /var/www/html

 

sudo wget https://ja.wordpress.org/latest-ja.tar.gz

 

sudo tar zxvf latest-ja.tar.gz

 

sudo rm -rf latest-ja.tar.gz

 

cd wordpress

 

sudo usermod -a -G www-data pi

 

sudo chown -R -f www-data:www-data /var/www/html

 

以上で「hostname -I」で得られたアドレス+「/wordpress/」へブラウザから

アクセスするとwordpressの設定画面にはいります。

例:http://192.168.0.1/wordpress/

 

 

格安SIMを選ぶ際の注意点

昨今、格安SIMを販売する企業が増えています。

多くが、月額1000円以下を大々的に宣伝文句にしています。

また、検索でも「格安SIM」で検索すると上記の価格が安値として表示されています。

 

しかし!この金額を鵜呑みにすると大変なことになる場合があります。

 

月額が数百円の場合の多くは、その価格の期限があり、期限が過ぎると突然

1000円前後の価格まで自動で引きあがるようになっています。

 

更に!この期限内、期限直後などに解約すると解約料が発生し、その解約料が

1万前後かかるものもあります。

 

合計で見ると結局のところ、最安値で客を引き込み、継続して使ってもらえる

人には最初の値引き期間中の費用が値引きされますが、契約内容を読まず

(見つけられず)に契約した人には、それ相応のペナルティーが発生する

仕組みになっています。

 

また、このペナルティーは見つけられない又は、他のページを読まないと

わからない仕組みになっている場合も多いです。

 

TVのCMでも同じで、読めない速度で消える又は極小文字で大量の文章を

一瞬表示させるのと同じかもしれませんね。

 

また、解約する際に電話が繋がらなかったり、解約させないよう長々と

説明を聞かされたりするケースもあります。

 

これらに、ひっかからないよう

 

・初期契約時の月額費用 適用期間の確認

・初期契約時の通信速度がどれくらい適用されるか

・解約時に発生する費用

・解約費用が、いつから発生するか

・契約時におまけオプションが無料がある場合、解約時に費用が発生するか

 

(上記の2項目は実際に通信速度が、突然通信速度が遅くなる契約に変更され同等の

速度にするには、月額費用をあげる必要があるといわれたケースがあります。)

 

をホームページから探し出し、問合せした方が良いと思います。

また、紹介サイトで比べる際にも、表示されている費用が永続的に

適用されるかは、その場で信じずに実際の企業ページで確認し

※印などで書かれている注意事項まで十分に読んだ方が良いと思います。

 

記載されている内容が理解できなければ、問合せや店舗などでご自身が納得

できるまで聞く方が良いです。

 

 

上記は、紹介サイトや企業を批判するものではなく、決める際の

注意事項として記載しています。

 

 

 

Windows7 USBインストール メディアの作り方

昨今のノートPCではCD又はDVDドライブが付いていないものも多く、購入当初の本体内部にリカバリーが内包されている場合があります。

何らかのダメージや間違った操作で、このリカバリー領域が使えなくなってしまった場合に、このUSBインストーラーが役に立つと思います。


最初に、ディストップPCであっても、ノートPCであっても、本体側面、背面又は、別途厚紙などでWindows7のライセンス認証キーがあるか確認してください。

英数文字の5桁で5グループに並んだ文字です。


恐らく、その文字列の上には、Windows7 xxxxx と書かれていると思います。

この文字列が、どこにも存在しない場合、再インストールを諦めるか、別途ライセンスを購入して下さい。


例)
Windows7 xxxxx
xxxxx-xxxxx-xxxxx-xxxxx-xxxxx


また購入時にリカバリーディスクが添付されていた場合、素直にリカバリーディスクを使った方が良いでしょう。

大抵のリカバリーディスクには、そのPC固有のドライバなどがインストールされた状態又は、ドライバがインストール出来る状態で復活できるようになっています。

但し、リカバリーディスクを使用する際には、それまでに保存した文章ファイルや画像ファイルなど全て消えてしまう事があるので、バックアップは必須です。


次に必要なものは、Microsoft純正のOEMインストールメディアです。
上記のリカバリーディスクとの違いは、ドライバなどのソフトは一切入っていません。
完全に復旧させるには、予め目的のPCのメーカーから、そのPCの型番を元にドライバ一式をダウンロードしzip圧縮されていれば、展開した状態でUSBメモリーなどに保存しておく必要があります。

特に注意しなければならないのは、ChipsetドライバとLANドライバです。
この2つが無い状態で、1台しかないPCに再インストールを行うとインターネットに繋がらないので後から何かが必要になった場合、どうにもならなくなります。

もしも、この状態になってしまって、タブレットなどをお持ちであれば、タブレット経由でドライバをSDカードにダウンロードし、タブレット上で展開。
SDカードをPCに入れ替え、そこからインストールする方法もあります。

但し、PC上でSDカードリーダーを認識する必要がありますが・・・


ここまででMicrosoft純正のOEMインストールメディアが無い場合、紛失してしまった場合、読み込めない傷がある場合でライセンスキーがある場合、前記事を参考にして下さい。


インストールに使用するUSBメモリーの要件は下記の通りです。
USBメモリーのサイズ(容量)は、8Gです。それ以上でも良いのですが、8Gでも実質5G弱しか使いませんので、最低限単位の8Gが良いでしょう。

 

ここまで揃えたら本題のUSBインストールメディアを作りましょう。


まず、ターゲットのOEMインストールメディアのISOファイルを作ります。

(既にISOファイルをお持ちの場合、ISO化に成功したら まで飛ばして下さい)
簡単に言うとISOファイルと言うのは、DVDなどのディスクに書き込まれている多数のファイルを、仮想的に1つのDVDファイルにしてしまうことです。
圧縮などとは違い、DVD記録されている順に1つのファイルにしてしまいます。

これをISOファイル又は、ISO化と言います。

これを行うには、ImgBurnやFree DVD ISO Makerなどのソフトで作成可能です。

 

 

ISO化に成功したら、次は

 

www.balena.io

 

 

をダウンロードしてください。

使用方法は簡単で、先程作成したISOファイルを指定し、USBメモリーの場所を指定。
後は実行です。

これだけでUSBインストールメディアが完成です。


あとは、お使いのPCに、完成したUSBメモリーを刺して電源を入れるだけです。

 

USBメモリーから起動するには、各メーカー毎に

 

ESCキーを押しながら とか

F12キーを押しながらとか

Cキーを押しながらとか

 

それぞれなので、説明書を読むかメーカーへ問い合わせして下さい。

 

 

 

 

Windows7 リカバリーディスクを無くしてしまった

知らないうちに、Microsoftマイクロソフト)がインストールメディアのISOファイルを提供していました。

 

https://www.microsoft.com/ja-jp/software-download/windows7" target="_blank

上記のURLから、PC本体側面、背面、裏などに貼ってあるプロダクトキー(認証キー)を入力する事により、そのプロダクトに合ったISOファイルをダウンロードすることが出来ます。


ダウンロードしたISOファイルは、DVDライティングソフトでDVD-Rに書き込んだり、次の記事の「USBインストールメディアの作り方」を使用してインストールする事が可能です。

但し、前記時にも書きましたが、リカバリーメディアとは違いますので、必ず、これらを使いインストールする前にメーカーなどのページからPC本体の型番にあったドライバ類をダウンロードし、別途USBメモリーなどに保存しておいて下さい。

また、ドライバをインストールする際には、一番最初にINFと書かれていたりChipsetと書かれているドライバからインストールしてください。

これは、Windowsのベースになるドライバなので、他のドライバより先に入れておかないと動作が不安定になったりエラーを起こしたりします。


またインストール中や、インストール後に入力したプロダクトキーの認証が行われます。
基本的に、プロダクトキーは1プロダクトキーで1台の現在構成中のPCに適用できます。
(企業などで使う、ボリュームライセンスの場合、購入したライセンス分同じプロダクトキーが使えます)


同じプロダクトキーで複数台の認証を行った場合、違法となりますし、マイクロソフト側でどのようなチェックがされて、どのような影響が出るのか不明なので、このルールは守りましょう。

 

ハワイ (Hawaii) で Lycamobile

 

2019年7月 ワイキキは快適に使用できますが、他の方も書いている通り、中心より離れた場所では若干繋がりつらい場所もありました。

 

今回、使用した環境は下記の通りです。

 

 

Asus ZenFone 4 MAX

Lycamobile LTE通信 4G

 

 

 

上記のスマホは、ASUSでも安い部類ですが、機能や性能が充実しておりSIMは二枚同時に使用できる上に海外で使用されることを前提にしているかのように、使用できるバンド(周波数帯)が多いという点が特徴です。
 
注)上記の周波数帯がスマホに対応していない場合、アクティベートは成功しても現地で使用する事は出来ません。
使用できる周波数帯は、スマホそれぞれで違うのでメーカーのホームページで調べる必要があります。かなり重要なので必ず対応可能か調べてください。
 
今回のような国内で購入可能な海外SIMの場合、通常の国内SIMをSIM1にセットし海外SIMをSIM2にセット後、日本国内にいるときは、SIM2を設定から使用不可にし海外に到着直後にSIM1の日本国内SIMを使用不可、SIM2の海外SIMを使用可に変更すればSIMの物理的交換をしなくても切り替えが可能です。
 
空港などの公の場でSIM交換はつらいと思います・・・
また、到着後にバスやタクシーの連絡を取りたい場合など便利だと思います。
 
因みに、SIM1とSIM2の同時使用も可能です。
(但し、同時使用で通信速度による自動切換えは不可能かも?・・・)
 

使用までの流れ

1.amazonでLycamobileのSIMを日本国内で購入
 
2.商品(SIM)到着後、スマホの電源をOFFにしSIMを挿入
 
3.電源を入れる前にLycamobileのアクティベートページより購入したSIMの
  アクティベートを行う。
  アクティベートを行う際に、SIMの米国内電話番号が最後のページで表示されます。
  SIM2を使用不可にすると番号が設定のページで表示されなくなりますので念の
  ためにメモしておくとよいでしょう。
 
4.SIM2を使用不可にするために、スマホの電源をONにします。
  この時、SIM2が使用可能な状態なので3の作業は後の方が正解なのかも・・・
 
5.スマホが起動され暫くするとSMSが届きます。3で米国内の電話番号を忘れた方は
  このSMSでメッセージ内に番号の記載があるので安心してください。
 
6.スマホの設定内のデュアルSIMカード設定からSIM2(海外SIM側)のチェックマークを
  外し、無効にします。
 
★ここまでは日本国内で作業します。
 
7.現地到着後、6の操作画面からSIM1のチェックを外し日本国内SIMを無効にし海外
  SIMを使用可能にします。SIMの無効、使用可能の設定は少し時間がかかるので
  何もせずに設定が終わるのを待ってください。
 
8.次にSIM2のモバイルデータ通信を有効にするために同画面の下の方にモバイル
  データ通信から有効の設定をします。
 
9.本来なら海外SIM購入時に付属していた説明書によるとスマホの設定の
  無線とネットワークからモバイルネットワーク、SIM2、アクセスポイント名、上段+
  からAPNの登録をする必要があるようですが、そもそも同スマホにはLycaの
  主回線であるT-Mobile US LTEの設定が入っているからか、APNの設定をせずとも
  使用できてしまいました。
  (SMSの受信をした際にAPNの設定が入ったのだろうか?・・・)
 
  心配な方は説明書通りにAPNの設定をした方が良いでしょう。
 
 
(実際の現地スクリーンショット
 
ここまでで、現地使用可能な状態になると思います。
 
尚、Lycamobileのアクティベートなどは随時変更があるようなので上記の流れで
使用できない場合があります。
また、使用時期により、流れが変更している場合がありますのでご了承ください。
 
上記内容で使用できない場合や損害を受けた場合、筆者は一切の責任を
負いません。
 
 
 
 

 

Rasberry Pi CentOS7 初期設定(ワンポイント)

前回までに、Rasberry Pi へ CentOS7 をインストールし、SSD を外付けUSB接続で起動後は全て SSD で動作するようにしました。

インストール直後に、各種モジュールをアップデートしたいところですが


date


コマンドを実行してみて下さい。

日付が初期の状態ですよね。


まず、日付、時間を設定してからアップデート作業をしたいと思います。

先に


yum -y install chrony


でタイムサーバーをインストールします。


vi /etc/chrony.conf


でディフォルトの設定を日本のタームサーバー又は、プロバイダのタイムサーバーへ変更します。
上から数行目の部分に


server 0.rhel.pool.ntp.org iburst


0の部分が 3 までの4行が設定されていると思います。

この4行、全ての先頭に # を挿入しコメントアウトします。


#server 0.rhel.pool.ntp.org iburst


このように4行全て編集して下さい。
コメントアウトしたら、その直後に


server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst


を追加して下さい。
これは日本のタイムサーバーとなります。


更に下の方に

 

# Allow NTP client access from local network.
allow 192.168/16


このようになっている行を探します。

これを

# Allow NTP client access from local network.
#allow 192.168/16


デフォルトをコメントアウト

# Allow NTP client access from local network.
#allow 192.168/16
allow xxx.xxx.xxx/24

xxxの部分には、自身のネットワークアドレスを指定してください。
サーバーのみが、時計合わせするのであれば

allow xxx.xxx.xxx.xxx/32


でも問題ありません。最後に 32 を付ける事で、サーバー単体しかアクセスを許可しない設定になります。


編集が終わったら


systemctl start chronyd
systemctl enable chronyd


を実行し、タイムサーバーを起動します。


その後


chronyc sources


で調整確認をします。


再び


date


で確認をすると、UTCの時間になっていると思います。
これをローカライズするには

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime


を実行します。

再び


date


で確認すると日本時間になっていると思います。

 

 

次に、CentOS自体をアップデートします。
まず、リポジトリをアップデートするために


yum update


を実行します。
次に、本来なら upgrade をしたいところですが 2016年4月現在、インストールした CentOSカーネルと開発関連モジュールで誤差が発生しています。
そこで、最新のカーネルをダウンロードし、先にインストールしたいと思います。
直接、パッケージが保存されているサーバーからダウンロードするので、先に


yum -y install wget


を入手します。


次に、カーネル関連をダウンロードする為


wget http://mirror.centos.org/altarch/7/kernel/armhfp/kernel-rpi2/Packages/raspberrypi2-firmware-4.1.19-v7.1.20160311git3f98f2c.el7.armv7hl.rpm

wget http://mirror.centos.org/altarch/7/kernel/armhfp/kernel-rpi2/Packages/raspberrypi2-kernel-4.1.19-v7.1.20160311git3f98f2c.el7.armv7hl.rpm

wget http://mirror.centos.org/altarch/7/kernel/armhfp/kernel-rpi2/Packages/raspberrypi2-kernel-devel-4.1.19-v7.1.20160311git3f98f2c.el7.armv7hl.rpm

wget http://mirror.centos.org/altarch/7/kernel/armhfp/kernel-rpi2/Packages/raspberrypi2-kernel-firmware-4.1.19-v7.1.20160311git3f98f2c.el7.armv7hl.rpm


の4つのファイルをダウンロードして下さい。
また、これは 2016年4月現在のファイルなので

http://mirror.centos.org/altarch/7/kernel/armhfp/kernel-rpi2/Packages/

から、最新のファイルを上記の4種類に変更して下さい。


ダウンロードが終わったら、この4種類をインストールします。
この時、yumでインストールしますが、4種類のファイル以外に関連されるモジュールも一緒にインストールされるので、4種類以外が表示されても間違えではないので安心して下さい。
インストールは一気に4種類連続で行うので

 

yum localinstall raspberrypi2-*


で行って下さい。


インストールが正常に終了したら、一旦、再起動しましょう。
再起動終了後

 

yum upgrade

 

を実行し、現在インストールされている各種モジュールを一気にアップデートします。


ここまで正常に終了すれば、現状での最新モジュールで様々な操作が出来るようになりますが、他の各種モジュールをインストールする際に、必要とされる開発関係もインストールしましょう。

インストールは開発関連グループで一気にインストールする為


yum groupinstall base "Development Tools"


でインストールできます。

また、どんなグループインストールが出来るかを知る為には


yum grouplist


で、グループ一覧を見る事が出来ます。

 


ここまでで設定は、終了です。

 


補足として、前回の記事中に24時間稼働を目標としていると記載しました。
気になるのは、CPU温度ですよね。

現状での CPU温度を知るには

 


cat /sys/class/thermal/thermal_zone0/temp

 


で表示される数字が CPU温度ですが、1000で割ると実際の温度となります。


1000で割った値の整数値が、60を超えていた場合、誤動作をする可能性が出て来ます。


前回の記事でのファンを取りつけなかった場合、室温24度で39度前後でした。
ファンをオンにした場合、同様の室温24度で33度まで下がった事を確認しています。


恐らく、60度を超える事はないと思いますが、24時間稼働で真夏になった場合、動作するソフトの容量や数にも寄りますが、重要度が高い運用をする場合、上記の温度ファイルを利用して、Rasberry Pi本来の40ピン、GPIO で LED を点滅させる事や、Beep回路で音を出すなどを行うと共に、管理者にメールを送るなどした方が良いと思います。


また、この温度を監視する為に、cronなどで行うか、バックグラウンドシェルで無限ループを走らせると思いますが、監視タイミングを狭くしてしまうとOS側が数値変更に間に合わず間違った数値を出す可能性があります。なるべく監視タイミングは数分おきにした方が良いと思います。