ラベル php の投稿を表示しています。 すべての投稿を表示
ラベル php の投稿を表示しています。 すべての投稿を表示

2024年6月16日日曜日

docker(php:7.4-apache)について

apacheとphpの連携は、 apacheモジュール(php7_module)を使うことで
HTTPリクエストに対してPHPを正しく処理できる状態にしている。

具体的には、php7_moduleがApacheのロードモジュールとしてリストされている場合、Apacheは.php拡張子を持つファイルを受け取った際に、そのファイルをPHPスクリプトとして解釈し、PHPエンジンを通じて処理することができます。

2024年5月26日日曜日

504 Gateway time outについて考察

以下のアイドルタイムの変更が必要なのかもしれない 

登場リソース;

①ALB                           : Idle timeoutの値を60秒(例)に設定

②PHP                          : max_execution_time = 180秒 [スクリプトの最大実行時間](例)

③SQL(MS SQL2019)   : remote query timeout 300秒(例)


参照先:

https://qiita.com/nagaakihoshi/items/f7326978221ee053d208


https://repost.aws/knowledge-center/504-error-alb

2024年5月25日土曜日

phpのチューニング(504 Gateway Timeout Error)

504 Gateway Timeout Errorが出たので、改善方法を記載してみる


1)php.iniを作成する

; エラーログを有効にする
log_errors = On

; エラーログの出力先ファイルを指定する
error_log = /var/log/php_errors.log

; エラー表示を有効にする(開発環境用)
display_errors = On

; エラーレポートのレベルを指定する(開発環境用)
error_reporting = E_ALL

; デバッグレベルのログを出力する
; 以下のように設定することで全てのログが出力される
log_errors_max_len = 0

max_execution_time = 180
max_input_time = 300


2)dockerfileの作成を行う

FROM php:7.4-apache


# 新しいphp.iniファイルをコピー
COPY php.ini /usr/local/etc/php/


3)php infoにて、設定内容を確認してみる



2024年4月21日日曜日

PHP log設定(debug編)

 以下を追記

  ->logLevel は用途に応じて

httpd.conf

———

ErrorLog "logs/php/error.log"

LogLevel debug

————


php.ini

以下に編集する。

———————————

# エラーログを有効にする

log_errors = On


# エラー表示を有効にする(開発環境用)

display_errors = On


# エラーレポートのレベルを指定する(開発環境用)

error_reporting = E_ALL


# デバッグレベルのログを出力する

# 以下のように設定することで全てのログが出力される

log_errors_max_len = 0

————————————



apacheの再起動を行う



以下に出力される(ディレクトリの作成が必要)

mkdir -p /etc/httpd/logs/php/

2020年5月27日水曜日

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日金曜日

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) 


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

php-fpmについて

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


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


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

2020年5月21日木曜日

PHP各種パッケージ



Laravel for docker-compose

参照先:


アーキテクト:
lara-docker/
|----docker-compose.yml
|--- nginx/
|         |---- Dockerfile
|         |-----default.conf
|
|----- laravel/
|           |-----Dockerfile
|
|----.ebextensions(beanstalkの環境設定)
|-----Dockerrun.aws.json(beantalk用のデプロイファイル)


1)nginxの初期設定ファイルの記載を行う

①laravelのドキュメント先を指定する。
②PHP-fpm関連で、fastcgiの記述を行う。

vi lara-docker/nginx/default.conf
----------------------------------------------------------
server {
    listen       80;
    server_name  localhost;

    location / {
        # Laravelのドキュメントルート設定
        root   /var/www/laravel/public;

        fastcgi_split_path_info  ^(.+\.(?:php|phar))(/.*)$;   
        fastcgi_intercept_errors on;

        fastcgi_index  index.php;
        include        fastcgi_params;
        # FastCGIの向き先をLaravelコンテナに設定
        fastcgi_pass   laravel:9000;
   # FastCGI サーバに渡されるべきパラメータを設定(一般的な設定)
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
-----------------------------------------------------------------


2)nginxのDockerfileの作成を行う
①nginxとalfinelinuxを指定する
②上記で、作成したdefault.confを導入先のdockerにコピーを行う。

vi lara-docker/nginx/Dockerfile
-----------------------------------------------------------------
FROM nginx:1.17-alpine

# ローカルから設定ファイルをコピー
COPY  default.conf /etc/nginx/conf.d/default.conf
-----------------------------------------------------------------


3)Dockerfileを作成する。
Dockerfile(laravel)
①amazonlinuxを導入する
②php-pecl-zip:zipを使えるようにするファイル。
③php7.3をインストール
④php-dom:phpとMySQLを接続するプラグイン
⑤composerのインストール
⑥Laravelをインストールする。
⑦Laravelのプロジェクトの作成する。
⑧php-fpmのインストールを行う

vi lara-docker/laravel/Dockerfile
---------------------------------------------------------------------
FROM amazonlinux:2 as vender

# PHPインストール
RUN amazon-linux-extras install -y php7.3
RUN yum install -y php-pecl-zip php-mbstring php-dom

# Composerインストール
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

# 環境変数設定
# root でのインストールを許可する設定
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME "/opt/composer"
ENV PATH "$PATH:/opt/composer/vendor/bin"

# AWS fargateではdepends_onやlinkでのコンテナ通信を行えないため、コンテナ名(php-fpm)では接続できない
# そのため127.0.0.1で通信を行う
ARG PHP_UPSTREAM_CONTAINER=127.0.0.1
ARG PHP_UPSTREAM_PORT=9000


# Laravelインストール
RUN composer global require "laravel/installer"

# Laravelプロジェクト作成
WORKDIR /var/www
RUN composer create-project laravel/laravel laravel

# php-fpmの導入する。
FROM php:7.3-fpm-alpine

# ビルド用コンテナから必要なコンテンツをコピー
COPY --from=vender --chown=www-data:www-data /var/www/ /var/www/
------------------------------------------------------------------------------------------

4)Nginxのコンテナのビルドを行う
docker build nginx/. -t nginx 

5)Laravelのコンテナのビルドを行う
docker build laravel/. -t laravel

6)docker-composeを起動する。
docker-compose up

7).ebextensionsの作成を行う
mkdir .ebextensions


8)00permission.configの作成
(Laravelのパブリックディスクの権限設定)

vi 00permission.config
--------------------------------------------------------------------------------------------
container_commands:
  01chmod_storage:
    command: "chmod -R 777 ./storage"
---------------------------------------------------------------------------------------------

9)composer.configの作成
(Laeravelのドキュメントルート用)

vi composer.config
----------------------------------------------------------------------------------------------
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
-----------------------------------------------------------------------------------------------


10)beanstalkのデプロイ用のファイルの作成を行う。





Lambda + SSM Run Commandで、数十台のEC2のuserdata結果を一括確認する

コードを1枚貼って、テストイベントを実行するだけで、 全台の確認結果が返ってくる手順です。 [ゴール] Nameタグが web-* / api-* / batch-* のEC2すべてに確認コマンドを流し、 NGの台だけ を結果に表示します。確認対象のuserdata(Ubu...