update
cat /etc/redhat-release
yum update
history
shopt
vi /etc/profile.d/history.sh

HISTTIMEFORMAT='%F %T '
HISTSIZE=100000
HISTFILESIZE=100000
HISTIGNORE='history:pwd:ls:ls *:ll:w:top:df *'      # 保存しないコマンド
PROMPT_COMMAND='history -a; history -c; history -r' # 履歴のリアルタイム反映
timezone
ll /etc/localtime
timedatectl
date

timedatectl set-timezone Asia/Tokyo
apache
systemctl status apache
systemctl status httpd

yum install epel-release
yum install https://repo.ius.io/ius-release-el7.rpm

vi /etc/yum.repos.d/epel.repo
vi /etc/yum.repos.d/ius.repo
enabled=0

yum install centos-logos.noarch mailcap openldap-devel expat-devel libdb-devel openssl perl
yum --enablerepo=epel install nghttp2 brotli
yum install --disablerepo=base,extras,updates --enablerepo=ius httpd httpd-devel mod_ssl
yum list | grep httpd
systemctl start httpd
systemctl enable httpd.service

httpd -h
httpd -S
httpd -t -D DUMP_VHOSTS
httpd -t -D DUMP_RUN_CFG
httpd -v
httpd -V
httpd -l
httpd -t -D DUMP_MODULES
httpd -M
httpd -t -D DUMP_INCLUDES

ll /var/log/httpd/
less /etc/logrotate.conf
less /etc/logrotate.d/httpd

mkdir /var/www/html/php
chmod 777 /var/www/html/php/
ps aux | grep httpd
systemctl reload httpd
systemctl status httpd
systemctl restart httpd
systemctl status httpd
php5.4
yum info php
rpm -q --changelog php | grep CVE | less

yum install php
php -v
php -r 'phpinfo();'  | less
php modules
php -m | less
yum list --enablerepo=epel | grep php | less
yum install php-bcmath
php -m | less

vi bcmath.php
php bcmath.php
vi gettext.php
php gettext.php
vi gettext.php
php /var/www/html/php/phpinfo.php | less
yum list --enablerepo=epel | grep php | less
yum install php-pgsql
vi postgresql.php
php postgresql.php
mkdir php
vi *.php php/.
mv *.php php/.

php -m | less
yum install --enablerepo=epel php-pecl-redis
php -m | less
vi redis.php
php redis.php
php -m | less
postgresql13
yum install postgresql
yum install centos-release-scl
yum repolist -q
yum repolist all | less
vi /etc/yum.repos.d/CentOS-SCLo-scl.repo
vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
↓
enabled=0

yum repolist all | less
yum repolist -q
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql13-contrib
yum install postgresql13-devel

yum repolist -q
yum install --enablerepo=epel postgresql13-devel
systemctl enable postgresql-13.service
ll /var/lib/pgsql/13/data/
PGSETUP_INITDB_OPTIONS="-E UTF8 --no-locale" /usr/pgsql-13/bin/postgresql-13-setup initdb
ll /var/lib/pgsql/13/data/
su - postgres

vi /var/lib/pgsql/.pgsql_profile
↓
PATH=/usr/pgsql-13/bin:$PATH
export PATH

which psql
psql -v
psql --version
/usr/pgsql-13/bin/psql --version
ls /bin/psql
ll /bin/psql
ll /etc/alternatives/pgsql-psql
pg_ctl
source .bash_profile

psql -l
psql -U postgres
createuser --login --pwprompt centos
createdb --owner=centos centos
systemctl start postgresql-13
ps aux | grep master
psql -U postgres
psql -l
redis6.2
yum list | grep redis
yum list --enablerepo=epel | grep redis
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
vi /etc/yum.repos.d/remi.repo
vi /etc/yum.repos.d/remi-safe.repo
↓
enabled=0

yum info --enablerepo=epel,remi redis
yum install --enablerepo=epel,remi redis
less /usr/lib/systemd/system/redis.service
systemctl status redis
systemctl enable redis
systemctl status redis
ps aux | grep redis
systemctl start redis
ps aux | grep redis
redis-cli ping
systemctl status redis

less /etc/logrotate.d/redis
pure-ftpd1.0.43
yum list | grep pure | less
yum list --enablerepo=epel | grep pure | less
cat /etc/redhat-release
yum update centos-release
→アップデート無し

yum repolist all | less
yum info --enablerepo=C7.0.1406-base pure-ftpd
yum search --enablerepo=C7.0.1406-base ftp
yum search ftp | less
yum install pure-ftpd
yum repolist all | less
yum list --enablerepo=epel | grep pure

cd /usr/local/src/
yum install wget
wget https://download.pureftpd.org/pub/pure-ftpd/releases/obsolete/pure-ftpd-1.0.43.tar.gz
tar xvzf pure-ftpd-1.0.43.tar.gz
cd pure-ftpd-1.0.43
yum install gcc
yum install openssl-devel
./configure --with-everything --with-paranoidmsg --without-capabilities --with-virtualchroot --with-uploadscript --with-tls
make
make install

https://gist.githubusercontent.com/zrong/c9588a17ccb15e75fdf7/raw/a24c563bfe0cdc238952ce24f560a8de42631c0f/pure-ftpd.sh

systemctl status pure-ftpd
cp configuration-file/pure-ftpd.conf /etc/.
cp configuration-file/pure-config.py /usr/local/bin/.
vi /etc/init.d/pure-ftpd
chmod 755 /etc/init.d/pure-ftpd
chmod 755 /usr/local/bin/pure-config.py
/etc/init.d/pure-ftpd start
ps aux | grep pure
yum install ftp
ftp localhost
java1.8.0
yum list | grep java | less
yum install java-1.8.0-openjdk
java -version
node.js14
yum list --enablerepo=epel | grep node | less
curl -fsSL https://rpm.nodesource.com/setup_14.x | bash -
vi /etc/yum.repos.d/nodesource-el7.repo
yum list | grep node
yum list | grep node | less
yum install nodejs
node -v
npm install forever -g
vi index.js
node index.js
forever start index.js
ll
vi node.js
mkdir node.js
mv index.js node.js/.
実装例
サイボウズ
https://jp.cybozu.help/general/ja/admin/list_externalservices/list_saml/saml_settings.html

わかりやすい

netone
https://www.netone.co.jp/knowledge-center/blog-column/knowledge_takumi_199/

Unspecified identifiers
SPが特定のSAML Subject形式(UPNやEmailなど)を要求していない場合は基本的にこちらを選択します。

SAML2.0 公式
http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.4.Establishing%20and%20Managing%20Federated%20Identities|outline

Unspecified identifiers の詳細は載っていない。
https://www.osstech.co.jp/_media/techinfo/openam/saml_authncontext_20150417.pdf

X.509
https://qiita.com/Shinya-Yamaguchi/items/383a73e890d638666935

証明書
https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/certificate-signing-options
署名が選択式。Azure。

phpライブラリ
https://github.com/onelogin/php-saml
MITライセンス

環境
# cat /etc/system-release
Amazon Linux release 2 (Karoo)
# uname -r
4.14.203-156.332.amzn2.x86_64
gst-rtsp-serverのインストール
$ git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server
$ cd gst-rtsp-server/
$ git checkout 1.4
$ ./autogen.sh
$ make
$ sudo make install
autogen.sh 実行に必要だったパッケージ
$ sudo yum install git
$ sudo yum install libtool
$ sudo yum install gettext-devel
$ sudo yum install gtk-doc
$ sudo yum install gcc-c++
$ sudo yum install python3
$ sudo python3 -m pip install meson
$ sudo python3 -m pip install ninja
$ sudo yum install gstreamer1
$ sudo yum install gstreamer1-devel
$ sudo yum install gstreamer1-plugins-base
$ sudo yum install gstreamer1-plugins-base-devel
# 後に下記インストール
$ sudo yum install gstreamer1-devel gstreamer1-plugins-base-tools gstreamer1-devel-docs gstreamer1-plugins-base-devel gstreamer1-plugins-base-devel-docs gstreamer1-plugins-good gstreamer1-plugins-good-extras gstreamer1-plugins-ugly gstreamer1-plugins-ugly-devel-docs  gstreamer1-plugins-bad-free gstreamer1-plugins-bad-free-devel gstreamer1-plugins-bad-free-extras
# cd /usr/local/src/
# wget http://ftp.gnome.org/pub/gnome/sources/glib/2.64/glib-2.64.4.tar.xz
# tar Jxvf glib-2.64.4.tar.xz
# cd glib-2.64.4/
# meson _build
# ninja -C _build
# less INSTALL.in
# ninja -C _build install
# pkg-config glib-2.0 --modversion
vi ~/.bash_profile
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
x264encインストール
# cd /usr/local/src/
# wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
# tar jxvf x264-master.tar.bz2
# cd ../x264-master/
# ./configure --enable-shared
# make
# make install
# gst-inspect-1.0 x264enc
必要だったパッケージ
# cd /usr/local/src/
# wget https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz
# tar Jxvf nasm-2.15.05.tar.xz
# cd nasm-2.15.05/
# ./configure
# make
# make install
$ sudo yum install gstreamer1.0-plugins-ugly
$ sudo yum install gstreamer1-plugins-ugly
$ sudo yum install gstreamer1-plugins-ugly-devel-docs
# 後に下記インストール
$ sudo yum install gstreamer1-devel gstreamer1-plugins-base-tools gstreamer1-devel-docs gstreamer1-plugins-base-devel gstreamer1-plugins-base-devel-docs gstreamer1-plugins-good gstreamer1-plugins-good-extras gstreamer1-plugins-ugly gstreamer1-plugins-ugly-devel-docs  gstreamer1-plugins-bad-free gstreamer1-plugins-bad-free-devel gstreamer1-plugins-bad-free-extras
ffmpeg(直接不要だったかも)
# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libva-1.8.3-1.el7.x86_64.rpm
# rpm -ivh libva-1.8.3-1.el7.x86_64.rpm
# wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libass-0.13.4-6.el7.x86_64.rpm
# rpm -ivh libass-0.13.4-6.el7.x86_64.rpm
$ sudo amazon-linux-extras install epel
$ sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
$ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
$ sudo yum install ffmpeg ffmpeg-devel
テスト動画の再生
$ ./test-launch '( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )'

環境

$ uname -r
4.4.35-33.55.amzn1.x86_64

$ /usr/local/php-5.6.16/bin/php --version
PHP 5.6.16 (cli) (built: Aug 28 2017 06:35:52)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

結論

curl のタイムアウト動作に対して、
  • default_socket_timeout は影響確認できず(ini_set)
  • max_execution_time は影響確認できず(set_time_limit)
  • CURLOPT_CONNECTTIMEOUT は作用する(curl_setopt)
  • CURLOPT_TIMEOUT も作用する (curl_setopt)
  • CURLOPT_DNS_CACHE_TIMEOUT は影響確認できず(curl_setopt)
  • デフォルトでは2分強でタイムアウト(カーネル仕様と思われる)

curl_setopt 設定値

CURLOPT_CONNECTTIMEOUT :接続の試行を待ち続ける秒数。0 は永遠に待ち続けることを意味します。
CURLOPT_TIMEOUT:cURL 関数の実行にかけられる時間の最大値。

curl_errno の戻り値

  • 正常時:CURLE_OK (0)
  • カーネル側のタイムアウト:CURLE_COULDNT_CONNECT (7)
  • CURLOPT_CONNECTTIMEOUT / CURLOPT_TIMEOUT:CURLE_OPERATION_TIMEDOUT (28)

カーネル側のタイムアウト動作

$ time /usr/local/php-5.6.16/bin/php curl.php
real    2m7.345s
user    0m0.000s
sys     0m0.012s

$ cat /proc/sys/net/ipv4/tcp_syn_retries
6

参考リンク

curl の戻り値
https://curl.haxx.se/libcurl/c/libcurl-errors.html curl実行中に応答が無くなる現象
https://ngyuki.hatenablog.com/entry/2019/09/21/191552 curlのデフォルト値等

https://www.it-swarm.dev/ja/php/php%EF%BC%9A%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AEcurl%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82%A6%E3%83%88%E5%80%A4/1067580731/

https://www.it-swarm.dev/ja/php/php%E3%81%A7%E3%81%AEcurl%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82%A6%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A/968216261/

https://stackoverflow.com/questions/10308915/php-default-curl-timeout-value TCPタイムアウト
https://qiita.com/tukiyo3/items/e66393cf5fd0ede8b3b4

ソースコード

<?php

// default_socket_timeout は、本コードでのタイムアウト動作には影響しない
$socket_timeout = ini_get('default_socket_timeout');
print_r("socket_timeout: $socket_timeout \n"); // -> 60

ini_set('default_socket_timeout', 10);

// max_execution_time は、本コードでのタイムアウト動作には影響しない
$max_execution_time = ini_get('max_execution_time'); // timeout in seconds
print_r("max_execution_time: $max_execution_time \n"); // -> 0

set_time_limit(5);

$max_execution_time = ini_get('max_execution_time');
print_r("max_execution_time: $max_execution_time \n"); // -> 5

$url = "https://www.google.com"; // 正常実行
//$url = "8.8.8.8"; // for connect timeout test
//$url = "http://httpbin.org/delay/10"; // for timeout test

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// デフォルト5分のようだが、カーネルプロトコルスタックのTCP制御で2分強でタイムアウトする
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 3500);

// デフォルトは、無期限
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
//curl_setopt($ch, CURLOPT_TIMEOUT_MS, 10000);

curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 3); // 本コードでのタイムアウト動作には影響しない

$str = curl_exec($ch);
$errno = curl_errno($ch);

curl_close($ch);

if ($errno !== CURLE_OK) {
    print_r("errno: $errno \n");
    // CURLE_COULDNT_CONNECT (7) -> カーネル側のタイムアウト
    // CURLE_OPERATION_TIMEDOUT (28) -> CURLOPT_CONNECTTIMEOUT or CURLOPT_TIMEOUT
    return false;
}

if (!$str) {
    print_r("error");
    return false;
}

print_r("success");
return true;

Network Interface Specifications

 

recording Control = recording.wsdl

 

http://www.onvif.org/ver10/recording/wsdl

がある。

https://www.onvif.org/member-portal/wp-content/uploads/sites/2/2017/08/ONVIF_FeatureList_VB-H651V_Ver.-1.1.0_2017-02-25_23h48m9s.xml

 

https://www.atmarkit.co.jp/ait/articles/0303/18/news003.html

を見ながら。

https://www.onvif.org/ver10/recording.wsdl

を確認。

 

recording_service は何?

 

test specification

https://www.onvif.org/wp-content/uploads/2019/01/ONVIF_Base_Device_Test_Specification_18.12.pdf

見た

https://www.onvif.org/wp-content/uploads/2018/07/ONVIF_Recording_Control_Test_Specification_18.06.pdf

 

https://www.onvif.org/wp-content/uploads/2017/01/ONVIF_Profile_G_Specification_v1-0.pdf

にExport~が無い。

stdlayoutでは、

svn でブランチ作成後

git svn fatch でリモートブランチが作成される。

最初の記事にまとめた

 

該当の修正は、そんな大した修正ではないのだが・・。

https://github.com/nilesflow/git-svn-test2019/commit/51512d9d9fdddd4239f000f822b58e8a668293cf

https://github.com/nilesflow/git-svn-test2019/commit/d8f5f6d5c2ee6e84ac7b0c43cfb5f28f03113dce

rebase すると、git svn dcommit 後に、コミットIDを書き換えないために行った、git pull によるコミットがマージされてしまう。

この状態で、dcommit すると成功した。

・dcommitでコミットIDが変わった事に対して、git origin から pull すると、svn 側が上記エラー状態に

・dcommitでコミットIDが変わった事を正とすると、git push -f で歴史書き換えになってしまう。

うーん。

git svn rebase すると、マージコミットなりが rebase されまくるので、

オプション見てもこれを防ぐことは不可能。

git svn の操作対象ブランチはおとなしく、rebase を受け入れるしかない、と考えた。

svn/trunk と git側の master は共存できない、という結論。

こんなエラーも

ちょっとはまった。

ローカルSVNサーバ

github

という構成でgit-svnを使用。

svn1.6だと発生する旨の記事が多い。

 

環境

 

windowsでgithubでpullreqをmergeすると、発生していた。

git svn dcommit すると

git-svn Cannot accept non-LF line endings in ‘svn:log’ property

 

恐らく、コミットログにcrlfが混じる。

git commit --amend

git rebase -i -p HEAD~3

-pしないとマージコミットが表示されない。

git pull 後に、git merge、git commit 等でも発生しなくなる。

何らかの操作でgit log に modify が入ればよい模様。

 

--stdlayout

trunk, branches, tags の構成

 

--prefix svn/

git の リモートリポジトリが衝突しないように。

--localtime

git ログ等の時間がデフォルトUTCなので日本時間に合わせる。

表示上だけで、SVN側ではJSTになっている等、問題はなかった。

 

変則的な構成

・turnkは直接指定

・branches/tagsはディレクトリ指定

・–ignore-refs で無視するパターンをうまく指定する

 

master ができる。

現在のリポジトリから svn/trunk へ

masterに入れば、masterから。

develop に入れば、developから。

基本的には、materだけで行う運用が無難そう。

★別記事で。

 

dcommit すると、git のcommitIDが変わる。

git の masterへマージ後、git svn dcommit

で変わってしまうので、git側へは -f push が必要。と思う。

また何らかのエラーでcommitツリーを変えてしまった時も問題。

master使わないほうがいいのか?

 

svn リポジトリから取得

チェックアウトしているローカルリポジトリにマージされる。

master に入れば、masterに。

develop に入れば、developに。

どこにいるかわからないまま実行すると危なそう。

基本的には、master だけで行う運用が無難そう。

★別記事で

 

git 側に開発ブランチを作成

 

githubのリモートにpush

 

参考

https://qiita.com/hidekuro/items/4727715fbda8f10b6b11#svn-%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%82%92%E5%8C%BA%E5%88%A5%E3%81%99%E3%82%8B