2020年5月30日土曜日
2020年5月27日水曜日
PHP7.2 for CentOS7.8 (Install)
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 障害
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
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 .
登録:
投稿 (Atom)
php log(ECS ログ出力)
# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...
-
以下のログに表示されている、" network unreachable resolving"は IPv6に関するメッセージではあるが、基本的にIPv4しか使用していないため このメッセージを消したい時の対策を以下に示す。 上記は、IPv4での名前解決...
-
apk add openrc --no-cache [ 以下のように使えることが把握できる ] alpinelinuxのサービスの再起動コマンド: rc-service nginx restart