投稿

12月, 2023の投稿を表示しています

CentOS Stream 9にPostgreSQL 16をdnf経由でインストール

PostgreSQL Serverを開発サーバーにインストールしたときの覚書。 環境: CentOS Stream 9, PostgreSQL 16.0 1. PostgreSQL Serverをインストール 公式サイトを参考に。 参考:  PostgreSQL: Linux downloads (Red Hat family) リポジトリを検索。 # dnf search postgresql # dnf info postgresql-server v13.11だった。 モジュールリストにあるか確認。 # dnf module list postgresql CentOS Stream 9 - AppStream Name                       Stream                Profiles                          Summary postgresql                 15                    client, server [d]                PostgreSQL server and client module postgresql                 16                    client, server [d]                PostgreSQL server and client module あったのでモジュールからインストールする。 # dnf module install postgresql:16 データベース初期化。サービスの名前を確認して自動起動オンにして起動。 # postgresql-setup --initdb # systemctl list-unit-files -t service # systemctl enable postgresql # systemctl start postgresql # systemctl status postgresql 設定ファイル確認。 # cd /var/lib/pgsql/data # less postgresql.conf 2. Windowsからネットワーク経由で接続 postgresユーザーの接続パスワード設定。 # su

pgAdmin4を6.19から8.1にアップグレード

pgAdmin4を最新にアップグレードしたときの覚書。 環境: CentOS Stream 8, Python 3.9.17 Pythonのvenvでインストール+サービス化したときの記事はこちら。 pgAdmin4をCentOS8にvenvでインストール pgAdmin4をサービス化して自動起動設定 一応サービスは止めておく。 # systemctl stop pgadmin4 pipをアップグレードする。 # python -m pip install --upgrade pip 仮想環境のPythonをアップグレードする。 # python -m venv /opt/software/python-venv/pgadmin4/ --upgrade pgAdmin4のvenvに入る。 # source /opt/software/python-venv/pgadmin4/bin/activate pipのパッケージでアップデート可能な一覧を表示。 (pgadmin4)# pip list -o 仮想環境のpipをアップグレード。 (pgadmin4)# pip install --upgrade pip pgAdmin4をアップデート。 (pgadmin4)# pip install -U pgadmin4 無事成功したっぽい。 パッケージ一覧確認。 (pgadmin4)# pip list  pgAdmin4のvenvから出る。 (pgadmin4) # deactivate pgAdmin4起動して確認。 # systemctl start pgadmin4 # systemctl status pgadmin4 ブラウザで確認。 思ったより簡単だった。 【関連記事】 pgAdmin4をサービス化して自動起動設定 pgAdmin4をCentOS8にvenvでインストール CentOS8にPostgreSQLをインストール。Windows10からDBeaverで接続

Nginx [warn] protocol options redefined for 0.0.0.0:443

NginxのWarningが出たので調査したときの覚書。 環境: CentOS Stream 8, nginx 1.24.0 下記エラーが表示された。 # nginx -t nginx: [warn] protocol options redefined for 0.0.0.0:443 in /etc/nginx/conf.d/01_hoge.conf:72 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful listenにhttp2の記述がないとダメらしい。 参考:  nginx: [warn] protocol options redefined - Server Fault confファイルを検索してみる。 grepオプションの意味はhelpで確認。 # grep --help # grep -rnw '/etc/nginx/conf.d/' -e '443 ssl;' /etc/nginx/conf.d/00_default.conf:18:    listen       443 ssl; /etc/nginx/conf.d/00_default.conf:67:    listen       443 ssl; いくつかあった。 「443 ssl;」を「443 ssl http2;」に修正してnginx再起動。 # nginx -t # systemctl restart nginx 【関連記事】 CentOS Stream 8 + Nginx + PHP + MariaDB + Postfixの環境を構築(2021年版) 静的WordPress向けNginxのfastcgi_cache設定

GA4のga_session_idをJavaScriptで取得

GA4のga_session_idをキーに登録データとGA4のデータを紐づけたいと調査しているときの覚書。 Googleタグマネージャー経由でGA4を設定している。 Nginxのcache設定を使っているのでサーバー(PHP)側のセッションに頼る仕組みにはしたくない。 公式サイトを見るとJavaScriptでできそう。 Google タグ API リファレンス  |  Google タグ(gtag.js)  |  Google for Developers データレイヤー  |  タグ マネージャー  |  Google for Developers 実装例 dataLayer変数とgtag関数をグローバルの環境に定義して、Googleタグマネージャーを設定する。 <script>   window.dataLayer = window.dataLayer || [];   function gtag(){dataLayer.push(arguments)}; </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':       new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],     j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=     'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);   })(window,document,'script','dataLayer','GTM-XXXXXX');</script> <!-- End Google Tag Manager --> その後、サイト

Fleet ServerとElastic Agentのインストール(2回目)

前にElastic Agentをインストールして失敗したので、Elasticsearchを再インストールしてもう一度試したときの覚書。 環境: CentOS Steam 9, Elasticsearch 8.11.3, Kibana 8.11.3 1.Fleet Serverをインストール 公式サイトを参考に。 Install standalone Elastic Agents (advanced users) | Fleet and Elastic Agent Guide [8.11] | Elastic Elastic AgentはAPI Keyを利用するようなのでElasticsearchの設定で「xpack.security.authc.api_key.enabled」を有効にしておく。 参考:  Create a standalone Elastic Agent policy | Fleet and Elastic Agent Guide [8.11] | Elastic Kibanaにログインして Mangement | Fleet "Add Fleet Server" 事前に用意していたNginxからリバースプロキシするURLを入力 "Generate Fleet Server policy" "Linux Tar"タブのコマンドを実行。 # cd /opt/software/ # curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.11.3-linux-x86_64.tar.gz # tar xzvf elastic-agent-8.11.3-linux-x86_64.tar.gz # cd elastic-agent-8.11.3-linux-x86_64 insecureオプションを付けて実行する。 # ./elastic-agent install --fleet-server-es=https://search.elastic.webrec.jp:443 --fleet-server-service-token=AAEA...QQ --fleet-server-po

Subversionの不要な履歴を削除して容量を削減

年末にやっているバックアップ作業。 Subversionの全体容量が大きくなってきたので、不要な履歴 (リビジョン)を削除してバックアップ容量を削減しようとしているときの覚書。 環境: CentOS Stream 8, Subversion 1.14.1 どのリポジトリが容量を食っているか調べる。 # cd /home/svn/repo/ # du -hx --max-depth=1 容量の大きいリポジトリに移動して、容量が大きい順に並び替えて先頭10件だけ表示。 # cd project # du -hxa --max-depth=4 ./db/revs/ | sort -hr | head -n 10 TortoiseSVNでどのリビジョンのコミットか調べる。 除外するパスを指定してdumpファイル生成。 (TortoiseSVNのPath部分をCtrl-Cでコピーできる) # cd /home/svn/repo/ # svnadmin dump project/ | svndumpfilter exclude /trunk/90.Maintenance/Backup > project_20231225.dump リポジトリを作り直してdumpファイルをインポート。 # mv project project.bak # svnadmin create project # svnadmin load project< project_20231225.dump # chown apache. -R project 使用容量確認。 # du -hx --max-depth=1 Apacheを再起動。 # systemctl restart httpd TortoiseSVNでcleanupしてupdateする。 大丈夫そうなのでdumpとバックアップを削除する。 # rm -rf project.bak/ project_20231225.dump 全リポジトリをアーカイブしてバックアップする。 # cd ../ # tar czvf repo_server02_20231225.tgz repo/ ダウンロードして外部ストレージとGoogle Cloud Storageに保存しておく。 68GBをダウンロードするのに2時間ぐらい掛かった。 Googl

Elasticsearch + Kibana 8.11を再インストール

Elasticsearchを再インストールしたときの覚書。 環境: CentOS Stream 9, Elasticsearch 8.11.3, Kibana 8.11.3 1.Elasticsearchをインストール dnf用RPMレポジトリを公式サイトを参考に追加する。 参考:  Install Elasticsearch with RPM | Elasticsearch Guide [8.11] | Elastic enabled=1にしておく。 # less /etc/yum.repos.d/elastic.repo 別コンソールでログを確認しながら作業する。 # journalctl -f dnfでインストール。 # dnf install elasticsearch superuser"elastic"のパスワードがコンソールに表示されるので、shellの環境変数として保存する。 # less ~/.bash_profile export ELASTIC_PASSWORD="your_password" 再読み込みして環境変数一覧表示 # source ~/.bash_profile # printenv 設定変更。 NginxからリバースプロキシするからSSLは無効にする。 Elastic AgentのためにAPI Keyを有効にする。 # less /etc/elasticsearch/elasticsearch.yml xpack.security.authc.api_key.enabled: true xpack.security.http.ssl:   enabled: false #  keystore.path: certs/http.p12 メモリ使用量を2GBに設定。 # less /etc/elasticsearch/jvm.options -Xms2g -Xmx2g Elasticsearch起動して確認。 # systemctl start elasticsearch # systemctl status elasticsearch Elasticsearchにアクセスして確認。 # curl -u elastic:$ELASTIC_PASSWORD http://localhost:920

ElasticsearchとKibanaをアンインストール

Elastic Agentをインストールしようとしてハマったので、一旦ElasticsearchとKibanaをアンインストールしたときの覚書。 環境: CentOS Steam 9, Elasticsearch 8.11.3, Kibana 8.11.3 Elasticsearchを利用しているparsedmarcサービスを止める。 # systemctl stop parsedmarc サービス確認 # systemctl list-unit-files -t service 1.Kibanaをアンインストール dnf経由でアンインストール。 # dnf remove kibana 公式サイトを参考に残っているファイルを削除する。 参考:  Install Kibana with RPM | Kibana Guide [8.11] | Elastic # rm -rf /usr/share/kibana/ /etc/kibana/ /var/lib/kibana/ 2.Elasticsearchをアンインストール dnf経由でアンインストール。 # dnf remove elasticsearch 公式サイトを参考に残っているファイルを削除する。 参考:  Install Elasticsearch with RPM | Elasticsearch Guide [8.11] | Elastic # rm -rf /usr/share/elasticsearch/ /etc/elasticsearch/ /var/lib/elasticsearch/ 3.Elastic Agentをアンインストール Elastic Agentをアンインストールする場合もメモ。 基本的にコマンド一発。 参考:  Uninstall Elastic Agents from edge hosts | Fleet and Elastic Agent Guide [8.11] | Elastic # /opt/Elastic/Agent/elastic-agent uninstall 公式サイトのインストール場所。 参考: Installation layout | Fleet and Elastic Agent Guide [8.11] | Elastic これで綺麗になったと思うので再

ElasticsearchのデータをバックアップするSnapshot機能

Elasticsearchをアンインストールする前にデータをエクスポートする方法を調査しているときの覚書。 環境: CentOS Steam 9, Elasticsearch 8.11.3, Kibana 8.11.3 1.ElasticsearchのSnapshot機能を理解する。 ElasticsearchのデータをバックアップするにはSnapshotの機能を使う。 またコマンドラインで実行できるelasticdumpというツールがある。 GitHub - elasticsearch-dump/elasticsearch-dump: Import and export tools for elasticsearch & opensearch 今回はSnapshotの機能を使ってみる。 大人しく公式サイトのドキュメントを読む。 Snapshot and restore | Elasticsearch Guide [8.11] | Elastic Snapshotを作成するには2ステップ必要。 リポジトリを登録(Snapshotの保存場所を登録) Snapshotを作成 dataディレクトリごとコピーしてもバックアップにはならないと書いてある。 2.リポジトリを登録する。 バックアップする場所を作ってElasticsearchが書き込めるようにする。 # mkdir /home/backups # chown elasticsearch. /home/backups/ KibanaにログインしてDev Toolsからコマンド発行。 PUT _snapshot/test1 {   "type": "fs",   "settings": {     "location": "/home/backups/test1"   } } エラー。 {   "error": {     "root_cause": [       {         "type": "repository_exception",         "reason": "[test1] l

Fleet ServerとElastic Agentのインストール

Elasticsearchをいろいろ試しているときの覚書。 Elastic Agent周りが分からなくなったので、もう一度インストールからやってみた。 環境: CentOS Steam 9, Elasticsearch 8.11.3, Kibana 8.11.3 1.Fleet Serverをインストール(RPMで失敗編) 手順メモ KibanaメニューからManagement | Fleetを表示。 "Add Fleet Server" 今度はRPMでインストールしてみた。 画面に表示されているコマンドを実行。 # curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.11.3-x86_64.rpm # rpm -vi elastic-agent-8.11.3-x86_64.rpm # elastic-agent enroll  --fleet-server-es=https://es.hoge.jp  --fleet-server-service-token=AAE...w  --fleet-server-policy=fleet-server-policy --fleet-server-es-ca-trusted-fingerprint=544...601 --fleet-server-port=8220 「Error: fleet-server failed: context canceled」と表示されたけど無事インストールできたみたい。 サービス起動。 # systemctl enable elastic-agent # systemctl start elastic-agent 設定ファイルなど確認。 参考:  Installation layout | Fleet and Elastic Agent Guide [8.11] | Elastic ブラウザでKibanaの画面を更新してみる。 FleetのAgents一覧画面に出ていない。 インストール時に出てたエラーが原因かな? 一旦アンインストールする。 # elastic-agent uninstall Removing service.... FAILED サ

Elasticsearch + Kibanaでシステムログ表示

前回はDMARCレポートを表示できるようにしたのに引き続き、今度はシステムログをElasticsearch + Kibanaでいい感じに表示しようとしているときの覚書。 環境: CentOS Steam 9, Elasticsearch 8.11.3, Kibana 8.11.3 Elasticsearchのバージョン確認。 # /usr/share/elasticsearch/bin/elasticsearch --version Version: 8.11.3, Build: rpm/64cf052f3b56b1fd4449f5454cb88aca7e739d9a/2023-12-08T11:33:53.634979452Z, JVM: 21.0.1 Kibanaのバージョンはログインして右上のタイヤっぽいアイコンをクリック。  1."System" IntegrationをKibanaからインストール 大人しく公式サイトを読みながら進める。 Get started with logs and metrics | Elastic Observability [8.11] | Elastic Kibanaの画面に表示された手順通りに行った。 手順 kibanaログイン後のトップにある"Add interrations" "system"で検索 "System"を選択して右上の"Add System" 設定変更 Windows event logはオフ 右下の"Save and continue" "Add Elastic Agent to your hosts" "Add Fleet Server" "Generate Fleet Server policy" Fleet Serverをインストール。 # cd /opt/software/ # curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.11.3-linux-x86_64.tar.gz # tar xzvf e

ElasticsearchのSSLを無効化。

Elasticsearchをいろいろ試しているときの覚書。 環境: CentOS Stream 9, nginx 1.22.1, Elasticsearch 8.11.3, Kibana 8.11.3 他のサーバーにElastic AgentをインストールしてElasticsearchと通信するにあたって、Nginxからリバースプロキシすれば内部での通信はTLSでなくてもいいんじゃない?と思って設定してみた。 各サーバーにElasticsearchをインストールしてクラスタ構成にするのは、Elasticsearchが結構なメモリを使うのでやりたくない。 まずはKibanaを停止。 # systemctl stop kibana 別コンソールでログを確認しながら作業する。 # journalctl -f Elasticsearchの設定変更。 # less /etc/elasticsearch/elasticsearch.yml # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents xpack.security.http.ssl:   enabled: false #  keystore.path: certs/http.p12 # Enable encryption and mutual authentication between cluster nodes xpack.security.transport.ssl:   enabled: false #  verification_mode: certificate #  keystore.path: certs/transport.p12 #  truststore.path: certs/transport.p12 Elasticsearch再起動して確認。 # systemctl restart elasticsearch # systemctl status elasticsearch ローカルホストのElasticsearchにTLSなしで接続できるか確認。 # curl -u elastic:password http://localhost:9200 接続できればJSON形式

parsedmarc + Elasticsearch + KibanaでDMARCレポートを視覚化

前に時間切れで進めてなかったDMARCレポートを再開しているときの覚書。 環境: CentOS Stream 9, Python 3.9.18, parsedmarc 8.6.4, Elasticsearch 8.11.2, Kibana 8.11.2 1. Elasticsearch + Kibanaをインストール parsedmarcより先にElasticsearch + Kibanaの環境を構築した方が分かりやすい。 Elasticsearchが初耳なら概要を知っておく。 前の記事を参考に。 Elasticsearch + KibanaをインストールしてNginxからリバースプロキシ 全文検索エンジン「Elasticsearch」とは?特徴と使いどころ 2.parsedmarcをサービス化+Elasticsearchとの連携設定 ここからが前回の続き。 インストールと動作確認のおおよその流れは前の記事を参考に。 DMARCレポートツール「parsedmarc」をインストール parsedmarcの設定ファイルを編集。 # vi /opt/parsedmarc/parsedmarc.ini # @see https://domainaware.github.io/parsedmarc/usage.html [general] save_aggregate = True save_forensic = True [imap] host = imap.mail.jp user = dmarc@hoge.com password = password [mailbox] watch = True delete = True [elasticsearch] hosts = https://elastic:password@127.0.0.1:9200 ssl = True cert_path = /etc/elasticsearch/certs/http_ca.crt 公式ドキュメントを参考にサービス化する。 参考:  Using parsedmarc — parsedmarc 8.6.4 documentation # vi /etc/systemd/system/parsedmarc.service [Unit] Description=parsedmarc mai

Elasticsearch + KibanaをインストールしてNginxからリバースプロキシ

前に時間切れで進めてなかったDMARCレポートを再開しているときの覚書。 前回はローカルの仮想マシンで試したけど、今回は公開サーバー上でやってみる。 環境: CentOS Stream 9, nginx 1.22.1, Elasticsearch 8.11.2, Kibana 8.11.2 1. Elasticsearch + Kibanaをインストール 公式サイトはこちら。 全文検索エンジン/Elasticsearch 公式サイト:  Elasticsearch Platform — 答えをリアルタイムで大規模に検索 | Elastic ダッシュボード可視化ツール/Kibana 公式サイト:  Kibana Guide [8.11] | Elastic それぞれのインストール作業は前の記事を参考に。 参考:  DMARCレポートツール「parsedmarc」をインストール topコマンドで見るとElasticsearchがメモリを60%近く使っているので、メモリ使用量を2GBに設定する。 参考:  Elasticsearchのメモリーの管理とトラブルシューティング | Elastic Blog # less /etc/elasticsearch/jvm.options -Xms2g -Xmx2g Elasticsearch再起動。 # systemctl restart elasticsearch 確認。 # top 2.nginxからKibanaへリバースプロキシ設定 http経由で参照できるようにnginxのconf設定。 # cd /etc/nginx/conf.d/ # vi 12_kibana.conf server {     listen       80;    #listen       [::]:80;     server_name  analytics.hoge.com;     # Accept for Let's Encrypt(certbot)     location /.well-known/acme-challenge {         access_log off;         allow all;         root /var/www/html/;     }     location / {      

無料グループウェアNextcloudをUbuntu22.04にインストール

2年前に試したNextcloudをまた試したくなったときの覚書。 グループウェアの選択肢として提案できるか見極めたい。 ちなみに格安のユーザー数無制限のオンラインストレージは年20万円。 参考:  オンラインストレージ構築パッケージ Proself (プロセルフ) / 株式会社ノースグリッド Nextcloudはカスタマイズできるので、やりようによってはシェアを取れると思う。 環境: Ubuntu 22.04.3, nginx 1.24.0, PHP 8.1.2, Nextcloud 27.1.4 1.システム要件を確認。必要なツールをインストール。 公式ドキュメントを確認する。 System requirements — Nextcloud latest Administration Manual latest documentation ImageMagickはインストールしておく。 # apt install imagemagick バージョン確認。 # convert --version Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org Copyright: (C) 1999-2021 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Features: Cipher DPC Modules OpenMP(4.5) Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib Redisはインストールしない。 本番運用するときには使うかも。 php-imagickもインストール。 # apt install php-imagick 2.NextCloudをインストール 公式ドキュメントを参考に。 Example installation on Ubuntu 22.04 LTS — Nextcloud latest Adminis

Ubuntu 22.04 + Nginx + PHP8.1 + MariaDB + Sambaをインストール

開発用仮想マシンにUbuntu 22.04をインストールしたときの覚書。 環境: Ubuntu 22.04.03, nginx 1.24.0, php 8.1.2 Ubuntuのバージョンを確認。 # less /etc/os-release インストールして初期設定は前の記事を参考に。 参考:  Ubuntu Server 22.04 を仮想マシンとしてインストール 1.nginxのインストール 公式サイトに従って最新版をapt経由でインストールできるようにする。 参考:  nginx: Linux packages 必要なツールをインストール。 # apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring 公式の認証用文字列から公開鍵暗号方式で認証キーを生成してバイナリ形式で保存。 teeコマンドはファイル出力と標準出力が同時にできるコマンド。 # curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor |  tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null 認証キーを検証。 # gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]       573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 uid                      nginx signing key <signing-key@nginx.com> stable(安定版)パッケージをaptリストに追加する。 # echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_releas

Windows TerminalのSSHからパスワードなしでログイン

TeraTermからWindows Terminalに移行して、開発環境(仮想マシン)へは毎回パスワードを入力していたけど、公開鍵認証を設定してパスワードなしでログインできるようにしたときの覚書。 環境: Windows 11 Pro 23H2, OpenSSH 8.6.0.1 OpenSSHのバージョンとパス確認 PS> gcm ssh-keygen CommandType     Name                                               Version    Source -----------     ----                                               -------    ------ Application     ssh-keygen.exe                                     8.6.0.1    C:\Windows\System32\OpenSSH\ssh-keygen.exe ssh-keygenで対話しながら秘密鍵と公開鍵を作れる。 参考:  Windows 用 OpenSSH でのキーベースの認証 | Microsoft Learn 鍵生成 PS:> ssh-keygen.exe -f .\.ssh\id_rsa-vm パスフレーズに何も入力せずにエンターして生成。 公開鍵を仮想マシンサーバーにコピーする。 「.ssh/authorized_keys」は/etc/ssh/sshd_configで設定してあるデフォルト値。 # vi .ssh/authorized_keys ssh-rsa AAAAB3....RNE= azuread\suganuma@pc-win 権限変更してsshを再起動。 # chmod 600 .ssh/authorized_keys # systemctl restart sshd Windows Terminalの設定から仮想マシンにSSHするコマンドラインを編集。 ssh -i ~\.ssh\id_rsa-vm root@vm-dev1 SSHログインして確認。 失敗する場合はログを確認。 # journalctl --unit sshd 【関連記事】 SSHクライアントを