Shinya Furuwata Blog http://blog.star-flare.com/ A journey to find the next inevitable Sat, 13 Apr 2019 22:54:35 +0000 ja hourly 1 https://wordpress.org/?v=5.1.1 https://blog.star-flare.com/wp-content/uploads/2018/09/cropped-IMG_5516-32x32.jpg Shinya Furuwata Blog http://blog.star-flare.com/ 32 32 Elastic Beanstalk PHPで、PHPのバージョンがおかしくなる現象を調べてみた https://blog.star-flare.com/2019/04/10/elastic-beanstalk-php-version-error/ Wed, 10 Apr 2019 07:40:10 +0000 https://blog.star-flare.com/?p=556 はじめに

Elastic BeanstalkでPHPで7.2を起動したところ、おかしい現象がおきたのでメモしておきます。

Elastic Beanstalkを起動すると、下記の画面が確認できます。

サーバにSSHでログインして、PHPのバージョンを確認します。

Warning: Permanently added '10.0.68.89' (ECDSA) to the list of known hosts.
 _____ _           _   _      ____                       _        _ _
| ____| | __ _ ___| |_(_) ___| __ )  ___  __ _ _ __  ___| |_ __ _| | | __
|  _| | |/ _` / __| __| |/ __|  _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ /
| |___| | (_| \__ \ |_| | (__| |_) |  __/ (_| | | | \__ \ || (_| | |   <
|_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\
                                       Amazon Linux AMI

This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
WILL BE LOST if the instance is replaced by auto-scaling. For more information
on customizing your Elastic Beanstalk environment, see our documentation here:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
[ec2-user@ip-10-0-68-89 ~]$ php -v
PHP 7.2.13 (cli) (built: Jan  9 2019 22:12:27) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.13, Copyright (c) 1999-2018, by Zend Technologies

バージョンは、7.2.13と確認できました。

AWS EB CLI でアプリケーションをデプロイします。

業務で使ってるアプリケーションをデプロイしたところ
[f_prg@serverapp] $ eb deploy
Creating application version archive "app-v20180611-822-ga782-190410_150350".
Uploading: [##################################################] 100% Done...
2019-04-10 06:05:13    INFO    Environment update is starting.
2019-04-10 06:06:19    INFO    Deploying new version to instance(s).
2019-04-10 06:06:40    ERROR   [Instance: i-XXXXXXXX] Command failed on instance. Return code: 2 Output: (TRUNCATED)...- /etc/php-7.0.d/30-wddx.ini
    - /etc/php-7.0.d/30-xmlreader.ini
    - /etc/php-7.0.d/aws.ini
    - /etc/php-7.0.d/environment.ini
    - /etc/php-7.0.d/php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/10_composer_install.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
2019-04-10 06:06:44    ERROR   [Instance: i-YYYYYY] Command failed on instance. Return code: 2 Output: (TRUNCATED)...- /etc/php-7.0.d/30-wddx.ini
    - /etc/php-7.0.d/30-xmlreader.ini
    - /etc/php-7.0.d/aws.ini
    - /etc/php-7.0.d/environment.ini
    - /etc/php-7.0.d/php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/10_composer_install.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
2019-04-10 06:06:44    INFO    Command execution completed on all instances. Summary: [Successful: 0, Failed: 2].
2019-04-10 06:06:45    ERROR   Unsuccessful command execution on instance id(s) 'i-YYYYYY,i-XXXXXXXX'. Aborting the operation.
2019-04-10 06:06:45    ERROR   Failed to deploy application.

ERROR: ServiceError - Failed to deploy application.
エラーしたので、サーバに入って確認してみます。
サーバにログインして、 /var/log/eb-activity.log を確認するのが通常です。
いろいろと調べて2〜3日かかったので、調査の結果でわかった点について書いていきます。
Last login: Wed Apr 10 14:59:51 2019 from ip-10-0-10-74.ap-northeast-1.compute.internal
 _____ _           _   _      ____                       _        _ _
| ____| | __ _ ___| |_(_) ___| __ )  ___  __ _ _ __  ___| |_ __ _| | | __
|  _| | |/ _` / __| __| |/ __|  _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ /
| |___| | (_| \__ \ |_| | (__| |_) |  __/ (_| | | | \__ \ || (_| | |   <
|_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\
                                       Amazon Linux AMI

This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
WILL BE LOST if the instance is replaced by auto-scaling. For more information
on customizing your Elastic Beanstalk environment, see our documentation here:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
[ec2-user@ip-10-0-68-89 ~]$ php -v
PHP 7.0.33 (cli) (built: Jan  9 2019 22:04:26) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

PHPのバージョンが、7.0.33 に下がってる!?

[ec2-user@ip-10-0-68-89 ~]$ which php
/usr/bin/php
[ec2-user@ip-10-0-68-89 ~]$ ls -al /usr/bin/php
lrwxrwxrwx 1 root root 21  4月 10 15:06 /usr/bin/php -> /etc/alternatives/php
[ec2-user@ip-10-0-68-89 ~]$ ls -al /etc/alternatives/php
lrwxrwxrwx 1 root root 16  4月 10 15:06 /etc/alternatives/php -> /usr/bin/php-7.0
[ec2-user@ip-10-0-68-89 ~]$ ls -al /usr/bin/php-*
-rwxr-xr-x 1 root root 4262336  1月 10 07:14 /usr/bin/php-7.0
-rwxr-xr-x 1 root root 3930288  1月 10 07:38 /usr/bin/php-7.2
lrwxrwxrwx 1 root root      25  4月 10 15:06 /usr/bin/php-cgi -> /etc/alternatives/php-cgi
-rwxr-xr-x 1 root root 4205688  1月 10 07:14 /usr/bin/php-cgi-7.0
-rwxr-xr-x 1 root root 3873688  1月 10 07:38 /usr/bin/php-cgi-7.2
-rwxr-xr-x 1 root root    5009  1月 10 07:37 /usr/bin/php-config-7.2

もう一度、Elastic Beanstalkを新規で構築してサーバに入ってみます。

[ec2-user@ip-10-0-108-194 ~]$ php -v
PHP 7.2.13 (cli) (built: Jan  9 2019 22:12:27) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.13, Copyright (c) 1999-2018, by Zend Technologies
[ec2-user@ip-10-0-108-194 ~]$ ls -al /usr/bin/php-*
-rwxr-xr-x 1 root root 3930288  1月  9 22:38 /usr/bin/php-7.2
lrwxrwxrwx 1 root root      25  3月 29 00:24 /usr/bin/php-cgi -> /etc/alternatives/php-cgi
-rwxr-xr-x 1 root root 3873688  1月  9 22:38 /usr/bin/php-cgi-7.2
lrwxrwxrwx 1 root root      28  3月 29 00:24 /usr/bin/php-config -> /etc/alternatives/php-config
-rwxr-xr-x 1 root root    5009  1月  9 22:37 /usr/bin/php-config-7.2
lrwxrwxrwx 1 root root      29  3月 29 00:24 /usr/bin/php-config7 -> /etc/alternatives/php-config7

いくつかのシンボリックリンクが変わっている!?

結論

他のアプリをデプロイすると、PHPのシンボリックリンクが変わらなかったので、業務で使ってるアプリケーションだとおかしくなっていました。一体どこが影響してるのか現在も調査中です。

おまけ

同じ様な現象があったようだ。ナカーマ。

https://serverfault.com/questions/953248/elastic-beanstalk-not-running-correct-php-version

]]>
Amazon LinuxのAMI-IDをAWS CLIで取得する方法 https://blog.star-flare.com/2019/04/06/get-amazon-linux-ami-id-using-aws-cli/ Sat, 06 Apr 2019 08:15:38 +0000 https://blog.star-flare.com/?p=547 cdkでec2を起動するようにしていたところ、AMIのIDや一覧を取得する必要があったので、メモしておきます。

AWS CLIで取得したので、フィルタは下記の通りです。

  • ownerはamazon
  • amiの名前(name)をamzn-ami*
  • descfriptionをAmazon*2018*
  • virtualization-typeをhvm

AWS CLIを実行すると下記の通りです。

$ aws ec2 describe-images --filter "Name=owner-alias,Values=amazon" "Name=name,Values=amzn-ami*"  "Name=description,Values=Amazon*2018*" "Name=virtualization-type,Values=hvm"
{
    "Images": [
        {
            "Architecture": "x86_64",
            "CreationDate": "2018-08-13T19:09:56.000Z",
            "ImageId": "ami-0041c416aa23033a2",
            "ImageLocation": "amazon/amzn-ami-2018.03.e-amazon-ecs-optimized",
            "ImageType": "machine",
            "Public": true,
            "OwnerId": "591542846629",
            "State": "available",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/xvda",
                    "Ebs": {
                        "DeleteOnTermination": true,
                        "SnapshotId": "snap-09326f109fc250e2a",
                        "VolumeSize": 8,
                        "VolumeType": "gp2",
                        "Encrypted": false
                    }
                },
                {
                    "DeviceName": "/dev/xvdcz",
                    "Ebs": {
                        "DeleteOnTermination": true,
                        "VolumeSize": 22,
                        "VolumeType": "gp2",
                        "Encrypted": false
                    }
                }
            ],
            "Description": "Amazon Linux AMI 2018.03.e x86_64 ECS HVM GP2",
            "EnaSupport": true,
            "Hypervisor": "xen",
            "ImageOwnerAlias": "amazon",
            "Name": "amzn-ami-2018.03.e-amazon-ecs-optimized",
            "RootDeviceName": "/dev/xvda",
            "RootDeviceType": "ebs",
            "SriovNetSupport": "simple",
            "VirtualizationType": "hvm"
        },
        {
            "Architecture": "x86_64",
            "CreationDate": "2018-11-17T01:08:05.000Z",
            "ImageId": "ami-007a27b62715a73d5",
            "ImageLocation": "amzn-ami-ap-northeast-1/957cba359c4af654e937d39e75cbf1778809a16c19297f6b535fb987d92eaf94/137112412989/amzn-ami-minimal-hvm-2018.03.0.20181116-x86_64.ext4.gpt.10g.manifest.xml",
            "ImageType": "machine",
            "Public": true,
            "OwnerId": "137112412989",
            "State": "available",
            "BlockDeviceMappings": [],
            "Description": "Amazon Linux AMI 2018.03.0.20181116 x86_64 Minimal HVM s3",
            "EnaSupport": true,
            "Hypervisor": "xen",
            "ImageOwnerAlias": "amazon",
            "Name": "amzn-ami-minimal-hvm-2018.03.0.20181116-x86_64-s3",
            "RootDeviceType": "instance-store",
            "SriovNetSupport": "simple",
            "VirtualizationType": "hvm"
        },
以下省略...
]]>
SSHの秘密鍵のFinger Printを確認してみた https://blog.star-flare.com/2019/04/02/check-finger-print-secret-key-of-ssh/ Tue, 02 Apr 2019 07:34:55 +0000 http://3.93.106.55/?p=537 使ってる鍵が、本当にあってるかどうか確認したので作業メモです

$ openssl pkcs8 -in ~/.ssh/aws/secret.pem -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
]]>
netstatでListenしてるポートを確認する方法 https://blog.star-flare.com/2019/04/01/check-listen-port-using-netstat/ Mon, 01 Apr 2019 08:17:35 +0000 https://blog.star-flare.com/?p=549 サーバでListenしているポートを調べる必要があったのでメモしておきます。

$ netstat -tanp | grep LISTEN

]]>
ダミー画像作成ツールを発見 https://blog.star-flare.com/2019/03/02/find-dummy-image-tool-site/ Sat, 02 Mar 2019 12:11:22 +0000 http://3.93.106.55/?p=483 ダミー画像作成ツールを発見したので、メモしておきます。

https://dummyimage.com/

これでググらなくてよくなります。

]]>
EC2 インスタンスタイプの一覧をゲットする https://blog.star-flare.com/2019/03/01/get-ec2-instance-type-list/ Thu, 28 Feb 2019 16:34:00 +0000 http://3.93.106.55/?p=478 EC2インスタンスの一覧を作ろうとしたところ、どこかにないかと探したのでメモしておきます。

$ cat ~/.pyenv/versions//2.7.10/lib/python2.7/site-packages/botocore/data/ec2/2016-11-15/service-2.json|jq '.shapes.InstanceType.enum'
[
  "t1.micro",
  "t2.nano",
  "t2.micro",
  "t2.small",
  "t2.medium",
  "t2.large",
  "t2.xlarge",
  "t2.2xlarge",
  "t3.nano",

めちゃめちゃ便利!

というか、手元にあった。(笑)

]]>
AWS CDKに必要なドキュメント https://blog.star-flare.com/2019/02/28/aws-cdk-document-list/ Thu, 28 Feb 2019 05:37:02 +0000 http://3.93.106.55/?p=476 AWS CDKを触っていて、いろいろ調べてみたりしてドキュメントがまとまったので記事にしました。

ユーザーガイド

https://docs.aws.amazon.com/ja_jp/CDK/latest/userguide/what-is.html

リファレンス

https://awslabs.github.io/aws-cdk/index.html

ワークショップ

https://cdkworkshop.com/

AWS CloudFormationのドキュメント

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html

]]>
AWS CDKファーストステップ https://blog.star-flare.com/2019/02/27/first-step-of-aws-cdk/ Wed, 27 Feb 2019 02:13:39 +0000 http://3.93.106.55/?p=190 AWS CDK を使ってAWS環境を構築します。

今更ながら感はありますけど、最近使い始めてみたので記事を書いてみます。

AWS CDKって何?

https://awslabs.github.io/aws-cdk/
https://github.com/awslabs/aws-cdk
によると
AWS Cloud Development Kit (AWS CDK)
というAWSのクラウド環境のためのツールになります。

AWS CDKで何ができるの?

Getting Startedを触ってみます。

$ npm i -g aws-cdk
$ mkdir infra
$ cd infra
$ cdk init app --language=typescript
$ cdk deploy

このままだとこれだけなので、下記を参考するだけでもいいってなります。

https://docs.aws.amazon.com/CDK/latest/userguide/what-is.html

AWS CDKを触ってみたところ

好きな言語からCloudFormationのテンプレートを作成・デプロイをする便利なツールってところですね

下記のコマンドで、ビルドと構文チェックできます。

npm run build
npm run watch

CloudFormationのテンプレートを確認

cdk synth

CloudFormationでデプロイ

cdk deploy

ソースを修正したら、比較!(そのあとデプロイ!)

cdk diff

まとめ

CloudFormationの知識が必要になりますが、typescriptなどの言語で自由にテンプレートを生成できるのがいいですね!

CloudFormatinoのJSON(YAML)の量の大変さは少し改善できそうですよ!

]]>
アーケードフォントを作成するツールを発見した。 https://blog.star-flare.com/2019/02/17/found-arcade-font-writer/ Sun, 17 Feb 2019 08:04:54 +0000 http://3.93.106.55/?p=200 Arcade Font Writer

http://arcade.photonstorm.com

英語のみ対応だけど、これは何かに使えそう。
サンプルで作ってみました。
]]>
ブログの環境を変更しました。 https://blog.star-flare.com/2019/02/11/changed-environment-of-blog-to-s3/ Mon, 11 Feb 2019 01:53:33 +0000 http://3.93.106.55/?p=184 LightSail → S3静的サイトに移行しました。

ブログの環境をLightSailからS3静的サイトに移行しました。
移行したというより、またS3静的サイトに戻したということになります。

当初は、Markdownファイルの練習も兼ねて
https://hexo.io/
でS3静的サイトで構築してました。

サイトにログインして記述するという環境がではなく
PCでMarkdownを作ってからになるので
どうしても早くなりませんでした。

そこで、Lightsailを採用してましたが
コストが高いので、S3静的サイトに戻しました。

いろいろと工夫をしているので、どこかでお話しできればと思います。
]]>