「未分類」カテゴリーアーカイブ

QGIS 近くの地物属性を取得する。

この記事は備忘録のためのメモです。
説明が煩雑になっていますが、お許しください。

家(ポイント)から最も近いコンビニを探したい。
ルート検索と絡めると更に複雑になるので、取り敢えずは直線距離で探してみようと思います。

今回はクラスメートの家(複数ポイント)からそれぞれ最も直線距離で近くにあるコンビニの名前と住所を持ってこようと思います。

QGISのツールボックス→ベクタ一般→属性の最近防結合を開きます。

入力レイヤに家レイヤを指定します。
第2の入力レイヤにコンビニレイヤを指定します。
第2の入力レイヤからコピーする属性を指定します。
出力レイヤを指定します。
実行すると、最も近いコンビニの情報が家レイヤの属性データとして追加されます。

QGIS 次の地物の属性データを取り出す。(フィールド計算機)

すぐに忘れるので備忘録です。
QGISでフィールド計算機を使った計算を行う際に、カレント地物(feature)の属性情報(attribute)は直接使えますが、次の地物の属性情報を使おうとしたい時があります。
a[$id+1]とかしたいのですが、受け付けてくれませんw

計算式を示します。

attribute(get_feature_by_id(@layer,$id+1),’name’)

※nameには、属性名が入ります。

以下にそれぞれの関数のコーリングシーケンスを記載します。

【attirute】
 ・現在の地物の属性値を取り出す場合
  attribute(attribute_name)
  return : 属性値

 ・指定された地物の属性情報を取り出す場合
  attribute(feature,attribute_name)
  return:属性値

【get_feature_by_id】
 get_feature_by_id(layer,feature_id)
 return:layerでとIDで指定された地物(feature)

この辺りは、QGISの日本語翻訳とシステム上で使われる言葉(英語)が入り混じって解り難くなってしまっているところかも知れませんね。

サンプルでは、get_feature_by_idで@layerを指定しています。カレントレイヤが指定されます。
次に、$id+1でカレントID+1つまり次のIDを指定しています。
これで、次に地物のfeatureが返されます。

attribute関数で指定するfeatureの特定が成されます。
さらに、欲しい属性名をしていします。
「”(ダブルコーテーション)」ではなく、「’(シングルコーテーション)」で括ることで、文字列で属性名を指定しています。
「”」だと、属性そのものを指定してしまうというところに注意が必要です。

意外と、この辺りの記載が無くて、調べるのに一苦労しました。
たまにしかやらないから、いつも忘れてしまうんですよね(^^ゞ

次からはこのメモが役に立ってくれることを期待しますw

QGIS 複数の線を複数の線で分割する

タイトルが解り難い!
複数のPloylineを複数のPolylineで分割したいと思ったのですが、QGISのプロセシングツール→ベクタオーバーレイ→線で分割でやろうと思ったら、出来ないなぁ?なんでだろう?

問題の説明をします。

赤のレイヤと青のレイヤがあり、青のレイヤにある線分を赤の線分で分割しようとしました。

意外と忘れてしまうのですが、シングルパートになっていると上手くできないことがあります。
2線分までは対応しているのですが、3線分以上だと分割してくれないみたいです。(実際には同じ方法で分割出来るのですが、少し問題があります。)

結論は、赤のレイヤをマルチパートレイヤに変換します。
これで後は同じように線を分割することが出来ます。

分割対象(青)のレイヤはマルチパートにしなくても良いと思います。

WebでFileBrowser使ってみたら嵌った。

Webサービスとしてファイル一覧とか見れるようにしたいなぁ。
この時間、ちょっと地が出るかも知れません。

さて、OSS色々探してみて、これ使えるやん♪ということで、早速インストールして使ってみたんですけど・・・なかなか良いんですよね。

使うだけなら・・・・

で、いつの間にかインストール方法忘れかけてる実態に気が付いて、インストール方法探してみたら・・・

ここ見て
https://filebrowser.org/installation

そのまんまです。

これで起動まで終わりです。

-a オプションでアドレス指定出来ます。
-p オプションでポート指定出来ます。

デフォルトの設定は以下のコマンドで確認出来ます。

デフォルトのIDとパスワードは以下になります。

Username : admin
Password:admin

ユーザの追加とかは、以下のURLで設定します。

http://127.0.0.1:8080/

ここまでは、他のサイトでも紹介されてるんじゃないかな?

嵌ったのはこれ!

起動してみると、こんなメッセージが出るんです。

でもきちんと動いてるんです。

参考にさせて頂いたのはこちらのサイトです。
https://ficus-forum.myvnc.com/t/topic/278

コマンドラインで動かすだけなら、これで全然OKなんです。
でもね、これってOS起動時に起動させたいやん。
サービスに登録するやん。
サービスが起動してくれへんのよ。。。(TT)

起動時にconfigファイルを探しに行くんだそうです。
https://filebrowser.org/cli/filebrowser

検索対象は以下
./
$HOME/
/etc/filebrowser/

configファイルが無いということなので、configファイルを作成しないといけないんですね。

今回は、$HOMEへ作ります。

実際にはserviceを起動するユーザのホームディレクトリで作成すればいいのかな?

これで、serviceを起動する時にも自動でconfigファイルを探してくれます。
-cオプションを使って指定することも出来ます。

serviceの作成とかは、こちらに記載してます。
独自コマンドのサービス登録(CentOS 7)

CentOS 8 でexfatとかntfsとか

この書込みは2021年8月時点の記述です。
もうすぐCentOS 8は廃盤になるというのに、今更こんなこと書いてどうするんだ?と思っている方もいらっしゃるかと思いますが、ここは私のメモなので。。。放置してください。
まあ、ある意味では独り言をオープンにしゃべっている変な奴ですね。

これをリアルでやっているとイタイ人になるんでしょうね(^^ゞ

一応、誰かが見てくれているみたいなので、参考になれば・・・今回は本当に備忘録なんですけどね。。。w

さて、exfatとかntfsとかCentOSへ接続しようとして、これ使えないよ!って言われるのはよくある話ですね。

使えないんじゃなくて、パッケージインストールされてないから使えないって話なんですけど、その方法を一々調べるの面倒です。

ということで、私の備忘録です。
EPELリポジトリ入れてあること前提です。
なんか足りないものあったらコメントしてください。

取り敢えず、こんなコマンドで入れます。

ということで、他のデバイスもインストールする方法は後からここに追加しようかと思ってます。(多分、思ってるだけ)

デフォルトで入れておいてくれると嬉しいんですけどね。
そんな一括インストールするパッケージないかねぇ?
アップデートすると自動で追加されるとかでも良いんですけど・・・
新しい形式を自動的に入れてくれると嬉しいと思うのは私だけ?

samba設定方法

久しぶりの投稿です。
少し解り難い設定項目があったりしていたので、自分なりのメモ程度になろうかと思いますが、sambaの設定について説明します。

環境

もう少しで使われなくなるであろうCentOS 8を対象としていますが、後継のOSでも基本的に同じだと思っています。

CentOS 8.3.2011

メモリとかストレージのサイズとかあまり気にしていません。

インストール

sambaのインストールは至って簡単です。

CentOS 6やCentOS 7の初期ではsamba-swatを使えましたが、現在は廃止されていて使うことが出来ません。
GUIでの設定方法は別の方法があるらしいのですが、あまり推奨しない方が良さそうなので、CUIで全て設定します。

この後の流れ

取り敢えず、インターネットなどに公開されておらず、クローズドな環境下で実装検証を行います。
インストールや設定の最中には、セキュリティ機能が邪魔をして何が原因か解らなくなることがありますよね。
今回は、そんな面倒なことを無視して、取り敢えずインストールして機能の確認が出来た後に、セキュリティ機能を復活させてセキュアな環境に戻してあげることとします。

今後の流れを以下に記します。
1)セキュリティ関連機能の停止
2)sambaの設定
3)動作確認
4)セキュリティ機能の復旧
この流れで作業を進めます。

1)セキュリティ関連機能の停止

sambaで実現することは、サーバ内部の一部ストレージを共有フォルダーとして使えるようにすることです。
つまりネットワーク関係のアクセスを変更しますので、firewallが影響します。
また、ファイルの書き込み時には、SELinuxも影響する可能性があります。
それでは、これらの機能を一時的に停止します。

まず、firewalldを停止させます。

これでネットワークのセキュリティが解除されます。
強引ですが、設定だけだとこれが一番楽なんですよね(^^ゞ

次に、SELinuxも一時的に停止します。

これで準備はOKです。
これらの設定は、OSを再起動すると復活します。
また、この設定をすることで、セキュリティが低下していますので、必ずセキュアなネットワーク空間で作業を行うことをお勧めします。

2)sambaの設定

sambaの設定は、以下の流れになります。

  • /etc/samba/smb.confの編集
  • デーモンの登録(サービスの登録)

ここで、今回は非常に簡単な設定を行います。
ネットワーク上の端末から誰でもID/パスワードなしでアクセス可能な共有NASの様な状態です。

それでは見て行きましょう。

最初に設定ファイルをバックアップしています。
特に必要なければ除外してください。
次にviで開きます。
smb.confの先頭あたりにある[global]セクションを最初に編集します。
下記にサンプルを記します。

今回追加した項目は、以下の項目です。

unix charset = UTF-8
 unix(Linux含む)で使用するエンコードを指定しています。
 デフォルトで設定されているので、特に設定する必要は無い様です。
 設定内容は以下のコマンドで確認することが可能です。
 実際に指定していないデフォルト設定の内容も全て表示されるので、多くの内容が記されています。
testparm -v
testparmコマンドは、編集内容のチェックを行ってくれる機能でもあります。

security = user
map to guest = Bad User

security = user と map to guest = Bad Userの組み合わせで、ログイン認証が不要になります。

log level = 2
log file = /var/log/samba/%m.log
max log size = 1024

 ログ出力の設定になります。

次に、[Share]セクションを追加します。

path
 共有フォルダーとして使用する領域を指定しています。
 対象はシンボリックリンクでも大丈夫でした。
 対象ディレクトリを/Share/Disk1としていますが、後でも先でも良いので作成します。
 パミッションは777にしておく必要があります。

writable
 書き込み許可

その他は適当に。。。

こんな感じで設定したら、デーモンを立ち上げる前に、記述内容のチェックをします。

この後、Enterを入力すると設定内容が表示されます。
この上記に記した内容が表示されていればOKですが、間違っているとその内容が表示されます。

3)動作確認

ここまででsambaの設定は完了しています。
デーモンを起動します。

OS起動時に自動起動設定する場合は以下のコマンドを入力します。

同一ネットワークに接続されているWindows PCなどからアクセスします。

Windowsの場合は、Exploreを開いて、アドレス入力欄に以下を入力します。

\\IPアドレス <==最初の\\は¥を2つです。

無事に接続出来たら、ファイルを追加したり削除して動作を確認してください。

4)セキュリティ機能の復旧

ファイアウォールを復旧します。

次に、ポートを開放します。

ファイアウォールを再読み込みして、設定を反映します。

この後、SELinuxの設定を行うのですが、一旦ここまでとします。
SELinuxの設定が面倒な場合には、Disableに設定しましょう。
設定方法は一旦割愛します。

以下で対象ディレクトリ以下に対し、SELinuxが有効でもSambaでアクセス出来る設定を行います。

と書いたのですが、ダメでした。
auditログから対処します。

※赤斜体文字がコマンドになります(#はコマンドプロンプト)

詳細は端折りますが、setseboolで上記2つの設定を行えば動くということですね(^^ゞ

これで動作確認を行って、きちんと見えました。書き込めました。

WordPress 5.6をインストールする手順

CentOS 8にWordPress 5.6をインストールします。
インストール先は、Apachのドキュメントルート(デフォルト)である下記ディレクトリ以下に設定することにします。

他のディレクトリでも良いのですが、セキュリティ絡みで面倒は避けたいので、ドキュメントルートなら安全かな?と逃げ腰選択です。
では、ダウンロードを始めます。

/var/www/html/wordpressに解凍されます。

データベース設定

ローカルアドレスで設定するには、ブラウザで http://127.0.0.1/wordpress/ へアクセスします。
実際には、外向けのIPアドレスやドメイン名を設定すると良いでしょう。
後で変更することが可能です。

データベース作成時に指定したユーザ名とパスワードを設定します。

書込みが上手くできたらこの画面は表示されません。

サイトのタイトルとユーザ名とパスワードとメールアドレスを登録します。

ローカルアドレス(127.0.0.1)での設定については、ここまでで問題ありませんでしたが、外部からアクセスすることが叶いません。
そこで、外部に公開するアドレスを指定します。
ログイン後に以下を開きます。

設定→一般を開き、以下の項目を編集します。

無事外部向けIPアドレスを設定出来れば、アクセス可能となります。
グローバルIPアドレスやドメインを設定することで、公開サイトとして動作することになるでしょう。
社内LANで構築して外部へも公開する場合には、どうしたものか?
複数のアドレス設定が出来ないようなので、ルーター側でパーマネント設定を施すなどが妥当なのかも知れませんね。

Apache 2.4 で少しセキュアなWebサーバを構築する。

1.はじめに

CentOS 7ではApache 2.4がデフォルトになっていますが、2.2の頃に比べて設定が簡素になっていて、逆に解り難くなっている感じもします。

また、多くのサイトでは基本的な設定は記載されているのですが、セキュリティを考えたり、マルチドメインに対応させたり、高速化を考えたり。。。意外と面倒なんですよね。

そこで、自分用にサイトをカスタマイズしてみました。
ということで、個人用設定です。

2.こんな感じにしよう

お品書きです。

・Apacheのインストール
・VirtualHostの設定
・SSL対応(紹介のみ)
・基本的なセキュリティ設定
・ちょっと踏み込んだセキュリティ設定
・高速化

こんな感じで進めていこうと思います。
SSL対応の前にVirtualHostの設定を行う理由は、今回使用するSSLの証明書がドメイン毎に必要となる為、事前にマルチドメインの設定を行っておきたかったためです。
順序についても少し考えてから行ってみると、作業が戻らなくて良いかと思います。

3.Apacheのインストール

CentOS 7ではデフォルトで準備されている場合もありますね。
もし入っていなかった場合には、yumでインストールしましょう。

あまりに簡単すぎますが、インストール自体はこれで終わりです。
以下のFirewall設定を行えば、公開出来てしまいます。

3.1 firewallの設定

上記のコマンドでは、httpとhttpsを開放しています。
実際には、まだhttpsの設定は行っていませんので接続は出来ません。
試しに、httpでドメインを指定してアクセスしてみましょう。
きちんとApacheのロゴが表示されるでしょう。

3.2 VirtualHostの設定

複数ドメインでWebサーバを構築したい場合があります。
そこで、複数ドメインでWebサーバが動くように設定を行います。
/etc/httpd/conf.dに新たな設定ファイルを追加します。
/etc/httpd/conf.d/virtual.confとします。

上記では、hoge.ne.jpとsub.hoge.ne.jpで指定する2つのドメインでアクセスできるようになりました。

4.SSL対応(紹介のみ)

Let’s Encryptを利用すると、無償でSSL証明書を得ることが出来ます。
下記のサイトにインストール方法が記されていますので参考にされると良いでしょう。
https://free-ssl.jp/usage/install-certbot.html#CentOS7

実行方法についても同じ様に下記のサイトに記されています。
https://free-ssl.jp/usage/#TestExec

コマンドを実行されたら内容を確認しながらインストールすると、 /etc/httpd/conf.d/virtual.conf も適当に書き換えられて、SSL対応が可能になります。
こんな感じに書き換えられます。

httpdを再起動するとSSLの設定が有効になります。

5.基本的なセキュリティ設定

これから幾つかの設定を行います。
設定を行った際に行う2つのことをここで説明しておきます。
1つ目は、正しき記載されているか?
2つ目は、httpdの再起動です。
それぞれ、よく使うコマンドになりますので以下に記します。

正しく記載されているか確認します。

httpdの再起動を行います。

5.1 Wellcomeページの削除

デフォルト状態でドメインへアクセスすると、Welcomeページが表示されます。
Welcomeページは通常不要なページです。
必要ないから削除してしまいましょう。

/etc/httpd/conf.d/welcom.confファイルを削除するかリネームすることでwelcomぺ^自我表示されなくなります。

httpdを再起動することで設定は反映されます。

5.2 Index表示をデフォルトで行わせない。

デフォルトの設定では、URLで指定されるフォルダーの一覧が表示される状態になっています。
フォルダーの一覧が表示されてしまうと、サイトに含まれるファイルの一覧や構造が解ってしまいます。
この機能をデフォルトでOFFにします。
/etc/httpd/conf/httpd.confに含まれる以下の設定を変更します。

5.3 HTTP TRACEメソッドを無効化する。

クロスサイトスクリプティングの対策として、TRACEメソッドを無効化します。
/etc/httpd/conf/httpd.confに以下の1行を追加します。

5.4 X-Frame-Options を設定する。

クリックジャッキングの対策として有効なX-Frame-Optionsを設定します。
/etc/httpd/conf/httpd.confに以下の1行を追加します。

SAMEORIGIN以外にもオプションはありますが、ブラウザによってサポートされていない場合もあります。
ブラウザのバージョンに依存することもあります。
ネット上で情報確認を行った上で対応を考えてみてください。
この設定を行うと、iframeなどで異なるドメインのサーバで勝手に使用されることが出来なくなります。

5.5 Apacheバージョンの隠ぺい

Apacheのバージョンをデフォルトでは取得できる設定になっています。
でも、バージョン情報が解ってしまうと、そのバージョンを狙った攻撃も解ってしまいます。
そこで、このバージョン情報を隠ぺいします。
普通は必要ない情報ですからいいでしょう。
/etc/httpd/conf/httpd.confに以下を追加します。

5.6 暗号化を強化する。

まず、安全性の低い暗号化を無効にします。
/etc/httpd/conf.d/ssl.confにある以下の内容を変更します。

次に、以下を有効にします。

PostgreSQL & postGISインストール。

インストール手順ばかり記録してる気がする今日この頃・・・(TT)
もう少し、利用事例を記録しろと思っているのですが、ご勘弁をm(__)m

さて、今回も環境はCentOS 7です。
手抜きインストールをやってしまい(いつもですが・・・)、デフォルトのPostgreSQLを入れてしまいました。
ところが、postGISを使おうとして古くて使えないことに気が付き、今更ながら新しいPostgreSQLを入れることになり悩んでいたのですが、ほぼ最新版を既に入っているPostgreSQLが入った状態でインストールできるということで試してみます。
と言いつつ、実際には、PostgreSQLが入っていない環境へ適用します。

当初、PostgreSQLのインストール方法を探してみると、yumでデフォルトのリポジトリからインストールする方法は目に入ります。
バージョンが9.2と随分古いバージョンであることに気が付かずインストールしてしまったのが、今回の始まり。

出来るだけ最新版に近いバージョンをインストールしようと探してみると、12.1が最新で公開されていました。比較的最近になってからリリースされているので、情報が見つからない可能性があるかと思いながらも、探していると12.1のインストール方法はありました。

それでは始めます。

PostgreSQLとPostGISのインストール準備

定番ですが、epel-releaseをインストールしておきますね。
多分、これを使おうとしている方は、既にインストールされているのでは無いでしょうか?

RPMからインストールするとか、方法は幾つかあるようですが、後でメンテナンスしやすい、yumだけでインストールする方法を見つけました。

まず、CentOS SCLo Software Collectionのリポジトリを追加します。

後はひたすらyumでインストールするだけ!

ほとんど終わったw

node.jsをインストールすることから始めます。

今回は、node.jsをインストールすることが目的ではないのですが、この後に書く予定のdeck.glをインストールするために、node.jsをインストールする必要が生じたため、手順を踏んで記録に残すことにしました。

node.jsのリポジトリを登録する。

またしても、CentOS 7上に環境を構築します。
以下のサイトを開いて、最新版を確認します。

https://github.com/nodesource/distributions/tree/master/rpm

執筆時点では、setup_12.xが最新版でした。
最新版をインストールするため、以下のコマンドを実行します。

これで、基本的なインストールは完了です。

実は、過去にnode.jsをインストールしていたマシンだったので、こんなメッセージが表示されました。

「sudo yum remove -y nodejs npm」ということで、削除します。

その後の情報も確認しつつ、node.jsのパッケージをインストールします。

これで完了です。
バージョン確認を実施し、最新版のnode.jsがインストールされていることを確認しましょう。

無事インストールが完了しておりましたので、今回はここまでとなります。
続きは別途。。。