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/.
環境
# 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 )'

VM×非管理ディスク


2019/7/8現時点では、非管理ディスクではなく、Microsoft自身も推奨する管理ディスクを利用する方が一般的だと思うので、非管理ディスクでVMを作成することは余り無いのだと思う。

次のような場合に。

・過去に作成したVMの停止/削除を行いたい場合、

・何らかの理由があって、非管理ディスクでVMを作成しようとする場合

 

VMの作成


VMを非管理ディスクで作成した場合。

ストレージアカウントのBLOBに、1BLOBとしてVHDファイルが保存される。

ディスク30GBなら、30GBのファイル。

「vhds」というコンテナの中に、次のファイル名でBLOB単位で保存される。

{VM名}yyyymmddhhiiss.vhd

 

VM作成画面では、デフォルト「管理ディスク」となっているので、

明示的に「非管理ディスク(及び保存対象のストレージアカウント)」を指定する必要がある。

 

料金は、¥5.04/GB~

https://azure.microsoft.com/ja-jp/pricing/details/storage/page-blobs/

=\150.12/月~

 

非管理ディスクの場合、既存のディスクから作成することはできなかった。

(※portal上の操作を確認する限り)

(後の復元手順に影響)

 

VMの停止


VMが暫く不要になった場合、金額的には、VMを停止して放っておく、でも良いのだろうと思われる。

 

VMの削除


VMを削除しても次のリソースは残るので注意

・IPアドレス

・セキュリティグループ

・ネットワークインタフェース

 

新規で作成していれば、

・ストレージアカウント(ディスク用)

・ストレージアカウント(診断用)

・仮想ネットワーク

※作成の仕方によっては他にも発生する

 

パブリックIP

静的IPアドレスは、

¥0.896/時間 =\666.624/月

動的IPアドレスは、リソースが解放されるので問題なし。

 

ディスク

VMを削除しても、対象のストレージアカウントの中に、ページBLOBのVHDファイルが残る。

削除対象のBLOBファイルは、VMの名前から判断する。

また、状態が「リース解除」になっている。

対象のディスクは、リソースグループ → [対象のリソースグループ] → デプロイ から、

VM作成時のディスク名を確認することができる。

※が、VM削除後にディスクリソースを開いても、読み込み待ちのまま、情報が表示されなかった。

 

VMの復元

非管理ディスクのVMを復元する場合は、VMイメージを作成する必要があるため、VMを削除してしまうと、イメージを作成できず、復元がしにくい、ということになるのだと思われる。

次の記事中に、「PowerShell から仮想マシンを作成する」方法の記載がある。

https://blogs.technet.microsoft.com/jpaztech/2018/09/21/arm-vm-replication-part-1/

後に示すように、VHDファイルから管理ディスクへの移行が行えるため、管理ディスク利用のVMへの移行が現実的と思われる。

 

VMのイメージを作成


コスト面からVHDファイルを保持せずにどうにかしようという事は余り無いと思うが、

VHDファイルを削除して、後から復元しようとする場合は、下記の方法?

・VHDファイルのダウンロード/アップロード

・VMのイメージを作成

※イメージにした場合、30GB(元のVHDファイル)からどの程度小さくなるのか?

非管理ディスクのVMを作成する方法は下記。

https://blogs.technet.microsoft.com/jpaztech/2018/09/21/arm-vm-replication-part-1/

下記が面倒。

・Azure VM エージェントでVMを汎用化する必要がある

・そのVMは利用できなくなる

・VMのイメージ作成はportalで行えず、PowerShellを利用する必要がある

 

管理ディスクへ移行する


幾つかの方法が考えられる。

・既存のVM(非管理ディスク)を新VMへ移行

・既存のVM(非管理ディスク)を残したまま、新VM(管理ディスク)を作成

・VHDファイルから管理ディスクを作成して、VMを作成

・VHDファイルからスナップショット→管理ディスクを作成、VMを作成

 

既存のVM(非管理ディスク)を新VMへ移行

既存のVM自体をそのまま移行したい場合はこの手順

非管理ディスクのVHDファイルはBLOBストレージ上に残るので、不要な場合は、別途削除処理等を行う必要がある。

 

・次の方法で、「マネージド ディスクに移行」に画面遷移

・VM画面上の「~、Managed Disks に移行してください。」案内から

・VM「ディスク」画面の「マネージド ディスクに移行」から

 

・VMが起動中の場合は、停止→開始の動きになる

・VMが停止中の場合は、開始される

 

管理ディスクが作成され、自動的にVMの既存(非管理ディスク)がデタッチされ、

作成された管理ディスクがアタッチされる。

既存(非管理ディスク)のBLOBのリース状態は「利用可能」になる。

 

★「管理ディスク」名称のprefix に自動でハッシュキーが付くため、綺麗に管理するなら嫌かも

 

VHDファイルから管理ディスクを作成して、VMを作成

「ディスク」から「追加」を選択

「マネージドディスクの作成」画面で下記を選択して作成する。

ソースの種類:ストレージBLOB

ソースBLOB:既存(非管理ディスク)のBLOBを

 

作成した管理ディスクで、「VMの作成」を選択して作成する。

この場合、幾つかの情報は管理ディスクに含まれているため、新規にVMを作成する場合と比べて、入力する必要がない。

・地域は固定

・管理者アカウント、SSH接続情報は求められない

 

・起動中のVMに紐づく状態が「リース中」のVHDも選択可能

※ファイル整合性は未確認

 

スナップショット


非管理ディスクにも「スナップショット」があるが、管理ディスクのそれとは異なる。

(コンソール上で確認した限りだと)

これはあくまで、対象のVHDファイルであるページBLOB内に閉じた機能で、

ページBLOBを取得したスナップショット状態に変更(「昇格」と表現)する等が行える。

取得したスナップショットから管理ディスクを作成したり、を行うものではなさそう。

※上述した管理ディスク作成で、スナップショットのURLを指定できるか等は未確認

 

VM×管理ディスク


今後一般的と思われる管理ディスクの場合。

 

VMの作成


非管理ディスクの場合とほぼ同様。

VM作成画面では、デフォルト「管理ディスク」となっているので、そのまま作成する。

 

VMの停止


管理ディスクは、Standard HDD S4 32GiB で、¥172.04/月~ かかる。

スナップショットは、¥5.6/GB なので、実データサイズが 10GBの場合、\56/月~ なので、

多少コストメリットはある。

VMの復元もそれほど手間ではないので、スナップショットにしておくのが良いだろうと思われる。

※イメージにすると、汎用化されるのでVMが使用できなくなる

 

VMの削除


非管理ディスクの場合は、削除してしまうと復元が多少面倒になるが、

管理ディスクの場合は、また「VMの作成」を行えば良い。

 

『windows 10 virtual desktop enhancer』の使い方

『windows 10 virtual desktop enhancer』の主な機能としては以下の通りです。

  • タスクトレイに表示されている数字は、現在の仮想デスクトップ番号を表示
  • 仮想デスクトップ毎に壁紙設定が可能
  • 「Alt」+「0〜9」で、仮想デスクトップを切り替える
  • 「Alt」+「←」「→」で、仮想デスクトップの前後に切り替える
  • 「Alt」+「Shift」+「Ctrl」+「0〜9」で、現在のウインドウを指定した仮想デスクトップに移動する
  • 「Alt」+「Shift」+「Ctrl」+「←」「→」で、現在のウインドウを前後の仮想デスクトップに移動する
  • 「Alt」+「Shift」+「0〜9」で、現在のウインドウを指定した仮想デスクトップに移動&切り替え
  • 「Alt」+「Shift」+「Ctrl」+「←」「→」で、現在のウインドウを前後の仮想デスクトップに移動&切り替え
  • アイコンをクリックすることにより、仮想デスクトップの切り替え画面の呼び出し

 

 

【Windows 10】仮想デスクトップをさらに使いやすくカスタマイズ!『windows 10 virtual desktop enhancer』

実動作では何もジョブが実行されない場合に、10分で terminated されていた。

 

コンピューティング環境一つに対して、Auto  Scalingグループが作成されており、

次のログが出ていた。

Terminating EC2 instance: i-0a0d23067827fb809
2019 July 5 03:17:14 UTC+9
2019 July 5 03:18:19 UTC+9
説明:説明Terminating EC2 instance: i-0a0d23067827fb809
原因:原因At 2019-07-04T18:17:14Z instance i-0a0d23067827fb809 was taken out of service in response to a user request, shrinking the capacity from 1 to 0.

 

下記だろうか。外部が指定している?AWS Batchが指定している?

https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html

 

クールダウンの300秒が関係している?

 

他、

AWS Batchを使って5分以上かかる処理を実行してみる

調査中。

確認したAMI

amzn-ami-2018.03.u-amazon-ecs-optimized (ami-0e1aa8c2e9d719f58)
`
起動AMIから確認。

https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/docker-basics.html
に従って実施

python3.7

 

python3.6

 

Python2.7

2.7でもboto3-1.7.74.dist-info

  • Lambda pythonバージョン

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-programming-model.html

 

boto3 s3 署名バージョン対応

1.5.71 (Botocore)、1.4.6 (Boto3) にアップグレード。

【超重要】対応しないと使えなくなるかも?!今、全S3ユーザがチェックすべき署名バージョン2の廃止について

 

pythonコード

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html

すべての AWS リージョンでは、AWS SDK はデフォルトで署名バージョン 4 を使用してリクエストを認証します。2016 年 5 月以前にリリースされた AWS SDK を使用する場合、次の表に示すように、署名バージョン 4 のリクエストが必要になることがあります。

[s3] use-sigv4 = True

 

5af85bf0

色々調べると、GuzzleHttpがHTTPSで通信する際に増えるらしい

 

まとめ


  • AWS SDKのクライアント、GuzzleHttpも最終的にphpのcurl_~関数を呼んでいる
    ※constructorでcurlが無い場合、Exception吐くコードがあるし、AWSの要件にもcurlが入っている
  • php curl の nssは多分、ビルドされたcurlのNSSバージョンに依存してそう
    ※curl -V のNSS/3.27 の部分
  • curlをmakeすると、その時のOSのnssバージョンが組み込まれた
    curl 7.19.7 (x86_64-unknown-linux-gnu) libcurl/7.19.7 NSS/3.36
  • かつ、その際、nss-softokn-3.14.3-23.3.el6_8.x86_64 で、curlコマンドのNSS_SDB_USE_CACHE=yes は有効だった
  • phpのcurlバージョンは、コマンドと同じくlibcurlに依存してそうだが、curl_version(); 又は、phpinfo(); で確認できる

 

各種情報

AWS-SDKでSNSへpublishするテストコードを準備

実行前後の情報

dentunusedが増加し、dentryのslabが増加している。

buffers/cacheが減少している。

 

対策コードを追加

実行前後の情報

ほぼ増加しなくなったことがわかる。

nss-softokn-3.14.3-23.3.el6_8 の環境でも効果がありそうだ。

 

GuzzleHttp

コードを追っていくと、内部でphp curlを使っているようだ

curl と nss

NSS/3.27.1 が使われているようだ。

osにinstallされているnss-softknは使われていない?

curlをmakeして確かめてみる

同じバージョンをインストール

システムのnssが使われた事の確認と効果の確認

nss-softokn-3.14.3-23.3 で nss-softokn-3.14.3-23.3 が使えているだろうと思われる。

 

wget

 

epel

CentOS : EPEL リポジトリ追加

php5.5を入れるために

 

 

pip

CentOS 6 の python 2.6.6 に pip を導入する手順

 

aws cli

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/awscli-install-linux.html

php5.5

 

php-xml

こんなエラーが出たので、