「VPS」に関する日記(2)

<前

TGWSWebAdmin

TGWSAdminは平均して2分に1回動いているので、今のWebサーバー上で動かすようにするのはやっぱり非現実的かなーと思います。
ということで、結局VPSでTGWSWebAdminを心置きなく常時運転するのがいいのかなーというところに舞い戻ってきました。
とりあえず、テスト用タスクだけですが、生成できるようになりました。

TGWSWebAdmin

TGWSAdmin、今はWindows10の個人PCを使って運用しています。
しかし、アップデートで勝手に再起動したり、そうでなくてもうっかり何かやらかして落ちたりということがたびたびあったわけです。で、遠隔地の安定したデータセンターに安価でサーバー機を仮想的に作れるVPSというものに興味を持っているという話を先月しました。
あのときは、Linuxに不慣れなまま時間が過ぎていって、いったんVPSを解約することになりましたが、そろそろまた具体的な行動を始めようかなと。

いきなりVPSを再契約するわけではありません。
プログラム自体は動く段階まで手元で持っていって、充分動くことが確認できたら、そのとき初めてVPSを契約し、プログラムを稼働させるのです。

VPSはLinuxで運用するつもりなので、まず、WindowsでもLinuxでも動くものを作らなければいけません。
当初、TGWSAdminが.NETでできていたので、Linuxでも動く.NET、.NET Coreを検討していました。実際、.NET Coreを両方の環境で動かす段階まではこぎつけました。
しかし、さらに検討を進めていくと、それは必ずしも得策ではありませんでした。
いくつか理由はあったのですが、大きかったのは2つ。
1つ目、同じ言語を使えるだけで、結局大改修が必要になってしまうということ。元のプログラムがWindowsフォームアプリケーションなので、ライブラリも動き方も、環境自体が大きく変化してしまうんですね。そうなれば、当然、プログラムも大きな変化が必要になるのです。
2つ目、ホットスワップ的なことをしたいこと。つまり、プログラムが動き続けている間に、プログラムの一部を差し替えてしまえるようにするのです。.NETアプリケーションは、基本的に、いったんシステムを全部止めてから、完成したものに全部差し替えるという作業が必要になります。タスクAが動いている間にタスクBを最新版に更新なんてことは、無理ではないにしても大変なのです。

そこで、目を付けたのが、PHPです。
元々サーバー上で動かすことを前提としていて、WindowsでもLinuxでも同じように動かすことができて、私自身、.NETに負けないぐらい使い慣れています。主にWebサーバーで動かすものなので、ユーザーインターフェースもWebアプリとして作れば済みます。
プログラムは大改修どころかフルスクラッチになってしまいますが、これを機に元のプログラムで良くないと思っていた設計も見直すつもりです。動作中のプログラムの一部差し換えは、PHPファイルをただ上書きするだけで済みますね。

と、いうことで、VPS版のTGWSAdminは、PHPで実装されたWebアプリとして提供され、各タスクはPHPファイルを適時呼び出すことで実現される、という形で実現しようと思います。

VMWare

VMWareには今までUbuntu入れてたけど、今度はCentOSで。
さくらのVPSでもUbuntuは使えるのでこだわる必要はなかったのですが、せっかくCentOS触り始めたので。
まだ具体的なことは何も始められていないけど、とりあえずOSインストールとSSH接続まではやっています。

さくらのVPS

無料期間が終わりそうなのでいったん解約しました。
しばらくは手元のVMWareでLinuxサーバーについて学んで、次はいっそクラウドで…と思ったけど最低料金の時点で結構お高いから次もVPSで済ますかな。
それに伴い、昨日出したURLもさっそく無効になりました。

VPS+CentOS7+Nginx+ASP.NET

昨日まで構築していたVPS環境は、設定がいろいろしっちゃかめっちゃかになってしまったので、いったん初期化しました。

んで、DockerとMastodonは後回しにするという前提で、FTPサーバーを確実にインストールすることから始めることにしました。
とにかく、ややこしい設定にするとたちまち詰まるのは目に見えているので、シンプルな設定で済むように、コマンドを打つときに使っているSSHを暗号通信にそのまま使えるSFTPでやることにしました。

VPSでやりたいことは、Linux(ここではCentOS7)で、C#により記述されたプログラムを動かすサーバーを動かしたいので、Nginxと.NET Coreをインストール。
WebサーバーはApacheでもよかったのですが、どうせWebサーバー本体はHTTP/HTTPSでのアクセスへの玄関口としてしか使わないし、Nginxのほうが新しくて軽くてシェアも伸ばしているらしいし、最悪、背後でApacheサーバーを動かすこともできると分かったので、新しいサーバー技術の勉強も兼ねて、WebサーバーはNginxにしました。設定自体は案外簡単で、HTTPで公開するだけなら、ちょろっと設定ファイルをいじって、Nginxを自動実行するように設定するだけです。

.NET Coreのインストールも簡単で、マイクロソフトの公式サイトに書いてある手順を踏むだけ。昨日はASP.NETを動かすという場面で詰まってしまいましたが、ファイルのアップロードができなかったために詰まっていたので、その点も解決済みです。こちらも、ASP.NETのサーバーを自動実行するように設定しました。

そして、実際にできたのが、以下のサイト。テスト用なので、いずれ消すとは思いますが、ひとまずはうまく動いているようです。
http://linuxtest.tgws.plus/

あとは、VPSでいろいろ定期実行したいこともあるので、crontabについても調べていきたいところですね。

以下、参考にしたサイト。

Visual Studio CodeとVPS

Visual Studio Code

PHPの整形は、いろいろある中で、php cs fixer(小文字のほう)がうまく使えました。
PSR-2に従って整形してくれるらしいのですが、命名規則までは直してはくれないようです。
コーディング規則の最終確認にはSideCIを使っているのですが、ここでチェックすると、警告はある程度までは減っても、ある程度は残ってしまうんですね。
SideCIは本当に最終確認で、気軽にここで調整というわけにはいかないので、できるだけ手元でさっと確かめたいのですが、そのあたりの環境はまだ構築できていません。

VPS

マストドンをちょっとやってみたくてVPS始めたんですが、うまくいかなかったので、もう一個やりたかったこと、.NETのWebアプリケーションをLinux上のサーバーで動かすというのに挑戦しています。
今あるサイトをここのサーバーに置き換えるのではなく、新しいことを始めたい、というところです。
もちろん、軌道に乗ればサーバー移転も考えますが。
先日学習していたdotnetコマンドの件は、これの準備段階ということで、とりあえずハローワールドですが成果が出ました。

dotnet

例えば、C#で作っているfunyakのステージデータが正当なものであるかどうかを検証するには、同じC#で作ったプログラムを使うほうが簡単だったり仕様の不一致が防げたりして都合がいいわけです。

まだFTPを入れていなくて、手元で作ったWebアプリケーションを向こうで試せないので、ちょっとFTPも入れておこうと思います。

.NET Core

Dockerであれこれやるのはいったん置いといて、使い慣れたC#をLinux完了で動かすため、.NET Coreについて勉強中。
さくらのVPS無料お試し期間中にできる限りのことはやっておきたいのです。
とりあえず、手元のWindows環境での.NET Coreの実行には成功。
Linux環境ではまだ試していませんが、dotnetコマンドで実行ができるようです。

VPS

昨日から頑張っていたのですが、なかなかうまくいかないものですね。
ログインからしてトラブル続きです。
なんとかDockerとか入れてみたりあれこれできる環境は作っていますが、これは一度仕切りなおしたほうがいいかなという気もしてきました。

カービィハンターズZとUri.EscapeDataString

ゲーム記の新方式への移行が完了。
そしてカービィハンターズZのページを公開。
ゲーム記のほうは管理画面がまだまだできていませんが、管理画面で頑張らなくてもあんまり問題ない設計にはなっているので、そのへんは急がずぼちぼちやっていこうかと思います。

ゲーム記の件が落ち着いたので、以前TGWSAdminで問題になっていたデータ送信の問題の対処についての話を書き始めました。
実はサンプルコードはとっくの昔に作ってGitHubにアップしてるんですけどね。
mifumi323/EscapeLongDataStringSample
ただ、これに関しては、ちょっと言いたいことがあるので、プログラムだけでなく、解説とかも入れていこうかと思います。

VPSについて。
一応OSをインストールして、セキュリティの設定をするところまではしたけど…うーん、ここから先、サーバー構築とかしなきゃいけないのよね…。
そこらのやっすい共有レンタルサーバー並みの環境を構築するだけでも、不慣れな私には結構な作業ですし、じゃあそこまでしてその先に求めるものは何なの?って話で。
共有じゃLet's Encrypt使えねーなめんどくせーなVPSならできんじゃねぐらいの気持ちで始めてみたのですが、ちょっと、手間の天秤計算すると割に合わなさそう…。
当初は、今のこのサイトを移転するのを視野に入れて考えていたのですが、今は、TGWSAdminの自宅PC以上の安定稼働のためにVPSを使うのがいいんじゃないかという気がしてきています。

VPS

ちょっとVPSを検討中。
いくつかVPSやクラウドサービスを比較してみたけど、結局さくらのVPSがコストパフォーマンス的にも信頼性的にも現実的かなーといったところ。
いろいろ考慮することがあるのでVPS使うからと言ってすぐ今のサイトを移転するわけじゃないけど、何らかの形で使っていけたらなーと。

Repeat Task

もうちょっと使いやすく改良。
evalを使って手っ取り早く実装した都合で、evalの制約を色々受けてたんですね。
でもやりたいことって基本シンプルだから、より簡便な記述で済むように、お決まりの部分は自動補完するようにしました。

ます…なんとかに少し興味。
せっかくオープンソースの分散型で誰でもサーバーを立てられるんだから、自宅サーバーで、それが無理でもVPSとかで自分だけのサーバーを立ててみたいですね。

<前