zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【NextCloud】ver11→12への更新後に管理画面で出たセキュリティ警告対応

【概要】

EC2インスタンス上で動作させていたNextCloudをver.12に更新したところ、管理画面で以下の警告が出るようになった。

セキュリティ&セットアップ警告

It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.
"X-Frame-Options" HTTP ヘッダは "SAMEORIGIN" に設定されていません。これは潜在的なセキュリティリスクもしくはプライバシーリスクとなる可能性があるため、この設定を見直すことをおすすめします。

The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
インストールガイド ↗をもう一度チェックして、ログ にあるエラーまたは警告について確認してください。

■"X-Frame-Options"ヘッダ対応

ブラウザの開発ツールを見ると以下の様にヘッダ値が重複している

X-Frame-Options	"SAMEORIGIN, SAMEORIGIN"

https://www.mozilla-japan.org/security/announce/2012/mfsa2012-51.html
によれば、
> X-Frame-Options: SAMEORIGIN, SAMEORIGIN のように X-Frame-Options ヘッダの値が
> 重複していた場合、そのヘッダ自体が無視されてしまう

→そもそもこのヘッダについて記述すべきでないという情報あり
https://github.com/nextcloud/server/issues/4863

→該当add_headerを削除(コメント)することで警告は出なくなった

     # add_header X-Frame-Options SAMEORIGIN;

PHP OPcache設定

# php-opcacheをインストール

yum install php-opcache
# Installed:
#   php56-opcache.x86_64 0:5.6.30-1.133.amzn1

service php-fpm restart
service nginx restart

→まだ警告文が出ている

php -i | grep opcache
(以下抜粋)
opcache.enable_cli => Off => Off
opcache.max_accelerated_files => 4000 => 4000
opcache.revalidate_freq => 2 => 2

→上記を指定の値に修正
vi /etc/php.d/10-opcache.ini

diff /etc/php-5.6.d/10-opcache.ini /etc/php-5.6.d/10-opcache.ini_org
8c8
< opcache.enable_cli=1
---
> ;opcache.enable_cli=0
18c18
< opcache.max_accelerated_files=10000
---
> opcache.max_accelerated_files=4000
36c36
< opcache.revalidate_freq=1
---
> ;opcache.revalidate_freq=2

こちらも警告は出なくなった

【OSXでLAN内のWindowsPCの名前解決】PC名.local←mDNS/Bonjourによる解決

OSXだとNetBIOSでコンピュータ名で名前解決できない。リモートデスクトップするときとかに不便なので、Bonjourを入れて名前解決させる。

※Windows10であればmDNS/Bonjourがネイティブサポートされているので、接続したいPCがWindows10であれば、まずOSX側で、「PC名.local」で接続を試してみてください。
moguno.hatenablog.jp

Windows8などで上記がダメだった場合の手順メモ】

1)WindowsPC側にBonjour Print Services をインストールする

ダウンロード - Bonjour Print Services (Windows)

2)OSX側で、「PC名.local」で接続

→つながる


以上

S3にバージョニングとライフサイクルを設定してみた(2017/08)

【ざっくりした理解と方針】

  • S3でバージョニングを利用する

 →AWSでは「現行」と「以前(※)」で管理される。所謂「世代」ではなく日数。
 (※ライフサイクルで削除しなければ延々たまり続ける)

  • 現在のバージョンは低速ストレージに退避しない
  • 「以前のバージョン」は、バージョニング後30日後に標準IAに移動(最低保持期間は30日間)
  • 60日後にGlacierに移動
  • 適当な日数経過したら以前のバージョンは削除

【ストレージ種別価格について】

S3でGlacierを活用したコスト削減 | カプセルクラウド(CapsuleCloud)テックブログ
によれば

  • スタンダードストレージ($0.025/GB)
  • 標準 – 低頻度アクセスストレージ($0.019/GB)
  • Glacier ストレージ($0.005/GB)

とのこと

【作業メモ】

バージョニングの有効化

AWSマネージドコンソール-[S3]-S3バケットの[プロパティ]タブで
[バージョニング]-[バージョニングの有効化]を実施
f:id:zuntan02:20170803133521p:plain

ライフサイクルの設定

f:id:zuntan02:20170803133544p:plain
[+ライフサイクルルールの追加]

01.名前とスコープ

f:id:zuntan02:20170803133625p:plain
ルール名:ルール名適当に
フィルター:ブランク
で[次へ]

2.移行の設定

現行と現行ではない(以前の)オブジェクトバージョンの両方に対するアクションの詳細を設定します。
f:id:zuntan02:20170803133729p:plain
□現行バージョン:OFF
→現行バージョンはそのままおいときます。
□以前のバージョン:ON
→オブジェクトが最新でなくなった後、指定された日数が経過してから実行されます。

  1. 移行を追加する
標準IAへの移行の期限 30日
Amazon Glacierへの移行の期限 60日
3.有効期限

設定の失効
f:id:zuntan02:20170803133715p:plain
□現行バージョン
→現行バージョンはそのままおいときます。

□以前のバージョン:ON
425日間:以前のバージョンになってからの日数
期限切れのオブジェクト削除マーカーおよび不完全なマルチパートアップロードをクリーンアップする。
□期限切れのオブジェクト削除マーカーをクリーンアップする:ON
□不完全なマルチパートアップロードをクリーンアップする:ON/7Days

4.確認

名前とスコープ

  • 名前 ルール名
  • スコープ バケット全体

Transitions

  • オブジェクトの以前のバージョン
  • 移行先: Standard-IA 次の後: 30 日間
  • 移行先: Amazon Glacier 次の後: 60 日間

有効期限

  • 完全な削除の期限 425 日間
  • 期限切れのオブジェクト削除マーカーをクリーンアップする
  • 不完全なマルチパートアップロードをクリーンアップする 次の後: 7 日間

しばらくこれで様子見。

【NewRelic】リソース監視[Servers] および従来のalert機能は(無料アカウントの場合)2017年11月14日に終了する模様

【2017年08月の状況】

かつて
zuntan02.hateblo.jp
こちらで紹介したように、AWSユーザ向けに無料で”Standard”版を提供してくれていたNewRelicですが、もう足抜けできないほどアディクトしたあたりで、2017年11月をもって、[Servers](サーバリソース監視)とその値によるアラート通知機能(legacy alert)が終了、[Infrastructure](有料)に乗り換えてねとのアナウンスが。この先監視をどうするか、ということを考えざるを得ないわけで。

■終了するのは何か

f:id:zuntan02:20170804200520p:plain
New Relic Servers
New Relic Legacy Alert
★NewRelic最大のウリであるところのAPMは、今のところLite(無料)もStandard(無料)も終了のアナウンスはない。念のため代理店に確認したところ、APM Lite 自体の機能は当面引き続き利用可能。APM Standardについては同様に機能を縮小する方針とのこと(公式には未アナウンス)

■終了する時期はいつか

<LITEまたはStandard(無料)アカウントのみをご利用のお客様>
サービス停止日:2017年11月14日
<有料アカウントをご利用のお客様>
サービス停止日:2018年5月15日

■公式アナウンス

discuss.newrelic.com

機械翻訳(一部手直し)

重要:New Relic ServersとLegacy Alert機能の今後の変更点

New Relic ServersとLegacy Alert機能は、当社の製品の1つ以上を有料で購読しているお客様のために、2018年5月15日にEOL(End-of-Life)に達します。
1つまたは複数の製品の有料購読をしていないお客様の場合、EOLの日付は2017年11月14日となります。
また、有料購読をしていないアカウントから2019年11月14日にNew Relic Alerts が削除されます。

EOLの日付の後、New RelicユーザーインターフェイスでNew Relic ServersとLegacy Alert機能は使用できなくなり、データ処理が停止します。また、New Relicアラートは有料アカウントでのみ利用可能で、EOLの日付から無料アカウントから削除されます。

これは簡単な決断ではありませんでしたが、実際には、お客様のニーズを満たすように設計されたより優れた機能を備えた新しい製品があり、今後はこれらの製品に投資する予定です。 New Relic Infrastructureは、昨年11月にリリースされ、構成変更の追跡、雷の高速、リアルタイムのソフトウェアインベントリ可視性、ネイティブAWSサポートなど、New Relic Serverに比べてさらに多くの利点をもたらしました。動的に変化するすべてのシステムとそれらがサポートするアプリケーションのスタックを完全に可視化できます。

同様に、Legacy Alert機能で以前に利用可能だった機能は、新しいリレーショナルアラートに置き換えられ、置き換えられました。 New Relic Alertsは、より緊密に顧客の全データセットに統合され、問題をより迅速に解決するために、より広範でより深い監視を行う機能を提供します。

これらの新製品への移行をお手伝いするために、私たちは参考になることを願っています。

Infrastructureに変更した場合の料金は?

NewRelicの課金はCU(Compute Unit)という単位で計算される
参照:
qiita.com

> 【計算方法】
> CU = (CPU 数 + RAM のギガバイト) x 使用時間

料金計算のシュミレーター

【postgres】JOINが多用されてて重い時はpostgresql.confのwork_memを増やそう

postgresでJOINを多用している処理が激重だったので臨時対応したメモ

【参考】

qiita.com

→work_memの最大は(実メモリ-shared_buffers)/max_connections
→work_memの経験は実メモリ/max_connections/[4-16]

PostgreSQLのチューニング その1 – Mindcircus.jp

→work_mem = 搭載メモリ / max_connections / 4

PostgreSQLパラメータ作成サイト
pgtune.leopard.in.ua



【作業メモ】

cat /var/lib/pgsql/data/postgresql.conf

max_connections = 100                   # (change requires restart)
#work_mem = 1MB                         # min 64kB

→現サーバのメモリは1GBなので
work_mem =1024/100/4 = 2.56

max_connections = 100                   # (change requires restart)
work_mem = 2MB                          # min 64kB

これだとあまりかわらなかった

max_connections = 10                    # (change requires restart)
work_mem = 25MB                         # min 64kB

これだと劇的に高速化した。

あくまで一例ですが。

■おまけ

# 現在実行中のクエリを確認
SELECT * FROM pg_stat_activity;

# 重いプロセスをkill
SELECT pg_cancel_backend(procpid);

【貧者のAWS】アカウント新規作成し続けてAWSの無料枠を使い続けたい

アカウント新規作成し続けてAWSの無料枠を使い続けたい、と思っていたけど
同じクレジットカードを使っていると1年経たずに名寄せされて標準課金される模様。

詳しくは
qiita.com



そりゃそうか。。。

PostGISのconfigureでchecking for library containing GDALAllRegister... no って言われたメモ

# What's PostGIS
# →PostGIS (ぽすとじす) は PostgreSQL データベースで地理空間情報を扱うための拡張である。
#  GNU General Public License のオープンソースソフトウェアとして配布されている。

【問題】

Chapter 2. PostGIS Installation

必須モジュールおよびバージョン
PostgreSQL 9.2 or higher
GNU C compiler (gcc)
GNU Make (gmake or make)
Proj4 reprojection library, version 4.6.0 or greater
GEOS geometry library, version 3.3 or greater
LibXML2, version 2.5.x or higher
JSON-C, version 0.9 or higher
GDAL, version 1.8 or higher

モジュール群を上記URLにある取得元からそれぞれwgetしてconfigureしてmakeしてmake installしたのち、

wget http://download.osgeo.org/postgis/source/postgis-2.3.2.tar.gz
tar -xvzf postgis-2.3.2.tar.gz
cd postgis-2.3.2
./configure

としたところ、以下のエラーとなってハマった。GDALもインストールしたのだけど。。

checking for library containing GDALAllRegister... no
configure: error: could not find GDAL

【解決】

postgisのconfig.logに

/usr/bin/ld: warning: libpq.so.5, needed by /usr/local/lib/libgdal.so, not found (try using -rpath or -rpath-link)

っていうのがあった。libpq.so.5は /usr/local/pgsql/lib の下にあったので

/etc/ld.so.conf の末尾に以下を追記

/usr/local/pgsql/lib

↓↓

 -------------- Compiler Info -------------
  C compiler:           gcc -g -O2
  SQL preprocessor:     /usr/bin/cpp -traditional-cpp -w -P

 -------------- Dependencies --------------
  GEOS config:          /usr/local/bin/geos-config
  GEOS version:         3.6.1
  GDAL config:          /usr/local/bin/gdal-config
  GDAL version:         2.2.0
  PostgreSQL config:    /usr/local/pgsql/bin/pg_config
  PostgreSQL version:   PostgreSQL 9.3.4
  PROJ4 version:        49
  Libxml2 config:       /usr/bin/xml2-config
  Libxml2 version:      2.7.6
  JSON-C support:       no
  PCRE support:         no
  PostGIS debug level:  0
  Perl:                 /usr/bin/perl

 --------------- Extensions ---------------
  PostGIS Raster:       enabled
  PostGIS Topology:     enabled
  SFCGAL support:       disabled
  Address Standardizer support:       disabled

 -------- Documentation Generation --------
  xsltproc:
  xsl style sheets:
  dblatex:
  convert:
  mathml2.dtd:          http://www.w3.org/Math/DTD/mathml2/mathml2.dtd

通った。。。