投稿者「donaco」のアーカイブ

PHP7.4に更新

PHP7.3から最新のPHP7.4.4へアップデートしました。
今の所、修正が必要な文法の変更は無いようです。
また、プリローディング等の新機能が色々と追加されましたが、特に変更点はありません。
変にキャッシュされても困ることが多いので、追々テストできればと考えています。

Quoridorn Mark2 デザインを変更

Quoridorn Mark2 のデザイン変更方法は、たぶん2種類。
ソースを編集してビルドするか、/dist/css/main.xxx.css を編集するかのどちらか。あるいは両方。
CSSの編集がお手軽なのでオススメ。
ただし、CSSは超長い1行文なので、エディタによってはフリーズします。
atomやKate辺りが良い?

以下、備忘録的に記載。codeタグ内はcssの内容。

#背景色
/quoridorn/src/views/App.vue 705

html,
body {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  padding: 0;
  margin: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  font-size: 14px;
  background-color: #92a8b3; 背景色
  background-image: url(../static/img/xx.jpg);  背景画像 /static/img/ に入れとく
}

#Application Server Settings
/src/app/basic/login/AppServerSettingWindow.vue

#ログインウィンドウ
/src/app/basic/login/LoginWindow.vue

#背景画像
.root .message-scroll-area[data-v-2824eb7c] {
    overflow-y: auto;
    border: 1px solid grey;
    margin-bottom: .5rem;
    -webkit-box-flex: 1;
    -ms-flex: 1;
    flex: 1;
    background-color: var(--uni-color-white);    #背景色
    background-image: url(../static/img/xxxx.png); #画像を差し替え
    background-size: 18rem;
    background-position: top 0rem right 0rem ;
    background-repeat: no-repeat
}

#ロゴ
.root .message-scroll-area .logo[data-v-2824eb7c] {
    position: absolute;
    top: .4rem;
    right: calc(var(--scroll-bar-width) + .5rem);
    width: 8rem
}

#メッセージ hover
.root .message-scroll-area .message-documents .flat-button[data-v-2824eb7c]:hover {
    text-shadow: 1px 1px 1px hsla(0,0%,100%,.66);
    -webkit-box-shadow: inset 0 0 0 hsla(0,0%,100%,.5),0 2px 2px rgba(0,0,0,.19);
    box-shadow: inset 0 0 0 hsla(0,0%,100%,.5),0 2px 2px rgba(0,0,0,.19);
    background-color: var(--uni-color-light-skyblue)
}

#ウィンドウの枠
/src/app/core/window/WindowFrame.vue 841

.window-frame[data-v-c6fdce72] {
    position: fixed;
    visibility: hidden;
    display: block;
    padding: calc(var(--window-padding) + var(--window-title-height)) var(--window-padding) var(--window-padding) var(--window-padding);
    overflow: visible;
    min-height: 50px;
    border-radius: 8px 8px 8px 8px; #ログインウィンドウの下角を丸める;
    background-color: var(--theme-color);
    -webkit-box-shadow: 5px 5px 5px rgba(0,0,0,.6);
    box-shadow: 5px 5px 5px rgba(0,0,0,.6);
    border: 1px solid grey;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    left: 0;
    top: 0;
    -webkit-font-smoothing: subpixel-antialiased;
    width: calc(var(--windowWidthPx) + var(--windowWidthEm) + var(--windowWidthRem) + var(--windowWidthScrollBar) + var(--window-padding)*2 + 2px);
    height: calc(var(--windowHeightPx) + var(--windowHeightEm) + var(--windowHeightRem) + var(--windowHeightScrollBar) + var(--window-title-height) + var(--window-padding)*2);
    font-size: var(--windowFontSize);
    z-index: var(--windowOrder)
}

Quoridorn Mark2 を自宅サーバーに設置(Ubuntu + Nginx)


Quoridorn Server を設置


Quoridornを自宅サーバーに導入する為には、
Quoridorn-ServerとQuoridorn-Cliantの2つを設置する必要があります。
まずは、サーバー側から片付けていきましょう。
レンタルサーバーへの設置は、分かりません。参考にはなるかもしれません…たぶん。

#1 Mongdb をインストール
まずは、サーバーの動作に必要なMongodbというデータベースを入れていきます。

1-1.インストールするパッケージを認証するためのキーをインポート

sudo wget https://www.mongodb.org/static/pgp/server-4.2.asc
sudo apt-key add server-4.2.asc

1-2.APTの設定ファイルに、レポジトリ情報を追加

echo "deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

1-3.インストール

sudo apt update
sudo apt -y install mongodb-org

1-4.起動

sudo ufw allow 27017
sudo systemctl enable mongod
sudo systemctl start mongod

1-5.MongoDBに接続/切断

mongo
db.version()
show dbs
exit

1-6.インストールが上手く行かない場合
パージして入れ直します。dbやlog、pid等の設置場所、パーミッションをよく見ましょう。

sudo apt purge mongodb-org* #パージ!
sudo apt uodate
sudo apt upgrade

sudo rm /tmp/mongodb-27017.sock #ゴミ掃除
ps aux | grep mongo
kill -9 2411

sudo apt install mongodb #← この一行で何故か上手くいく
mongod --version
sudo apt install -y mongodb-org
mongod --version

sudo systemctl unmask mongodb #エラー回避
sudo systemctl enable mongod
sudo service mongod start
sudo service mongod status

参考
Install MongoDB Community Edition on Ubuntu
「Failed to set up listener: InternalError: Failed to set up sockets」
error: Unit mongodb.service is masked when starting mongodb
MongoDB service failed to start (unrecognized service )
「Failed to set up listener: InternalError: Failed to set up sockets」


#2 Nodejs, Vue CLI をインストール
次はNodejsです。npm というパッケージ管理ソフトで導入します。

2-1.インストール
まず、普通に apt でnodejs と npm をインストールしてから npm で入れ直します。

sudo apt install -y nodejs npm
mkdir /home/usr/.node_modules_global
npm install npm -g
sudo chown usr:usr -R /home/usr/.npm/_cacache

2-2.バージョン管理ツール “n” と Vue CLI
バージョン管理ツール ”n” を入れて任意の Node.js を入れます。
必ず Ver 11.x を入れてください。それ以外ではビルド出来ませんでした。(私の環境では)

npm install -g @vue/cli n
sudo mkdir /usr/local/n/versions/node
sudo n 11.10.0

2-3.古い Node.js, npm を削除。
最初に apt で入れた nodejs と npm を消します。
そして、最後にヴァージョンをチェック。

sudo apt purge -y nodejs npm
exec $SHELL -l

n list
node/10.20.1
node/11.10.0
node/11.15.0
node/12.16.2
node/13.13.0
node/14.0.0

node -v
v11.10.0

参考
Ubuntuに最新のNode.jsを難なくインストールする


#3 Quoridorn-Server をインストール
ようやく、サーバ本体です。
ここでは、 /home/usr/quoridorn-server/ に設置した場合の説明になります。

3-1.ソースコードをダウンロード
quoridorn-server というフォルダにダウンロードされます。

git clone https://github.com/HillTopTRPG/quoridorn-server.git
cd /quoridorn-server

3-2.ライブラリのインストール、ビルド
Mac用ライブラリ(fsevents@1.2.11)の警告がいくつか出ますが、無視します。

npm install
npm run build

3-3.Quoridornサーバの設定を編集
/home/usr/quoridorn-server/conf/server.yaml をエディタで編集します。
ファイル内の説明をよく読んで、変更していきましょう。
下記の設定は、使用ポート3000、部屋数100、部屋は放置しても消えない。です。

port: 3000
storeType: mongodb
secretCollectionSuffix: nakachan-mo-kirai-ni-nattya-damedayo
roomNum: 100
roomAutoRemove: -1
mongodbConnectionStrings: mongodb://127.0.0.1:27017/

3-4.Quoridornサーバの動作チェック
とりあえず、起動してみます。
Quoridorn Server is Ready と表示されれば成功です。やったね!
Ctrl+C で一旦停止します。

npm run node-server

3-5.Quoridornサーバをバックグラウンドで動作させる
このままだと、ターミナルを閉じるとサーバーが落ちてしまい使い勝手が悪いです。
そこで、プロセスマネージャ “pm2” を使用し、バックグラウンドで自動起動させます。

npm install -g pm2

設定ファイルを作成します。
JSONかyaml形式に対応していますが、yamlが簡単なのでオススメ。
/home/usr/quoridorn-server/pm2_config.yml

name:      quoridorn-server        #アプリ名前
script:    ./dist/server.js        #スクリプトファイルパス
cwd:       /home/usr/quoridorn-server/  #作業フォルダ
exec_mode: fork               #cluster modeはパフォーマンス低下?
NODE_ENV:  production            #環境
PORT:      3000              #使用ポート

自動起動出来るように登録します。
環境によって違うので、記事そのままをコピペしても動かない場合があります。

#とりあえず動かしてみる
pm2 start '/home/usr/quoridorn-server/pm2_config.yml'

#以下のコマンドを実行すると、コピペして実行してねと言われる。
pm2 startup

#私の場合、以下をコピペして実行。環境によって違います。
sudo env PATH=$PATH:/usr/local/bin /home/usr/.node_modules_global/lib/node_modules/pm2/bin/pm2 startup systemd -u usr --hp /home/usr

#登録
pm2 save

実際に動作しているか確認します。

pm2 list
pm2 show quoridorn-server
pm2 monit

参考
[Node.js] PM2を用いて本番環境でNodeJSアプリを動かす
pm2でNode.js実行環境を整備する
node.jsを10->12に更新したときに起きたエラーと対処内容


Quoridorn Mark2 を設置


#4.Quoridorn-Mark2をインストール
サーバー側の準備が出来たので、やっとクライアント側であるMark2の設置です。
なお、Nginxは導入済み、動作済みのものとして書いていきます。

4-1.環境を確認
ポートが開放されていないと動作しないので、確認しましょう。
下記は、SSL、IPv6、Websocket(udp)対応の事例です。

nginx -v
nginx version: nginx/1.17.9

npm -v
6.14.4

node -v
v11.10.0

mongod -version
db version v4.2.5

openssl version
OpenSSL 1.1.0h

sudo ufw status
To                 Action    From
--                 ------    ---
80                 ALLOW     Anywhere
443                ALLOW     Anywhere                  
3000               ALLOW     Anywhere        #3000はQuoridorn用
443/udp            ALLOW     Anywhere                 
27017              ALLOW     Anywhere        #27017はMongoDB用
80 (v6)            ALLOW     Anywhere (v6)   #↓ここからIPv6用    
443 (v6)           ALLOW     Anywhere (v6)             
3000 (v6)          ALLOW     Anywhere (v6)             
443/udp (v6)       ALLOW     Anywhere (v6)             
27017 (v6)         ALLOW     Anywhere (v6)   

4-2.ソースコードをダウンロード
/home/usr/ にダウンロード。quoridorn-mark2 が自動で作られます。
フォルダ名を変えたい場合は、末尾に任意のフォルダ名を追記しましょう。

git clone https://github.com/HillTopTRPG/quoridorn-mark2.git

4-3.必要なライブラリをインストール
エラーが出たら、package-lock.json と node_modules を削除。再 install & build しましょう。

cd home/usr/quoridorn-mark2
npm init     #npmで管理するよと宣言
npm install  #必要なライブラリを取得

4-4.設置場所を指定
.env をエディタで編集して設置パスを指定します。
空欄にすると、 home/usr/quoridorn-mark2/dist/ が設置場所になります。
ここでは空欄を入れています。
/home/usr/quoridorn-mark2/.env

VUE_APP_BASE_URL=

4-5.ビルド

npm run build

4-6.環境設定を編集
ネットワーク周りの設定をしていきます。
skywayApikeyは、事前に取得したkeyを入力します。取得方法はこちらを参照のこと。
/home/usr/quoridorn-mark2/dist/static/conf/connect.yaml

quoridornServer:   "wss://kancolle.idol.world"        #wss://your.site
socketTimeout:     50000
bcdiceServer:      "https://bcdice.onlinesession.app" #そのまま
skywayApiKey:      "nakatyaN-kawaii-Idol-Korekaramo-4649Ne"
skywayConnectType: "Mesh"

#5.Nginx の設定
NginxからNode.jsへリバースプロキシする設定を加えます。
/etc/nginx/quoridorn-mk2.conf

upstream socket_io {
    ip_hash;
    server 127.0.0.1:3000;
}
server {
    listen       80;
    listen       [::]:80;
    server_name  kancolle.idol.world;
    return 301 $host$request_uri;
}
server {
    listen       443 ssl http2 ;
    listen       [::]:443 ssl http2;
    server_name  kancolle.idol.world;

    ssl_protocols TLSv1.2 TLSv1.3;
....
    location / {
         root    /home/usr/quoridorn-mark2/dist/;
    }
    location /socket_io/ {
        proxy_pass http://socket_io;
        proxy_http_version 1.1;
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host       $host;
        }
}

Nginxを再起動。ブラウザで確認します。

sudo nginx -t
sudo service nginx restart

関連リンク
公式 :Quoridorn-mark2
設置例:コリドーン 英国メイドサーバー(test)