2020年5月30日土曜日

メディア のインポートに失敗しました

Importプラグインを複数をインストールした状態にすると
画像のインポートを失敗するので、Importプラグインは
一つだけにすること!

例:Blogger だけにするとか。

2020年5月27日水曜日

Dockerの書き方(必須)

http://docs.docker.jp/engine/articles/dockerfile_best-practice.html

PHP7.2 for CentOS7.8 (Install)

php-mysqlの導入方法について記載。


yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install php72 php72-php

yum install --enablerepo=remi,remi-php72 php-mysqlnd
yum -y install php72-pdo
yum install php72-php-mysqlnd

2020年5月22日金曜日

k8s 障害



upgrade:

 vi /etc/apt/sources.list
リポジトリを筑波の動きが変だったので、山形大学のみにした。

公式から引用:


1.15.3にUpdate:
apt-cache policy kubeadm
apt-mark unhold kubeadm && apt-get update && apt-get install -y kubeadm=1.15.3-00 && apt-mark hold kubeadm

EC2の作成

今回、Webサーバの作成を行う

①ネットワーク:作成済みのVPCを選択
②サブネット:パブリックのサブネットに割り当てる。
③自動割り当てパブリックIP:有効  ->グローバルIPが割り当てられる。
④キャパシティーの予約:リソースオーバー時に、別途リソースを確保してくれる機能
    ->別料金が発生するので利用注意
⑤IAMロール:権限設定
⑥シャットダウンの動作:インスタンスがシャットダウン後の動作を決める
     ->停止、再起動や削除などを決められる。
通常、停止で良いと思う。
⑦削除保護の有効化:削除防止機能
⑧モニタリング:モニタリングする間隔を決める。
⑨テナンシー:ハードウェアー専用するか、共有するか設定する
⑩Elastic Interface:機械学習用で使う場合に有効
(11)T2/T3  無制限->t2(汎用インスタンス)インスタンスの落とし穴で、CPUリソースオーバーすると
CPUクレジットの残量次第で、バーストモードに切り替わって
過度なリース不足(CPUオーバー)から耐えることが出来るが残量がなくなれば
バーストモードが使用不可になるが、これを無制限にする機能。


CPUクレジットとは:
CPUクレジットの残量がある限り一時的にCPUスペックを超えてCPUを稼働させる(バースト)ことができます。
このような処理の間でCPUクレジットは消費されます。 
ただし消費されCPUクレジットが少なくなるとCPUが通常の稼働となります。
 (CPUがアイドルな場合はCPUクレジットを貯蓄することができます)


AWS beanstalk (for Laravel)

1)composerコマンドをMacにインストールする
brew install composer

メモ:
Composer は、PHPのパッケージ管理ツールです。


2)Lalabelをインストールする。
composer create-project --prefer-dist laravel/laravel eb-laravel

3)beanstalkにアップするために、圧縮を行う。
zip ../laravel-default.zip -r * .[^.]* -x "vendor/*"

4)先ほど、圧縮したlaravel-default.zip”をアップロードを行う。


5)ソースコード先のローカルファイルに”laravel-default.zip”が選択していること。


6)アプリケーションの作成を押す。

…….作成中。













完成したようだ。

7)このままだと、直接アクセスすると、パーミッションエラーが表示されるので
Document rootの設定を行う。

1)設定  > ソフトウェア  > 変更を行う。


8)ドキュメントルートに/publicと記載する。

9)対象のurlに移動すると、表示されたようだ

10)EC2でリバースプロキシを作成する
------------------------------------------------------------------
server {
    listen       8888;                                  
    server_name  13.113.1.123;        <-------リバースプロキシのIP(通常は、ドメイン名を記載する)
    location / {
        proxy_pass http://13.230.81.99;   <--------対象のプロキシ先(AWS beanstalk: Lalabel)
    }
}
-------------------------------------------------------------------


11)AWS側でも、該当するEC2(nginxで作成した、リバースプロキシ)のセキュリティグループで
今回追加したポート番号”8888”を開ける。

12)上記設定後に、PC上からCurlコマンドを投入するか、ブラウザ上で以下のURLを投入してみる。
curl http://13.113.1.123:8888


以下、nginx(リバースプロキシ) —>Lalabel間のパケットをキャプチャをしてみた。
②内部でキャプチャを行う。

[キャプチャしたイメージ]
①PC —>  ②Nginx(プロキシサーバ)   —->③lalabel(beanstalk) 


WebSocket

WebSocketについて:

①AWS のサービスの (Lambda や DynamoDB など) または HTTP エンドポイントのステートフルな
フロントエンドとして、WebSocket API を作成できます。
②WebSocket API は、クライアントアプリから受信するメッセージのコンテンツに基づいて
バックエンドを呼び出します。





nodejs for centos

1)イメージを取得する
docker pull centos:latest
docker images

2)centosのdockerを起動させる。
docker run -i -t -d centos /bin/bash

3)接続対象のコンテナを確認する。
docker ps

4)対象のコンテナに接続する。
docker attach b7ff54ee8668


nodejsインストール:
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
yum install nodejs
node -v

vi hello-server.js
--------------- hello-server.js ----------------------------
var http = require('http')
var os = require('os')

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'})
    const host = os.hostname()
    res.end(`Hello World ${host} \n`)
}).listen(8989)
-------------------------------------------------------------

node hello-server.js 
ブラウザを立ち上げて、http://サーバのIP:8989で開く

MySQLのインストール:

1)mariadbを削除する。
sudo yum remove mariadb-libs
sudo rm -rf /var/lib/mysql

2)mysqlのリポジトリをインストール
sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

3)MySQLをインストール
sudo yum install mysql-community-server

4)MySQLのサービスを起動する。
systemctl start mysqld

5)パスワードを確認
sudo cat /var/log/mysqld.log | grep password
2019-09-20T15:00:11.505248Z 1 [Note] A temporary password is generated for root@localhost: >7IanuLGVwsU

6)MySQLのインストールを行う。
mysql_secure_installation

[パスワードの設定]
Pass@123

node用のMySQLのプラグインをインストール:
npm install mysql



MySQLにアクセス権限を与える:
--------------------------------------------------------------------------
SELECT host FROM mysql.user WHERE User = 'root';

CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address';

CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

FLUSH PRIVILEGES;
---------------------------------------------------------------------------


nodeと接続するファイルを作成:
-------------------------------------------------------------------------------------
'use strict';

let mysql = require('mysql');
let connection = mysql.createConnection({
  host : '192.168.2.77',
  user : 'root',
  password : 'Pass@123',
  port : 3306,
  database: 'test1'
});

connection.connect();

connection.query('SELECT * from product LIMIT 2;', (err, rows, fields) => {
  if (err) throw err;

  console.log(rows);
});

connection.end();
---------------------------------------------------------------------------------------



Laravelについて

フレームワーク:
従来設計が必要だった部分を提供された物なので、ソースコードの作成に専念できる。
(セキュリティ、メンテナンス性、拡張性などを備えているのが特徴)


ライブラリ  :開発に役立つ機能を備えたソフトウェア
フレームワーク:単に機能を提供するだけではなく、その機能を使う”仕組み”を提供した物
      ->システムを提供されてるイメージ。


[フレームワークの特徴]
①プログラムの基本的な部分は、フレームワーク自身に組み込まれているプログラムによって行われている。
②プログラマは、フレームワークに用意されている仕組みに従って必要な処理を追加する。
  ->プログラマは、呼び出されて動くプログラムの部分だけを作成すれば良い。
③基本的な、仕組み自体は提供されているので、フレームワークを利用したプログラマは、
セキュリティ、メンテナンス性、拡張性といった物を手にできる。


[メモ]
composer:パッケージ管理ツール
Blade        :テンプレートエンジン
ORM         :データベースアクセス用


導入方法:
一般のアプリケーションの様にプログラムをダウンロードするのではなく
パッケージ管理ツールを使用する。


[composerの導入 for Mac]

1)以下からダウンロードを行う。
https://getcomposer.org/download/



2)以下、ダウンロードした物を移動させる。
sudo mv composer.phar /usr/local/bin/composer

3)権限を変えておく。 
chmod a+x /usr/local/bin/composer
composer -v



4)laravelを導入する。
composer global require "laravel/installer=~1.1"


5)環境変数の変更
①パスを通す。
echo export PATH=\"$HOME/.composer/vendor/bin:\$PATH\" >> ~/.bash_profile
②一旦、ターミナルを閉じる。

6)内容を見ると、追加されているのが把握できる。
vi ~/.bash_profile


[Laravelを使ってみる]

以下の流れで作業を進めることになる。
①プロジェクトの作成
②必要なプログラムの作成
③サーバーで実行
④デプロイする。


以下の方法でプロジェクト作成:
(larabelコマンドで、プロジェクト作成が出来なかったので、composerから行うことにした。)

メモ:
プロジェクトを作成すると、必要なアプリケーションが一式揃った状態になる。
  ->オマケ的な、Webサーバー機能も備わっている。(PHP本体にあるものを利用してる)

composer create-project --prefer-dist laravel/laravel  [アプリ名]


アプリケーションを実行:
php artisan serve


ルーティング:
特定のアドレスが来た時に、どの処理を呼び出して実行するか
それを管理する。


Laravelのファイルについて:
作成したプロジェクト内に生成されるファイル類になる。
      ->Gitやcomposer関係のファイルなどがある。
(以下のファイルを全て使用する訳ではない。)


環境変数(.env):


Larabelのフォルダについて:

appフォルダについて:
httpフォルダを一番使用する。

helloword作成:
/Users/hidenari/MyTest/routes/web.phpを編集する。


以下のコマンドを実行する。
php artisan serve


以下の様に、直接文章を記載して表示させることも可能。

MVCのアーキテクチャ:

コントローラの処理:


コントローラの作成を行う。
 php artisan make:controller [コントローラ名:名前はなんでも良い。]


以下、コントローラが作成されたのが確認できる

memo:
①artisanコマンドについて
php artisan [コマンド]
 ->コントローラを作成するのに、make:controlerコマンドを使った。


名前空間(name space):
フォルダを使って、ファイル整理を行う様なイメージ
(ここからここまでのコードが○○という空間に属していると定めること)




ルートのパラメータを使用したブラウザ上での表示を行ってみる

作成済みのコントローラの編集を行う。

[変更内容]


1)以下を編集する。
/Users/hidenari/MyTest/routes/web.php


2)試しに、ブラウザ上で、以下のアドレスにすると。。。
http://127.0.0.1:8000/hello/a/a

beanstalk EB CLIコマンド導入方法 for Mac

1)念の為、brewコマンドのアップデートを行う
brew update

2)eb cliコマンドの導入を行う。
brew install awsebcli

3)バージョンを確認してみる
eb --version

Restfulとは

REST:
①HTTPメソッドを使い、必要な情報のやり取りするための仕組みを提供する。
②利用者が自分でWEbブラウザからアクセスして使用するのではなく、他のプログラムがアクセスして利用
するための物


MySQL Tuner

チューニング漏れや不適切な設定があった場合に警告を出してくれるツール

wget -O mysqltuner.zip https://github.com/rackerhacker/MySQLTuner-perl/archive/master.zip 

php-fpmについて

PHP-FPM:
FPM ( FastCGI Process Manager ) は PHP の FastCGI 実装のひとつで、
主に高負荷のサイトで有用な追加機能を用意しています。


FastCGI:
Webサーバ上でユーザプログラムを動作させるためのインタフェース仕様の一つである。


Unixドメインソケット:
①同一ホスト内でのプロセス間通信に使用できる。
②一般的に通常のTCP接続よりもパフォーマンスがいいとされている。
③リバースプロキシ、DB接続などでよく使われています。

git clone for dockerfile

以下の手順を行わないと、dockerfileでgit cloneが実行が出来ないので必須!

Developer settings > Personal access tokens > Generate new tokenを押す

Note: 適当名前
Select scopes:以下をチェックする。

以下を赤枠を控えておく。
    ->ランダムで変わるらしい

上記の赤枠 + github.com/[githubのユーザ名]/[gitのレポジトリ].git
[dockerfileの中身]

dockerの作成を行ってみる
docker build -t [イメージ名] .

例:
docker build -t nginx-a .


php log(ECS ログ出力)

# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...