主様 のすべての投稿

Gnomeが固まる~~~( ゚Д゚)

私はCentOSを頻繁に使用していますが、放置するといつの間にか画面が固まった状態になったり、動いてもいつ反応が返ってくるのか遅延が酷くなる症状に陥ることがそこそこ頻繁に発生します。
当初は、無理やりリブート掛けたりしていたのですが、逃げ道を発見しました!

備忘録です。完ぺきではありません。
特に発生しやすい環境は仮想OSです。
これどうにかならないか?と悩んでいました。

<2021/09/01 追記ここから>
2つの方法を提案します。
・一度ログアウトする方法
・画面ロックを行う方法
<2021/09/01 追記ここまで>

一度ログアウトする方法

まず、Ctrl+Alt+DELLを押します。
シャットダウンを促すダイアログが出てきますが、ここでシャットダウンしていたのは、今までの私です。
泣く泣く幾度シャットダウンを行ったことか・・・(TT)

せっかくCtrl+Alt+DELLを押しましたが、キャンセルします。
この後、右上の電源マークをクリックして現在のアカウントから以下のいずれかを選択します。

  • ユーザの切り替え
  • ログオフ

一度、ログイン画面へ遷移します。
その後、再度ログインすると問題が解消されます。

これに気が付くまで長かった~

概ねこれで解決です。

2021-08-04 追記

画面ロックする方法

上記の方法だと、ログアウトした時に動作していたプログラムが止まってしまいます。
もう一つ、やってみる価値があるかと思う方法がありました。

スーパー+Lで画面ロックを行います。
見た目の感覚ですが、これで一度GNOMEの画面がリフレッシュされて画面ロックの状態になります。

この後、再度ログインしてみてはどうでしょう?

多分、復旧するような気がします。

CentOS 8でログイン画面がスクリーンロックされるのを回避する。

通常、CentOS 8のログイン画面は、5分経過するとタイムアウトして画面が黒くなります。
これを回避する方法は、CentOS 7について記載したことがあるのですが、CentOS 8では同じ方法が出来なくなっていました。
これから記載する方法は、多分CentOS 7でも実現できる方法だと思いますが、CentOS 8で行う方法について記載したいと思います。

まず、必要になるdconf-editorパッケージをインストールします。

# dnf install dconf-editor

続いて、dconf-editorを起動します。

# dconf-editor

まあ、そのままですね。ただ、この方法は、デスクトップ環境で行う必要があります。

dconf-editorの初期画面

フォルダー構成の様になっていますので、以下の画面に示すようにフォルダーを移動します。
/org/gnome/desktop/session/idle-delay

dconf-editor画面

User default valueをオフにして、Custom valueを0に設定します。

これで、ログイン画面がスクリーンアウトすることがなくなるはずです。

QNAP:複数ドメインでSSL認証とBASIC認証の設定が面倒だったので

はじめに

QNAPで複数サイトを仮想ホストで立ち上げました。
その後、Let’s encryptでSSL認証を行ったのですが、5~6サイト以上設定しようとすると認証が取れない状態になってしまいました。
また、仮想ホストで指定したフォルダの場所が日本語(2バイト文字)を含むパスになっていて、どうにも.htpasswdの指定がエラーになってしまったので、その時の対処方法をまとめてメモします。

複数サイトを仮想ホストで準備する

多少説明を割愛します。
まず、Webサーバを準備するところから始めます。
QNAPのコントロールパネルを開くと、デフォルトでシステムポートに80ポートが使われていたりします。
この状態では、Webサイトで80ポートが使えず、後々Let’s encryptの設定が出来ません。
そこで、まずは、デフォルトのシステムポートを80以外(例:8080)にします。
同様に、HTTPS(SSL)のポート番号も443から別のポートに変更しておく必要があります。
こんな感じです。

コントロールパネル:システム


その後、コントロールパネル→アプリケーション→Webサーバで、Webサーバを有効にし、各ポート番号を変更してデフォルトの80ポートと443ポートが利用できる状態にしておきます。
こんな感じです。

コントロールパネル:Webサーバ

更に、「仮想ホスト」を有効にして、仮想ホストを画面の指示に従って設定します。
仮想ホストの対象フォルダは、NAS上のどこでも指定出来るみたいなので、自由度が高いのですが、それが後の後悔に繋がりました。
日本語(2バイト文字)を含むフォルダを指定したことで、後々苦労することになりました。
ちなみに、サイトを作成する際は、HTTPS(443)サイトだけを作るのではなく、HTTP(80)サイトも同じフォルダーを指定して両方作る必要があります。

Let’s encryptでSSL認証を行う。(失敗編)

複数サイトを構築する場合でも、2~3サイト/ドメインであればこの方法でも何とかなると思います。それでも面倒ですけど・・・

SSL認証を設定します。
お名前.comを利用して、ドメインを取得しました。
DNS認証にすれば良かったのですが、諸々の事情で複数のドメイン管理サイトでドメインを取得していたこともあり、安易にDNS認証やワイルドカードによる認証で回避が難しく、一つ一つ登録することを試みました。

コントロールパネル:セキュリティ

コントロールパネル→セキュリティ→証明書とプライベートキーから設定を行います。
Let’s encryptで認証を行う場合は、この「証明書の交換」を使用すると以下の画面が表示されます。

Let’s encryptで認証を指定
認証設定

ドメインには、DNSに指定したドメインを指定します。
メールは有効期限前の案内などが送られてきます。
「代替名(任意)」は、エイリアスですね。
複数サイトの認証を行う場合には、この「代替名(任意)」を利用して設定出来る様です。
但し、「ドメイン名」で指定できるのは1ドメインだけで、2つ目を「代替名(任意)」に指定することで認証が出来ました。
最初に1つだけ設定して、次に、1つ目に指定したドメインを代替名に指定し、新しい2つ目のドメインをドメイン名に指定する・・・これを繰り返すのか!?
でも、これを繰り返すしかないのか!?繰り返せば、もっと多くのドメインを登録できるのか?と戦々恐々としながらトライしてみました。

結論として、4~5ドメイン/サイトであれば登録出来ました。
その後、全く追加出来ない状態に陥ります。

尚、一つドメインを登録する毎に、QNAP画面のリロードを要求され最初の画面に戻ってから作業を繰り返すという面倒な仕様です。

やるならDNS認証だと思います!

きっと私の環境が悪いのでしょう。
本来であればDNS認証でDNSのTXTレコードを設定して・・・ということなのですよ。
でもね。TXTレコードを書けないDNSを併用していたため、どうにも逃げ道が無かったんです。
DNS認証の方法については、別の方が書かれているので他を参考にしてください。
気持ち的には、さくらの環境を使う方法が自動化も容易そうで羨ましいなぁと思いました。

Let’s encryptをマニュアルで!

結局ここなんですよね。
自動化は諦めました。
何方か自動化出来る提案があったら教えてください。
私の場合は環境の問題で無理ですが、お名前.comで認証出来ると嬉しかったなぁ~

さて、始めます。
Let’s Encryptを利用できるよう準備します。
たくさん書いている人がいるので、環境構築はご自由にしてください。
私は、適当に空いてたCentOSの仮想マシンを使いました。
きっと、認証専用マシンになるでしょう・・・(TT)

こんな感じです。

ここで、「Press Enter to Continue」を見てエンターキーを打ちたくなりますが、まずサイトが保存されいている場所に上のBで指定されているファイルを作成する必要があります。

こんな感じでファイルを作ります。
私が使用しているQNAPでは、公開している標準のWebサイトは、下記のディレクトリになります。
/share/Web
共有ディスク側については、以下のディレクトリになります。
/home/httpd
Webサーバの仮想ホストを利用している場合は、指定したフォルダになりますが、そのルートディレクトリは以下になります。
/share
色々と厄介ですが、これで対応が出来るはずです。

作り終わったら、エンターを押して次に進みます。

認証したいドメイン数分これを繰り返すことになります。

失敗した場合には認証が行われませんが、再度同じコマンドを実行したり、ドメインを追加して実効する際には、前に認証されているドメインは省略してくれます。

とは言え、失敗を繰り返すとLet’s encrypt側から一時的に認証を拒否される場合もありそうなので、失敗しない様に心がけましょう。

最終的に、以下のコメントが表示されます。

/etc/letsencrypt/live/xxxx.site(xxxx.siteには対象のドメインが示されます。)に認証ファイルがシンボリックリンクされて作成されます。

QNAPに認証ファイルを登録する。

先程作成した認証ファイルをQNAPに登録します。

失敗時?と同じように、QNAPのコントロールパネル→システム→セキュリティ→証明書とプライベートキーで「証明書の交換」をクリックし以下の画面を開きます。

証明書の交換:インポート
証明書のインポート

証明書のインポート画面で先ほど作ったファイルを登録します。
それぞれ以下の様になります。

証明書      :  cert.pem
プライベートキー :  privkey.pem
中間証明書(任意):  chain.pem

中間証明書が必要だったかどうかまでは知りません!
ここまで来て失敗するのが面倒だったんです!!

適用をクリックして、何も表示されるずに終了し、「リロード」を促されたら成功です!
再度最初の画面に戻ってください。

証明書の取得および登録は以上で完了です!お疲れ様でした!!

とはならないんですよね。。。。
まず、この状態では、HTTPでアクセスするとそのままHTTPアクセスが維持されます。
HTTPSでアクセスすれば当然HTTPSでアクセスされます。
ドメイン認証された方には判ると思いますが、自動でHTTP→HTTPSの変換/リダイレクトはやってくれません。
自分で書く必要があります。
サイトのトップに.htaccessを記載します。
好みもあると思いますが、簡単にこんな感じです。

説明は省略しますが、HTTPSじゃないアクセスがあったら、httpsに変えてアクセスしなおすことになります。

BASIC認証

BASIC認証では、.htpasswdの場所を.htaccessにフルパスで指定する必要がありますよね。
QNAPだとそのフルパスが良く分からなかったんです。

なんかググると、頭に「/share/を付ければなんとかなるみたいなんですけどね。
確かにその通りだったんですよ。でもね。日本語(2バイト文字)を含む場合は、Windowsで編集したりしてもどうにもダメだったんですよ。

で、諦めて半角文字だけパスの所にパスワードファイルを纏めようか?なんてことも考えましたが、気が付いたんです。これですね。

sshでQNAPへログインします。
中身はLinuxです。
/shareの下に見覚えのあるフォルダが並んでいるかと思います。
そこから適当に該当するサイトのファイルが保存してある場所を探して、直接viで.htaccessを編集することで、正しくパスを指定することが出来ます。

それと、理由は解りませんが、/dev/nullを指定できませんでした。
これがエラーになるみたいなんですよね。なんでだろう?削って大丈夫かな?と少し不安もありますが、取り敢えずは動いてるから様子見です。

これで終わりです。

証明書の更新は・・・多分、証明書を作成したマシンでcertbot renewってやって出来上がった認証ファイルを定期的にアップロードして更新してやることで解決するでしょう!!(期待)

本気で終わり!
長かった~(^^♪

ディスク復旧:マウントできない(TT)

CentOS 7の環境でOSとデータでディスクを分けていたのですが、OSのディスクが吹っ飛んでしまい、データだけでも抜き出そうと別のCentOSの環境にディスクを繋いでマウントしようとしたのですが、マウントが上手く出来無い現象に見舞われました。

初めて繋いだディスクですからマウントしているわけもなく、ネットをググりましたが、なんか見当違いの回答ばかりで最終的に行き着いたのがこの方法です。

まず状態を確認します。

sda1の下にddf1〜が存在します。
このddf1〜が邪魔をしていた様です。
このddf1〜は繋いだ際に勝手に作られるらしく、削除しても自動的に作成されます。
と言うことで削除しても問題なさそう!
削除します!

削除する順番は、ぶら下がっている子どもから順番に削除します。

この後、マウントすると上手くマウントできました。

mount /dev/sda1 /mnt/hdd/

ちなみに、最後になりましたが、/mnt/hddのディレクトリは事前に作っておきます。

これは思い出せないわ!ということで、メモです。

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にある以下の内容を変更します。

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

CentOS 8:postgreSQL 12 + Python

前回のpostgreSQLインストールでドタバタしたのも束の間、psycopg2がインストール出来ない!?

postgreSQL 12のインストールは前回を参考にしてください。

pg_configが使えない?

それでもだめなので、.bashrcにパスを追加

それでも、gccが無いと怒られたので

 これでもか!ということで

最後良く分からないけど、なんかできた!

CentOS 8 にpostgreSQL 12を入れる!postGIS 3.0も入れる!やばかった~(TT)

#なんか文字フォントが変わっている気がするけど、気にしない。

さて、CentOS 8にpostgreSQL 12.xをインストールしようと思い立ちました。

インストールばっかりしているけど、きちんと使ってるんですけどね。
使った結果を出すのが面倒なんですよね。
守秘義務とかあってですねぇ(^^;

ということで、インストール手順ですが、まずはリポジトリをインストールします。

で、何を入れるの?みたいな感じになったんですよ。
本家に行けば良かったです。以下のサイトに行ってみます。

https://www.postgresql.org/download/linux/redhat/

少し下の方にある項目に必要事項を入力します。

4番目の項目にdnfのコマンドが記されているので、それをコピーして実行するだけです。
こんな素晴らしいものがあったことを知りませんでした(TT)
ありがとう!!!と感謝しながら、続けます。
まずは、リポジトリの追加を行います。

ビルトインのpostgreSQLを無効にします。

postgreSQL 12をインストールします。

続いて、サーバをインストールします。

最後に、データベースの初期化を実施し、OS起動時における自動起動の設定を行います。(後でも大丈夫)

postgreSQLのデータベース保管場所を変更します。

デフォルトのままでも良いという方は読み飛ばしてください。

データベースが肥大化すると場所の移動が面倒になりますので、予め、どこか適当な場所にパーティションを切って移動しておくと楽です。
今回は、特にパーティションの設定にまでは言及しませんでしたが、OSインストール時に決められなった場合には、後々ストレージを増設することを想定した対応を行っておくと便利です。

今回は、/data/DBの下に作ることとしました。

サービスの変更を行いましたので、デーモンの設定をリロードしておきます。

以下のコマンドを実行してデータベース環境を初期化します。

問題なければこんな感じになるはずです。

postgreSQLを起動する準備です。

それと、データベースの場所を変更していますので、以下の設定を行います。

これで、postgreSQL 12の設定は完了です。
それでは、postgreSQLを起動してみます。

設定は完了しているので、rootユーザに戻り以下のコマンドを実行します。

確認します。

Active:active(running)となっていれば、正常に動作開始していますね。

postGISのインストール

postGISをインストールします。
postgreSQLのバージョンとpostGISのバージョンには、相関関係があります。
まずは、相関関係を確認します。

下記のURLで対応状況を確認します。

https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

対応表(抜粋)

見難い人は、直接上記URLで確認してください。
postgreSQL 12に対応したpostGISは2.5以降であることが判ります。

インストール対象を確認するために、一度リストを表示させてみます。

postgis30_12.x86_64が最新の状態で使えそうです。

インストールしてみます。

エラーがズラリと表示されました。
必要なパッケージがインストールされていないと怒られています。依存関係でクリアしてくれないみたいです。

そこで、それぞれ一つ一つインストールをクリアしようと思ったのですが、全く進みません。

半ば諦めてバージョンを戻そうかと悩んだんのですが、どうもそれでも上手く行かないみたいな話がちらほら・・・
CentOS 8を諦めるかどうしようか悩んでいたのですが、クリアしました!

これでどうじゃ!

多分これで行けます!
ダメだったら、libdapとかgdal30を–enablerepo=PowerToolsを追加して実行してからインストールしてみてください。

多分、これで行けたはず!
ダメだったら泣いてくださいm(__)m

CentOS 8 conflicting requests

CentOS 8.1911 をインストール後にアップデートを実施してからだと思うのですが、dnfを実行するとconflicting requestsと表示される様になりました。

対象モジュールをインストールしてみるも、既にインストールされていると言われる始末。

解決策が判らず困っていたところです。

以下のコマンドを実行することで解決しました。

単なるバグだな。

CentOS 8 インストール後にやったこと

定番ですが

毎度のことですが、CentOS を入れたら、まずyum updateをやりますよね。
今回は、CentOS 8なのでdnf使うだけですね。

アップデートは最初にやっておきましょう。

続いて、こちらも定番です。
EPELを使えるようにしておきましょう。

シェル周りも自分好みに合わせて

コマンド補完

コマンドライン上での文字補完を有効にします。

これで終わり。
次回ログイン時から有効になります。

CentOS 7までは別途インストールの必要がありましたが、bash-completionはデフォルトでインストールされていました。

aliasも少し変更

好みに合わせて変更します。
こんな感じの設定を追加します。

日本語フォント

うーん?ipaのフォントをインストールしようと思ったんだけど、見つからない。何故だろう。

課題にしておきます。

なんか入れるものがないので、おまけ

画面キャプチャとかした時に、画像を少し編集したいという時に使ったりするので、gimpを入れておきます。

Pythonは

「python」コマンドは存在せず、「python2」と「python3」がインストールされていました。
他にはこんな感じでインストールされていました。

python3のバージョンは、これ

なんかやることなくなっちゃった感じですが、インストール後の手間が少し楽になった気がします。

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