ubuntu server アップグレード

ubuntu server のバージョンを今更ながらにアップグレードしました。
16.04 LTS がリリースされて、やらねばなと思いつつタイミングを逃して2年が…。
業務終了後に行わないといけないのでなかなか。
そうこうしているうちに、次の 18.04 LTS の時期が目前です。
18.04 が出てしまうと2回アップとやっかいなので先日思い切って実行しました。

予備サーバーでバージョンアップに影響が出そうなところは確認していました。
一つは redmine を追加リポジトリよりインストールしていたので依存の問題でアップしないこと。
まあ、これは消して入れ直すだけなので比較的簡単にクリア。

これだけかと思ったらデータベースの問題が出ました。
mysql のバージョンが 5.5 から 5.7 へ変わったため、PHP の SQL が実行されないという問題が発覚。
バージョン変更により mysql_* で始まるコマンドが使えなくなり書き換えが必要とのことです。
置き換えの方法は二つ、mysqli_ を使う方法と PDO(… を使う方法が見つかりました。
私は new PDO(‘server-address’, ‘ID’, ‘PASS’) を使う方法を選択しました。
これは書き換えで問題なくクリア。

次悩んだのが、SQL は実行され始めたが特定の SQL が実行できないと言うこと。
いろいろ調べたら DISTINC を含む SQL がダメ。
mySQL に sql_mode の ONLY_FULL_GROUP_BY が追加されこれが影響していると。
確かに並べ替えを消せば実行できるのでこの影響でした。
SQL を直せば良いのですが時間かかりそうだったので、取り急ぎ phpmyadmin から sql_mode の ONLY_FULL_GROUP_BY を削除して対応しましたが、再起動したら設定が戻る。

設定を保存する方法調べたところ /etc/mysql/my.cnf に sql_mode=……. を追記するとか出てきたのですが ubuntu 16.04 の場合だと追記すると sql_mode なんて設定無いぞと webmin がエラーをはき出す。やはり設定は反映しない。
他にはと探したところ ubuntu のコミュニティ に見つけました。
Source: How to Disable Strict SQL Mode in MySQL 5.7  らしいです。

/etc/mysql/conf.d/disable_strict_mode.cnf に

[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

を記述し保存して restart する。これで無事設定できました。
disable ってことなので書いたのが消えそうな感じがするのですが、解除したいモードを書かずに記述すれば良いみたいです。

次の LTS は早めにアップしなきゃ。

nec express 5800 解像度

サーバー OS を ubuntu 14.04 にあげてから解像度が 800×600 固定と悲しい状態になってしまった。何とかならないかといろいろ調べていたところようやく解決しました。まあ、サーバで作業することは滅多にないんだけど表示できることに越したことはないし。

それに、別にサーバーなんだからGUIいらないじゃん。というところもあるんだけど共有フォルダに日本語を使っている都合上何かと CUI だけではめんどくさい。なので GUI をいれていたんだけど 800×600 だからこれまた表示がきれたりして都合悪い。
とこんな状況でした。 10.04 の時は表示できてたはずだしまあ、モニタがへっぽこなのでせめて 1024×768 は出したいと思っていたのです。

ちなみに使っているサーバーは NEC Express5800/GT110b celeron モデル。
これのオンボードビデオを lspci で見ると
XGI Technology Inc. (eXtreme Graphics Innovation) Z9s/Z9m (XG21 core) となっていた。
実際メーカーのページでも XGI/Z9s ってなってたから認識は間違いない。

で、いろいろ調べてみると sis のドライバを使う、XGI のホームページからドライバをとかいろいろ出てきたがなんかホムペからは入手できなかった。というか見つからなかった。まあ、古いし。
で、xserver-xorg-video-sis のドライバは入っているから xorg.conf を書き換えて試してみようかと
ubuntu フォーラム の内容をまねて書いてみたけどダメだった。
あとから思うと XG20 core と XG21 core で違いがあったのかなとも思った。

何を設定してもダメなので最終手段 vesa ドライバ使ってみたらというところに行き着き /etc/X11 のディレクトリにあった xorg.conf.failsafe をリネームコピーして vesa ドライバで起動したらログイン画面が広くなって 1024×768 で表示できたというなんとまあという結果に。

もしかしたら 10.04 も vesa 使ってたのかな。
まあ、結果オーライということで。

ubuntu 14.04 に redmine のインストール

アップグレードしたサーバーに redmine をインストールした。けど、動かないorz これは起動させるのに四苦八苦した記録(メモ)です。

これまで予備サーバーに ubuntu 14.04 をインストールして実験してました。で、 redmine を活用しているのは自分だけなので、バージョンも進んでるし予備サーバーのredmine を使用していました。
今回、メインサーバーを14.04 にアップグレードしたので redmine も移行することに。予備サーバーで使っていたのは ppa のものだけど通常リポジトリとバージョンが同じだったので通常リポジトリのをインストールすることに決定。

redmine をインストールは
apt-get install redmine
で実行。必要パッケージがドカドカっと追加され特に問題なく進みました。

ここからがいつも苦戦する作業。 apache2 に redmine の設定追加したらエラーで起動しない。apache を起動しようとすると RackBaseURI  の構文エラーとか出てくる。 RailsBaseURI にしてもダメ。いろいろ調べてみたらモジュールが入っていないだけだった。なんじゃそれ。
ちなみに RailsBaseURI は ver2 までの Rails の設定らしい。なので RackBaseURI を使うのです。
足りなかった apache モジュールをインストール
apt-get install libapache2-mod-passenger
とりあえずは構文エラーは消えてきちんと apache が起動した。けど今度は 403 Forbidden 。やっぱり苦戦するわ。

いろいろ調べているときに Passenger の状態云々って見つけたから passenger-status を実行してみた。そうすると、
Phusion Passenger doesn’t seem to be running.
だそうだ。動いてないじゃん。ついでにこんなエラーも。
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
なんじゃこりゃ。と思ったが、これはrails がインストールされてなかったので
apt-get install rails3
で解決。にしても rails まで入れ忘れていたとは。でも相変わらず動いてない。あとはなんだ?

エラーログを確認してみると PassengerRoot の設定がおかしいよ。と言うエラーが出ている。
/etc/apache2/mods-available/passenger.conf を確認すると、 PassengerRoot が /usr とだけになっている。ここは passenger のモジュールの場所で、インストール中に表示されるパスを書き込むらしいのだが、そんなものは見ていないというか表示されてたのか?よく分からない、覚えてない。仕方ないので、予備サーバーを見てみると
PassengerRoot /usr/lib/ruby/vendor_ruby/phusion/passenger/locations.ini
と書いてあった。同じファイルがあることを確認して 同じパスを書き apache を再起動したら、エラーは消えて passenger は動作を開始した。よかったよかった。
やっぱり見逃してたのかなぁ。というか apt-get でインストールしたときにメッセージが流れて気がつかなかったよ。そんなの。
まあ、そんなこんなで、 passenger は動き出したけど、まだエラーが出ている。次は Gemfile. lock とかなんとか。
これ以前にも見た気がする。確か以前はrake とか bundle とか実行したと思うが……。
ということで、やってみた。 /usr/share/redmine のディレクトリで
sudo bundle install
sudo rake redmine:plugins:migrate
を実行して無事 redmine が起動した。
お~。長かった。

あとは予備サーバーで起動していた redmine のデータベースをメインサーバーへ移管して終了。バージョンが一緒だったからかデータベースを上書き!っとするだけで移管作業は完了。簡単だった。一通り動作確認してみたらけどデータは正常。

あとは、リマインダーのメールだ。ということで cron を見たら送信の設定が残ってた。試しに実行してみたけど反応がない。redmine の設定、メール通知を確認してみると
/etc/redmine/default/configuration.yml
を設定してね~っと書いてあったのでシェルで確認。ファイルがない……。仕方ないので
/usr/share/redmine/config/configuration.yml.example
をコピーしてきてメールの送信サーバーの設定を行い
email_delivery:
delivery_method: :smtp
smtp_settings:
enable_starttls_auto: false
address: smtp.サーバーアドレス.jp
port: 587
domain: ドメイン名.jp
authentication: :login
user_name: “ユーザー名”
password: “パスワード”
予約cron ジョブに以下のスケジュールを設定。days=3 は3日前で送信となる。
cd /usr/share/redmine ; rake redmine:send_reminders days=3 RAILS_ENV=production
予約は月曜から土曜日の朝8時に送信するように設定して、とりあえず送ってみたら正常に送信できた。これで設定完了。インストール作業終わり。

ということで、
以上で一応インストール時の苦戦メモ終わりです。

第2回サーバーアップグレードの巻

この前 ubuntu 10.04 → 12.04 へアップグレードしたサーバーを今度は 12.04 → 14.04 へアップグレードを実行しました。みんなが使ってないうちにやってしまわないといけないからね~。と言うわけで、こんな時間に実行です。
一応 apt-get update / upgrade で最新状態にしておいて do-release-upgrade の実行。
後は指示されるままに放置。最終的には致命的な問題はなくアップグレードが終わったのだけれど初回エラーで失敗した。
なにが失敗したかというと、この環境は /boot/ を別パーティションにしているから /boot/ の空きが無いよ~!と怒られた。まあ、古いカーネルイメージが残ってたからだったんだけどこれを削除して再度実行。
今度は無事アップグレード開始。順調に進んで途中 samba と apache の設定を保持するか~?って聞いてくるので保持を選んで進行。
そんなこんなで1時間30分ほどでアップグレード完了。
再起動したら完了です。と言う感じのメッセージが出てくるので再起動。

とりあえずこれで lts 最新版に……ん?なんかログイン画面が大きいような気もするけど……それは重要なことでもないし。今はパスだ。
それよりも再起動後にサーバーの機能が引き継がれてるかが重要だ。ということで確認作業。
で、見た感じファイル共有は…OK。データベースも…OK。webは…NG。げげ。apache の設定が飛んじまったのかorz。そういや phpmyadmin がどうのとか出てたな。あの時か。
まあ、とりあえず表示ができる状態までにできたけど css がどうのとかログにエラーが出てる。確か前にもあったなこの現象。一応レイアウト崩れてるけど「表示」はできてるし次にしよう。今は頭が回らない。
とりあえずこれで lts 最新版になったわけで、今日はここまで~。

月曜日なんか言われそうだな…。

 

光プレミアムで sip を使ってみた

自宅の電話を出先でも使えるようにと設定しました。
まずは自宅でのネットワーク環境でスマートフォンが子機として使えるように設定を行いました。

自宅のルーターは光プレミアムの PR-400MI です。設定はブラウザ上でルーターにアクセスして電話の子機設定にスマートフォンを追加することで使用可能になります。
内線電話の項目を選択して登録したい内線番号の編集をクリックします。スクリーンショット 2014-09-03 18.59.19

内線番号の1 と 2 は電話ポートに割り当てられているので3~7までに登録します。
とりあえず内線番号3に登録することにします。

子機として使いたい端末のMACアドレスを調べてMACアドレスの枠に記入します。あとは、ユーザー名とパスワードを設定します。パスワードはあらかじめ適当な文字列が入ってます。ユーザー名は半角英数字なら問題ないらしいのですがうまくいかず結局内線番号と同じ数字を入れました。

ルーター設定: 内線番号 3
MAC アドレス xx:xx:xx:xx:xx:xx
ダイジェスト 行う
ユーザー名 0003 (デフォルト)→ 3
パスワードxxxx

スクリーンショット 2014-09-03 18.58.48

次は、スマートフォン側。
電話→通話設定→アカウントの作成でルーターで登録した内容で設定する。

Screenmemo_2014-09-03-19-40-17  Screenmemo_2014-09-03-19-40-44

あとは、PR-400MI と FJL22 の相性なのかよく分かりませんが FJL22 の設定「着信を許可」にチェックを入れないとダイアルしようとすると電話が落ちてしまう状態に。結局使うときだけ着信を許可にチェック入れることにしました。常に入れておいても良いんだけど電池使用料が増えるとか書かれると…。

Screenmemo_2014-09-03-19-40-34

とまあ、こんな感じです。
ちょっと不安定気味だったりユーザー名を内線番号と同じにすると認証が…とどこかで見ましたがなんかあるんですかね。
まずは一段落。次はVPN設定すれば外からでも家電話が使えるということらしいので、それが今回の目的ですが、また次の機会に。