EC2のerror_logにIPアドレスを追加する

Apache2.4以上の場合、error_logにクライアントのIPアドレスを追記できる。

 

sudo vi /etc/httpd/conf/httpd.conf 

で開いて、以下を追記する(場所はどこでもいい。一番最後でOK)。

 

ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] [%{X-Forwarded-For}i] %M% ,\ referer\ %{Referer}i"

 

%{X-Forwarded-For}iの部分が接続元クライアントのIPアドレスになる。

 

:wqで保存後、httpd.confをリロードする。

sudo /etc/init.d/httpd reload

 

以上

LaravelでAjaxのペジネーションの覚え書き

Laravelで大量の配列をページング表示させる必要があった。

しかも、Ajaxを使ってページングを行う必要があった。

いくつかややこしい点があったので、メモメモ。

(完成イメージ)

f:id:aquashine:20200202134132p:plain

■コントローラー

・通常のペジネーションは、ページ数がGETで受けるが、ajaxの場合、POSTでもOK

 

$data = XXXXXXXX;  ←★これが分割表示したい配列とする

$perpage = 10;  ←★1ページ当たりの表示数

$page = $request->input('page'); ←★GETかPOSTで取得した表示させるページ番号

 

//Laravelのcollectヘルパーを使って新しいコネクションを作成

$collection = collect($data);

 

// LengthAwarePaginatorを使う

$items = new LengthAwarePaginator(
            $collection->forPage($page, $perpage),  ←★forPageを使って配列を分割
            count($collection),
            $perpage,
            $page,
            array('path' => $request->url())
        );

//分割したitemsを戻す

return response()->json($items);

 

Ajax

$.ajax({
  type: "POST", ←★POSTでもGETでもOK
  dataType: 'json',
  url: XXXXXX,
  data: {
   'page': page ←★表示させるページ番号
  },
}).done(function(res) {
 //★コントローラーから分割されたitemsを受け取る
});

 

 

基本的にはこれだけでいい。

問題は、Bladeに表示するページングをどうするか。

f:id:aquashine:20200202134132p:plain

 

通常の{{  $hoge->links() }} だとGETでページ遷移してしまう。

結論としては、links()をカスタマイズする必要がある。

 

■追記版のコントローラー

$data = XXXXXXXX;  ←★これが分割表示したい配列とする

$perpage = 10;  ←★1ページ当たりの表示数

$page = $request->input('page'); ←★GETかPOSTで取得した表示させるページ番号

 

//Laravelのcollectヘルパーを使って新しいコネクションを作成

$collection = collect($data);

 

// LengthAwarePaginatorを使う

$items = new LengthAwarePaginator(
            $collection->forPage($page, $perpage),  ←★forPageを使って配列を分割
            count($collection),
            $perpage,
            $page,
            array('path' => $request->url())
        );

 

//ページネーションのHTMLタグをつけて戻す

$res = array();
$res['items'] = $items;
$res['links'] = base64_encode($items->links('ajax_pagination'));//ペジネーションのHTMLタグ
return response()->json($res);

 

 ■viewsの中に、以下のテンプレートを追加

@if ($paginator->lastPage() > 1)
<ul class="pagination">
<li class="page-item {{ ($paginator->currentPage() == 1) ? ' disabled' : 'pointer' }}">
<a class="page-link" data-url="{{ 1 }}">&laquo;</a>
</li>
<li class="page-item {{ ($paginator->currentPage() == 1) ? ' disabled' : 'pointer' }}">
<a class="page-link" data-url="{{ ($paginator->currentPage() == 1) ? 1 : $paginator->currentPage()-1 }}">
<span aria-hidden="true">&lt;</span>
{{-- Previous --}}
</a>
</li>
{{-- デザイン的に入らないのでコメントアウト
@for ($i = 1; $i <= $paginator->lastPage(); $i++)
<li class="page-item {{ ($paginator->currentPage() == $i) ? ' active' : '' }}">
<a class="page-link" data-url="{{ $i) }}">{{ $i }}</a>
</li>
@endfor
--}}
{{-- 上の代わりに現在のページのみ表示 --}}
<li class="page-item active">
<a>{{ $paginator->currentPage() }}</a>
</li>
<li class="page-item {{ ($paginator->currentPage() == $paginator->lastPage()) ? ' disabled' : 'pointer' }}">
<a class="page-link" data-url="{{ ($paginator->currentPage() == $paginator->lastPage()) ? $paginator->lastPage() : $paginator->currentPage()+1 }}">
<span aria-hidden="true">&gt;</span>
{{-- Next --}}
</a>
</li>
<li class="page-item {{ ($paginator->currentPage() == $paginator->lastPage()) ? ' disabled' : 'pointer' }}">
<a class="page-link" data-url="{{ $paginator->lastPage() }}">&raquo;</a>
</li>
</ul>
@endif

ポイントは、通常のlinks()で生成される<a>タグのhrefを、「data-url」に置き換え、

リンク先URLを「ページ番号」にしておくこと。

これでGETで遷移せず、ajaxでページ遷移が可能となる。

 

■追記版のAjaxファイル

$.ajax({
  type: "POST", ←★POSTでもGETでもOK
  dataType: 'json',
  url: XXXXXX,
  data: {
   'page': page ←★表示させるページ番号
  },
}).done(function(res) {
 //ページングタグを受け取り描写
 var pagination_tag = window.atob(res.links);//base64エンコードしているのでデコードが必要

 $("#hoge").prepend(pagination_tag); ←★希望の場所にタグを追加
});

 

■jsファイル

後は簡単で、上のa.page-linkがクリックされると、data属性のページ番号を取得して、

先に作成したajaxを実行する。

$("#hoge").on('click', 'a.page-link', function(){
  var url = $(this).data('url');
  hoge(url);   ←★Ajaxを実行する関数に、ページ版番号を引き渡す
})

※a-.page-linkは動的に後から作成されるため、on('click', 'a.page-link', function) の形にしないとjqueryが動かない。

 

完成版 変更したければ、上記テンプレートでカスタマイズOK

f:id:aquashine:20200202134132p:plain

 

以上

/var/log/httpd のアクセス権変更

/var/log/httpd に入ってログを見たいがPermission deniedでアクセス出来ない。

いつも忘れるので書いておく

 

・グループの確認

cat /etc/group

 

httpdの所有者変更

sudo chown -R root:www /var/log/httpd

 

httpdパーミッション変更

sudo chmod 770 /var/log/httpd

Laractive Admin のインストール

Laravelの管理画面が必要になった。

シンプルな機能のみでよかったので、Laractive Adminを導入することにする。

以下を見ながら導入。

https://enomotodev.hatenablog.com/entry/2018/05/20/001227

 

(1) $ composer require enomotodev/laractive-admin

 (結果)

$ composer require enomotodev/laractive-admin
Using version ^0.1.17 for enomotodev/laractive-admin
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
- Installing intervention/httpauth (2.0.5): Downloading (100%)
- Installing doctrine/event-manager (1.1.0): Downloading (100%)
- Installing doctrine/cache (1.10.0): Downloading (100%)
- Installing doctrine/dbal (v2.10.0): Downloading (100%)
- Installing enomotodev/laractive-admin (v0.1.17):Downloading (100%) )
doctrine/cache suggests installing alcaeus/mongo-php-adapter (Required to use legacy MongoDB driver)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating optimized autoload files
Carbon 1 is deprecated, see how to migrate to Carbon 2.
https://carbon.nesbot.com/docs/#api-carbon-2
You can run './vendor/bin/upgrade-carbon' to get help in updating carbon and other frameworks and libraries that depend on it.
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: anhskohbo/no-captcha
Discovered Package: enomotodev/laractive-admin
Discovered Package: fideloper/proxy
Discovered Package: intervention/httpauth
Discovered Package: jenssegers/agent
Discovered Package: laravel/socialite
Discovered Package: laravel/tinker
Discovered Package: laravelcollective/html
Discovered Package: laravelium/sitemap
Discovered Package: nesbot/carbon
Discovered Package: olssonm/l5-very-basic-auth
Discovered Package: pion/laravel-chunk-upload
Discovered Package: socialiteproviders/manager
Package manifest generated successfully.

 

(2) php artisan laractive-admin:install

(結果)

LaractiveAdmin install successfully!

 

(3) php artisan migrate

 (結果)

DBに、admin_usersが作成される

 

(4) php artisan laractive-admin:seed

 

(5)  ドメイン/adminにアクセスすると、もう管理画面へのログインが出来ている。

でログイン

 

(6) AdiminUsersからメールアドレス、パスワード変更。

 

シンプルだがこれでいい。

早くて簡単だった。

 

======================

インストールは出来たが、その後が使いにくい・・・

githubも反応なし。新規で入れるなら、止めた方がいいレベル。

 

<コントローラーの設置方法>

・app/Adminに入れる。

・ファイル名がそのまま管理画面のサイドメニューのタイトルになる

<?php

namespace App\Admin;
use Illuminate\Http\Request;

//これは必須
use Enomotodev\LaractiveAdmin\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class BankOrder extends Controller
{
    //これは必須
    public $model = \App\BankOrder::class;

    public function index()
    {
        $orders = DB::table('BankOrder')->get();
        return view('admin.bankorder'compact('orders'));
    }

    public function bankorderupdated(Request $request)
    {
        logger('updated');
    }

}

 

 

<ルーティング>

・vendor/enomotodev/laractive-admin/src/ServiceProvider.php に書くしかないのか

        // ルーティング追加
        $this->getRouter()->group([
            'middleware' => ['web''laractive-admin''httpauth''sharing-data'],
            'prefix' => $this->app['config']->get('laractive-admin.route_prefix'),
        ], function ($router) {
            $router->get("bankorder/updated", [
                'uses' => '\App\Admin\BankOrder@bankorderupdated',
            ]);
        });

 

 

 

Laravel の env をキャッシュ化

https://readouble.com/laravel/5.8/ja/deployment.html#optimizing-configuration-loading

上記を読むと、Laravelのenvはcacheして使えとのこと。

 

ただし、

開発時にconfig:cacheコマンドを実行する場合は、設定ファイルの中だけで、env関数を呼び出していることを確認してください。設定ファイルがキャッシュされてしまうと、.envファイルはロードされなくなり、env関数の呼び出し結果は全てnullになります。

 とのことで、コントローラーやBladeの中でenv()を使っているものがあれば、

configの中に定義し直し、config('myconst.DOMAIN') のようにして使う。

 

以下、

php artisan config:cache

でキャッシュ化。

 

.envを更新するときは、

php artisan config:clear 

 .envをアップし直したら、再度、

php artisan config:cache

でキャッシュ化。

 

 

 

 

 

Amazon LinuxでPHPのバージョンを7.0→7.3にアップグレードする覚え書き

(事前準備メモ)

新しいEC2インスタンスを立ち上げ、そこで検証する。

① 稼働中のEC2からAMIを作成

② AMI→起動を選択。その際、セキュリティーグループやVPCなどは、起動中のEC2と合わせる

③ インスタンス起動後、既存のインスタンスIPv4パブリックIPをクリック→さらに表示されたIPをクリック

④ Elastic IP アドレスの画面で、IPをチェックし、「アクション」→ElasticIPアドレスの関連付けを選択

⑤ 「インスタンス」「プライベートIPアドレス」を既存のものに合わせる
(「再度関連付け」はチェックしなかった)

⑥ 「ロードバランサー」を開け、「インスタンスの編集」でインスタンスを切り替える

⑦ マウントが切れるので再マウントする
sudo umount /var/www/html/app/laravel/storage/app/public/mount
sudo mount -a

⑧ WorkbenchでRDSに繋がらなくなった。

C:\Users\tsuch\AppData\Roaming\MySQL\Workbench\ssh\known_hostsを開け、

該当IPの行を削除し、SSHホスト名を新インスタンスに変更して接続する

ーーーーーー 事前準備ここまで ーーーーーーー

 

基本的には以下のサイトを見ながら進める

https://blog.katsubemakito.net/php/upgrade-php71-to-73

 

① $ cat /etc/os-release

NAME="Amazon Linux AMI"
VERSION="2018.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2018.03"
PRETTY_NAME="Amazon Linux AMI 2018.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2018.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"

 

② $ 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 

③ $ yum list installed | grep php

php70.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-cli.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-common.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-devel.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-gd.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-json.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-mbstring.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-mcrypt.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-mysqlnd.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-pdo.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-process.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-xml.x86_64 7.0.33-1.32.amzn1 @amzn-updates

 

④ 追加手順

# yumからインストール可能なものを確認

$ sudo yum list available | grep php73

php73.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-bcmath.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-build.x86_64 2.0-1.el6.remi remi-safe
php73-cli.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-common.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-dba.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-dbg.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-devel.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-embedded.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-enchant.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-fpm.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-gd.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-gmp.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-imap.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-intl.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-json.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-ldap.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-mbstring.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-mysqlnd.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-odbc.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-opcache.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-pdo.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-pdo-dblib.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-pgsql.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-php.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-ast.x86_64 1.0.5-1.el6.remi remi-safe
php73-php-bcmath.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-brotli.x86_64 0.7.0-1.el6.remi remi-safe
php73-php-cli.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-common.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-componere.x86_64 3.1.1-1.el6.remi remi-safe
php73-php-dba.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-dbg.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-devel.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-embedded.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-enchant.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-fpm.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-gd.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-gmp.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-horde-horde-lz4.x86_64 1.0.10-6.el6.remi remi-safe
php73-php-imap.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-interbase.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-intl.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-ioncube-loader.x86_64 10.3.9-1.el6.remi remi-safe
php73-php-json.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-ldap.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-litespeed.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-lz4.x86_64 0.3.6-1.el6.remi remi-safe
php73-php-maxminddb.x86_64 1.6.0-1.el6.remi remi-safe
php73-php-mbstring.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-mysqlnd.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-oci8.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-odbc.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-opcache.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-pdo.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-pdo-dblib.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-pear.noarch 1:1.10.10-4.el6.remi remi-safe
php73-php-pecl-ahocorasick.x86_64 0.0.7-1.el6.remi remi-safe
php73-php-pecl-amqp.x86_64 1.9.4-6.el6.remi remi-safe
php73-php-pecl-apcu.x86_64 5.1.18-1.el6.remi remi-safe
php73-php-pecl-apcu-bc.x86_64 1.0.5-1.el6.remi remi-safe
php73-php-pecl-apcu-devel.x86_64 5.1.18-1.el6.remi remi-safe
php73-php-pecl-apfd.x86_64 1.0.1-12.el6.remi remi-safe
php73-php-pecl-base58.x86_64 0.1.4-1.el6.remi remi-safe
php73-php-pecl-bitset.x86_64 3.0.1-3.el6.remi remi-safe
php73-php-pecl-cassandra.x86_64 1.3.2-4.el6.remi remi-safe
php73-php-pecl-cmark.x86_64 1.2.0-1.el6.remi remi-safe
php73-php-pecl-couchbase2.x86_64 2.6.1-1.el6.remi remi-safe
php73-php-pecl-crypto.x86_64 0.3.1-5.el6.remi remi-safe
php73-php-pecl-datadog-trace.x86_64 0.36.0-1.el6.remi remi-safe
php73-php-pecl-dbase.x86_64 7.0.1-1.el6.remi remi-safe
php73-php-pecl-dio.x86_64 0.1.0-6.el6.remi remi-safe
php73-php-pecl-druid.x86_64 1.0.0-3.el6.remi remi-safe
php73-php-pecl-ds.x86_64 1.2.9-1.el6.remi remi-safe
php73-php-pecl-eio.x86_64 2.0.4-4.el6.remi remi-safe
php73-php-pecl-env.x86_64 0.2.1-7.el6.remi remi-safe
php73-php-pecl-ev.x86_64 1.0.8-1.el6.remi remi-safe
php73-php-pecl-event.x86_64 2.5.3-1.el6.remi remi-safe
php73-php-pecl-fann.x86_64 1.1.1-6.el6.remi remi-safe
php73-php-pecl-gearman.x86_64 2.0.6-1.el6.remi remi-safe
php73-php-pecl-gender.x86_64 1.1.0-13.el6.remi remi-safe
php73-php-pecl-geoip.x86_64 1.1.1-6.el6.remi remi-safe
php73-php-pecl-geospatial.x86_64 0.2.1-1.el6.remi remi-safe
php73-php-pecl-gmagick.x86_64 2.0.5~RC1-3.el6.remi remi-safe
php73-php-pecl-gnupg.x86_64 1.4.0-6.el6.remi remi-safe
php73-php-pecl-hprose.x86_64 1.6.8-1.el6.remi remi-safe
php73-php-pecl-hrtime.x86_64 0.6.0-5.el6.remi remi-safe
php73-php-pecl-http.x86_64 3.2.3-1.el6.remi remi-safe
php73-php-pecl-http-devel.x86_64 3.2.3-1.el6.remi remi-safe
php73-php-pecl-http-message.x86_64 0.2.1-1.el6.remi remi-safe
php73-php-pecl-http-message-devel.x86_64
php73-php-pecl-igbinary.x86_64 3.0.1-1.el6.remi remi-safe
php73-php-pecl-igbinary-devel.x86_64 3.0.1-1.el6.remi remi-safe
php73-php-pecl-imagick.x86_64 3.4.4-1.el6.remi remi-safe
php73-php-pecl-imagick-devel.x86_64 3.4.4-1.el6.remi remi-safe
php73-php-pecl-inotify.x86_64 2.0.0-8.el6.remi remi-safe
php73-php-pecl-ip2location.x86_64 8.0.1-3.el6.remi remi-safe
php73-php-pecl-json-post.x86_64 1.0.1-11.el6.remi remi-safe
php73-php-pecl-krb5.x86_64 1.1.2-6.el6.remi remi-safe
php73-php-pecl-krb5-devel.x86_64 1.1.2-6.el6.remi remi-safe
php73-php-pecl-leveldb.x86_64 0.2.1-4.el6.remi remi-safe
php73-php-pecl-lua.x86_64 2.0.6-1.el6.remi remi-safe
php73-php-pecl-luasandbox.x86_64 3.0.3-1.el6.remi remi-safe
php73-php-pecl-lzf.x86_64 1.6.7-1.el6.remi remi-safe
php73-php-pecl-mailparse.x86_64 3.0.4-1.el6.remi remi-safe
php73-php-pecl-mcrypt.x86_64 1.0.3-1.el6.remi remi-safe
php73-php-pecl-memcache.x86_64 4.0.5.2-1.el6.remi remi-safe
php73-php-pecl-memcached.x86_64 3.1.5-1.el6.remi remi-safe
php73-php-pecl-memprof.x86_64 2.0.0-5.el6.remi remi-safe
php73-php-pecl-mogilefs.x86_64 0.9.3.1-8.el6.remi remi-safe
php73-php-pecl-molten.x86_64 0.1.2~beta-5.el6.remi remi-safe
php73-php-pecl-mongodb.x86_64 1.6.1-1.el6.remi remi-safe
php73-php-pecl-msgpack.x86_64 2.0.3-1.el6.remi remi-safe
php73-php-pecl-msgpack-devel.x86_64 2.0.3-1.el6.remi remi-safe
php73-php-pecl-mustache.x86_64 0.7.4-5.el6.remi remi-safe
php73-php-pecl-mysql.x86_64 1.0.0-0.20.20180226.647c933.el6.remi
php73-php-pecl-mysqlnd-azure.x86_64 1.0.2-1.el6.remi remi-safe
php73-php-pecl-nsq.x86_64 3.5.0-1.el6.remi remi-safe
php73-php-pecl-oauth.x86_64 2.0.4-1.el6.remi remi-safe
php73-php-pecl-oci8.x86_64 2.2.0-1.el6.remi remi-safe
php73-php-pecl-opencensus.x86_64 0.2.2-3.el6.remi remi-safe
php73-php-pecl-parle.x86_64 0.8.1-4.el6.remi remi-safe
php73-php-pecl-pcov.x86_64 1.0.6-1.el6.remi remi-safe
php73-php-pecl-pdflib.x86_64 4.1.3-1.el6.remi remi-safe
php73-php-pecl-propro.x86_64 2.1.0-3.el6.remi remi-safe
php73-php-pecl-propro-devel.x86_64 2.1.0-3.el6.remi remi-safe
php73-php-pecl-protobuf.x86_64 3.11.2-1.el6.remi remi-safe
php73-php-pecl-psr.x86_64 0.7.0-1.el6.remi remi-safe
php73-php-pecl-psr-devel.x86_64 0.7.0-1.el6.remi remi-safe
php73-php-pecl-radius.x86_64 1.4.0-0.6.b1.el6.remi remi-safe
php73-php-pecl-raphf.x86_64 2.0.1-1.el6.remi remi-safe
php73-php-pecl-raphf-devel.x86_64 2.0.1-1.el6.remi remi-safe
php73-php-pecl-rar.x86_64 4.0.0-4.el6.remi remi-safe
php73-php-pecl-rdkafka.x86_64 3.1.3-1.el6.remi remi-safe
php73-php-pecl-rdkafka4.x86_64 4.0.2-1.el6.remi remi-safe
php73-php-pecl-redis4.x86_64 4.3.0-1.el6.remi remi-safe
php73-php-pecl-redis5.x86_64 5.1.1-1.el6.remi remi-safe
php73-php-pecl-request.x86_64 1.0.0-0.10.b2.el6.remi remi-safe
php73-php-pecl-rrd.x86_64 2.0.1-6.el6.remi remi-safe
php73-php-pecl-runkit7.x86_64 3.0.0-1.el6.remi remi-safe
php73-php-pecl-scoutapm.x86_64 1.0.2-1.el6.remi remi-safe
php73-php-pecl-scrypt.x86_64 1.4.2-6.el6.remi remi-safe
php73-php-pecl-seasclick.x86_64 0.1.0-1.el6.remi remi-safe
php73-php-pecl-seaslog.x86_64 2.0.2-1.el6.remi remi-safe
php73-php-pecl-selinux.x86_64 0.4.2-1.el6.remi remi-safe
php73-php-pecl-skywalking.x86_64 3.2.4-1.el6.remi remi-safe
php73-php-pecl-solr2.x86_64 2.5.0-1.el6.remi remi-safe
php73-php-pecl-sphinx.x86_64 1.4.0-0.6.20181116.d958afb.el6.remi
php73-php-pecl-ssdeep.x86_64 1.1.0-4.el6.remi remi-safe
php73-php-pecl-ssh2.x86_64 1.2-1.el6.remi remi-safe
php73-php-pecl-stats.x86_64 2.0.3-6.el6.remi remi-safe
php73-php-pecl-stomp.x86_64 2.0.2-3.el6.remi remi-safe
php73-php-pecl-svm.x86_64 0.2.3-1.el6.remi remi-safe
php73-php-pecl-svn.x86_64 2.0.3-1.el6.remi remi-safe
php73-php-pecl-swoole4.x86_64 4.4.13-1.el6.remi remi-safe
php73-php-pecl-sync.x86_64 1.1.1-5.el6.remi remi-safe
php73-php-pecl-taint.x86_64 2.0.5-1.el6.remi remi-safe
php73-php-pecl-tcpwrap.x86_64 1.2.0-5.el6.remi remi-safe
php73-php-pecl-termbox.x86_64 0.1.3-7.el6.remi remi-safe
php73-php-pecl-timecop.x86_64 1.2.10-9.el6.remi remi-safe
php73-php-pecl-trace.x86_64 1.0.1-0.5.beta.el6.remi remi-safe
php73-php-pecl-trader.x86_64 0.5.0-3.el6.remi remi-safe
php73-php-pecl-translit.x86_64 0.6.3-1.el6.remi remi-safe
php73-php-pecl-uopz.x86_64 6.1.1-1.el6.remi remi-safe
php73-php-pecl-uploadprogress.x86_64 1.0.3.1-18.el6.remi remi-safe
php73-php-pecl-uuid.x86_64 1.1.0-1.el6.remi remi-safe
php73-php-pecl-vld.x86_64 0.16.0-1.el6.remi remi-safe
php73-php-pecl-xattr.x86_64 1.3.0-7.el6.remi remi-safe
php73-php-pecl-xdebug.x86_64 2.9.0-1.el6.remi remi-safe
php73-php-pecl-xdiff.x86_64 2.0.1-5.el6.remi remi-safe
php73-php-pecl-xhprof.x86_64 2.1.4-1.el6.remi remi-safe
php73-php-pecl-xlswriter.x86_64 1.3.2-2.el6.remi remi-safe
php73-php-pecl-xmldiff.x86_64 1.1.2-13.el6.remi remi-safe
php73-php-pecl-xmldiff-devel.x86_64 1.1.2-13.el6.remi remi-safe
php73-php-pecl-xxtea.x86_64 1.0.11-7.el6.remi remi-safe
php73-php-pecl-yac.x86_64 2.0.2-4.el6.remi remi-safe
php73-php-pecl-yaconf.x86_64 1.0.8-0.3.20180622.d5f267a.el6.remi
php73-php-pecl-yaconf-devel.x86_64 1.0.8-0.3.20180622.d5f267a.el6.remi
php73-php-pecl-yaf.x86_64 3.0.9-1.el6.remi remi-safe
php73-php-pecl-yaml.x86_64 2.0.4-1.el6.remi remi-safe
php73-php-pecl-yar.x86_64 2.0.5-1.el6.remi remi-safe
php73-php-pecl-yaz.x86_64 1.2.3-1.el6.remi remi-safe
php73-php-pecl-zip.x86_64 1.15.5-1.el6.remi remi-safe
php73-php-pecl-zmq.x86_64 1.1.3-8.el6.remi remi-safe
php73-php-pgsql.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-phalcon3.x86_64 3.4.5-1.el6.remi remi-safe
php73-php-phalcon4.x86_64 4.0.0-1.el6.remi remi-safe
php73-php-phpiredis.x86_64 1.0.0-10.el6.remi remi-safe
php73-php-pinba.x86_64 1.1.1-4.el6.remi remi-safe
php73-php-process.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-pspell.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-recode.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-smbclient.x86_64 1.0.0-1.el6.remi remi-safe
php73-php-snappy.x86_64 0.1.9-3.el6.remi remi-safe
php73-php-snmp.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-snuffleupagus.x86_64 0.5.0-1.el6.remi remi-safe
php73-php-soap.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-sodium.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-tidy.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-wkhtmltox.x86_64 0.3.2-0.4.20171112.fecc9af.el6.remi
php73-php-xml.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-xmlrpc.x86_64 7.3.13-1.el6.remi remi-safe
php73-php-zephir-parser.x86_64 1.3.3-1.el6.remi remi-safe
php73-php-zephir-parser-devel.x86_64 1.3.3-1.el6.remi remi-safe
php73-php-zstd.x86_64 0.7.5-1.el6.remi remi-safe
php73-process.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-pspell.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-recode.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-runtime.x86_64 2.0-1.el6.remi remi-safe
php73-scldevel.x86_64 2.0-1.el6.remi remi-safe
php73-snmp.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-soap.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-tidy.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-unit-php.x86_64 1.13.0-1.el6.remi remi-safe
php73-uwsgi-plugin-php.x86_64 2.0.17.1-2.el6.remi remi-safe
php73-xhprof.noarch 2.1.4-1.el6.remi remi-safe
php73-xml.x86_64 7.3.11-1.21.amzn1 amzn-updates ←★自分に必要
php73-xmlrpc.x86_64 7.3.11-1.21.amzn1 amzn-updates
php73-zephir.noarch 0.10.16-1.el6.remi remi-safe
 

 ※php70-mcryptがphp73に見つからなかったが、調べるとphp72で無くなったようだ

 

⑤ 古いバージョンを削除

sudo yum erase php70*

=======================
Package Arch Version Repository Size
=======================
Removing:
php70 x86_64 7.0.33-1.32.amzn1 @amzn-updates 9.4 M
php70-cli x86_64 7.0.33-1.32.amzn1 @amzn-updates 12 M
php70-common x86_64 7.0.33-1.32.amzn1 @amzn-updates 7.9 M
php70-devel x86_64 7.0.33-1.32.amzn1 @amzn-updates 9.1 M
php70-gd x86_64 7.0.33-1.32.amzn1 @amzn-updates 725 k
php70-json x86_64 7.0.33-1.32.amzn1 @amzn-updates 72 k
php70-mbstring x86_64 7.0.33-1.32.amzn1 @amzn-updates 2.7 M
php70-mcrypt x86_64 7.0.33-1.32.amzn1 @amzn-updates 79 k
php70-mysqlnd x86_64 7.0.33-1.32.amzn1 @amzn-updates 858 k
php70-pdo x86_64 7.0.33-1.32.amzn1 @amzn-updates 355 k
php70-process x86_64 7.0.33-1.32.amzn1 @amzn-updates 157 k
php70-xml x86_64 7.0.33-1.32.amzn1 @amzn-updates 787 k

Transaction Summary
============================================
Remove 12 Packages

 

⑥ 再インストール

sudo yum install php73 php73-cli php73-common php73-devel php73-gd php73-json php73-mbstring php73-mysqlnd php73-pdo php73-xml php73-process

 ⑦ 確認

php -v

PHP 7.3.11 (cli) (built: Oct 31 2019 18:30:52) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies 

 

⑧ /etc/php-7.3.iniを編集

$ sudo cp /etc/php-7.3.ini /etc/php-7.3.ini.org
$ sudo vi /etc/php-7.3.ini

以下の項目を/XXXで検索して、:wqで保存して終了
date.timezone = Asia/Tokyo
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
memory_limit = 1000M
expose_php = Off

 ⑨ sudo service httpd restart で再開して完了

 

 

Laravel 5.5 にreCAPTCHA導入覚え書き

Laravelにスパムの会員登録が急激に増えてきたので、その対策。

完成図は以下。

 

f:id:aquashine:20191126101535p:plain

以下を導入した。

https://github.com/anhskohbo/no-captcha

 

1.SSHでログインして、以下のコマンドを打つ

composer require anhskohbo/no-captcha

完了後、composer.jsonを見たら、以下が追加されている。

    "require": {
        "anhskohbo/no-captcha""^3.1",
 

 

2..envに以下を追加

NOCAPTCHA_SECRET=secret-key
NOCAPTCHA_SITEKEY=site-key

シークレットキーとサイトキーはGoogleのサイトから取得できる

 

※Lravel5.5以上は、php artisan vendor:publish ・・・・などのコマンドは不要

 

3.自分の場合、新規会員登録ページにrecapchaを載せたかったため、register.blade.phpに以下を追記。

<div class="form-group{{ $errors->has('g-recaptcha-response') ? ' has-error' : '' }}">
 <div class="col-sm-6 col-sm-offset-4">
  {!! NoCaptcha::renderJs() !!}
  {!! NoCaptcha::display() !!}
  @if ($errors->has('g-recaptcha-response'))
  <span class="help-block">
   <strong>{{ $errors->first('g-recaptcha-response') }}</strong>
  </span>
  @endif
 </div>
</div>

4.registerController.phpに以下を追記

return Validator::make($data, [
 'name' => 'required|string|max:255',
 'email' => 'required|string|email|max:255|unique:users',
 'password' => 'required|string|min:6|confirmed',
 'g-recaptcha-response' => 'required|captcha',  ←★ここを追記
]);

 

5.エラーメッセージをresources/lang/ja/validation に追記

        'g-recaptcha-response' => 'チェック'
 

 

以上。

Laravelに管理画面用認証追加

qiita.com

 

coinbaby8.com

 

1.  Admins テーブル作成

php artisan make:migration Admins

 

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class Admins extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('Admins'function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->string('email')->unique();
                $table->integer('role');
                $table->string('password');
                $table->rememberToken();
                $table->timestamps();
            });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}

 

php artisan migrate

 

2.  モデル作成

php artisan make:model Admin

※User.phpをコピーしてclass名をAdminに変更する

class Admin extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    
    protected $table = 'Admins';
  protected $fillable = [
        'name''email''password''role'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password''remember_token',
    ];

}

 

3.  config/auth.phpの編集

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
 
        //管理者用追加
        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],
    ],

 

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        //管理者用追加
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],
    ],

 

4.  ログインしていない時のリダイレクト先の設定

 app/Exceptions/Handler.php に以下を追記。

これで、web.phpで、'middleware' => 'auth:admin'で設定したページに、ログインせずにアクセスすると、admin/loginにリダイレクトされる。

(こちらも参考)

https://readouble.com/laravel/5.6/ja/authentication.html

 

//管理画面用に追加
    public function unauthenticated($requestAuthenticationException $exception)
    {
        if($request->expectsJson()){
            return response()->json(['message' => $exception->getMessage()], 401);
        }
 
        if (in_array('admin'$exception->guards())) {
            return redirect()->guest(route('admin.login')); ←★ルーティングで設定したログインページ
        }
 
        return redirect()->guest(route('login'));
    }

 

ログイン後に、再度認証が必要なページにアクセスした際のリダイレクト先は、

/var/www/html/app/laravel/app/Http/Middleware/RedirectIfAuthenticated.php

に追記する。

 

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($requestClosure $next, $guard = null)
    {
        //変更。オリジナルは以下。
        //if (Auth::guard($guard)->check()) {
        //    return redirect('/home');
        //}
        if (Auth::guard($guard)->check()) {
            if ($guard=='admin') { //config/auth.phpで追加した管理者用のguards名
                return redirect('/admin/home');
            } else {
                return redirect()->intended('/home');
            }
        }
        
        return $next($request);
    }
}

 

5.  ルーティングの設定

管理者用に以下をweb.phpに追加

 

/*--------------------------------------------------------------------------
| Admin 認証不要
|--------------------------------------------------------------------------*/
Route::group(['prefix' => 'admin'], function() {
    Route::get('/',         function () { return redirect('/admin/login'); });
    Route::get('login',     'Admin\LoginController@showLoginForm')->name('admin.login');
    Route::post('login',    'Admin\LoginController@login');
});
 
/*--------------------------------------------------------------------------
| Admin ログイン後
|--------------------------------------------------------------------------*/
Route::group(['prefix' => 'admin''middleware' => 'auth:admin'], function() {
    Route::post('logout',   'Admin\LoginController@logout')->name('admin.logout');
    Route::get('home',      'Admin\HomeController@index')->name('admin.home');
});

 

 

6.  コントローラーの作成

app/Http/Controllers/の下にAdminフォルダをつくって、

その中にapp/Http/Controllers/Authの中のLoginController.phpとHomeController.phpをコピーする。

 

<LoginController.php>

<?php

//namespace App\Http\Controllers\Auth;
namespace App\Http\Controllers\Admin;//変更

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;


class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/admin/home';// 管理者のログイン後のリダイレクト先

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest:admin')->except('logout');//変更
    }

    public function showLoginForm()
    {
        return view('admin.login');//変更
    }
    protected function guard()
    {
        return Auth::guard('admin');  //変更
    }
    
    public function logout(Request $request)
    {
        Auth::guard('admin')->logout();  //変更
        $request->session()->flush();
        $request->session()->regenerate();
 
        return redirect('/admin/login');  //変更
    }
}

 

 

 <HomeController.php>

<?php

namespace App\Http\Controllers\Admin//Adminに変更

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth:admin');//変更
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('admin.home');//変更
    }

}

 

 7.  ビューの作成

resources/viewsの下にadminフォルダをつくって、resources/views/auth/

login.blade.phpとresources/views/home.blade.phpをコピー。

 

また、resources/views/layouts/app.blade.phpをコピーして

app_admin.blade.phpを作成。

route('login')

のように、route()の箇所を全て

route('admin.login')

のように修正する。

 

8.  管理者用アカウントの作成

php artisan tinker

$admin = new App\Admin;

$admin->name = "hogehoge";

$admin->email = "hoge@hoge.com";

$admin->password = bcrypt("hogehoge");

$admin->save();

ctrl+c で終了

 

9.  通常のユーザーとセッション変数を分ける

(参考サイト)

https://qiita.com/sola-msr/items/65634826bcedf3ea4ca4

 

<?php
//管理画面用にセッションを分ける

//return [
$sessConf = [

    /*
    |--------------------------------------------------------------------------
    | Default Session Driver
    |--------------------------------------------------------------------------
    |
 

    途中略

];

//以下、adminの場合はセッションん名を変える
$uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';

// 管理者側用セッション
if (strstr($uri'/admin/') !== false || $uri === '/admin/login') {
    $sessConf['cookie'] = env(
        'SESSION_COOKIE_ADMIN',
        str_slug(env('APP_NAME''laravel'), '_').'_admin_session'
    );
}

return $sessConf;
 

 

.envに以下を追記

SESSION_COOKIE=hoge_user
SESSION_COOKIE_ADMIN=hoge_admin

 

以上

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EC2を立ち上げてからFTP接続可になるまでの手順覚え書き

インスタンスの立ち上げ>
Amazon Linux AMI 2018.03.0を選択
キーペアは事前に新規で作成しておく

 

<Swapの作成> ←EC2のインスタンスタイプがmicroだとどこかでメモリ不足になる
sudo /bin/dd if=/dev/zero of=/var/swap bs=1M count=1024
sudo chmod 600 /var/swap
sudo /sbin/mkswap /var/swap
sudo /sbin/swapon /var/swap

 

<サーバーの時間変更>
cp /etc/localtime /etc/localtime.org
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/l
ocaltime

sudo cp /etc/sysconfig/clock /etc/sysconfig/clock
.org

sudo vi /etc/sysconfig/clock

ZONE="Asia/Tokyo"
UTC=false
に変更

一旦、AWSインスタンスを再起動し、
dateで日本時間になっているか確認

 

Apacheのインストール>
httpd -version
(もし2.2系が入っている場合は↓)
sudo yum remove -y httpd
sudo yum remove -y httpd-tools

 

sudo yum install httpd24
sudo service httpd start
sudo chkconfig httpd on

(参考サイト)
https://utano.jp/entry/2016/10/amazon-linux-apache-24-install/

 

<PHP72のインストール>
sudo yum install php72 php72-devel php72-gd php72-mbstring php72-mysqlnd php72-pdo php72-xml

 

とりあえずこれくらいオプションを入れておけば、事足りるのかな。

(参考サイト)
https://miyabi-lab.space/blog/16

 

php.iniの設定>
sudo cp /etc/php.ini /etc/php.ini.org
sudo vi /etc/php.ini

- error_log = php_errors.log
+ error_log = /var/log/php_errors.log

- date.timezone =
+ date.timezone = Asia/Tokyo

- ;mbstring.language = Japanse
+ mbstring.language = Japanese

- ;mbstring.detect_order = auto
+ mbstring.detect_order = auto

 

MySQLのインストール> ←RDSを使えば不要
sudo yum list available | grep mysql*
sudo yum install -y mysql57-server
sudo chkconfig mysqld on
mydql --version

 

<EC2側の設定>
(参考サイト)
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html

EC2のインスタンスを選択し、「セキュリティーグループ」の「launch-wizard-3」をクリック

アクションーインバウンドのルールの編集

ルールの追加で、HTTPとHTTPSを追加

以上で、ブラウザでIPアドレスでアクセスするとテストページが表示される

 

<FTPのインストール>
https://qiita.com/sakuraya/items/b7e513a6add1dfc198b5

sudo yum -y install vsftpd
sudo vi /etc/vsftpd/vsftpd.conf

// 以下の3行のコメントアウトを外す
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

// 以下の1行を追加
user_config_dir=/etc/vsftpd/user_conf

touch /etc/vsftpd/chroot_list ←↑はmkdirになっているが間違い。
sudo vi /et/vsftpd/chroot_list
ftp-userを追加して、:wq

sudo mkdir /etc/vsftpd/user_conf
sudo touch /etc/vsftpd/user_conf/ftp-user
sudo vi /etc/vsftpd/user_conf/ftp-user

local_root=/
を追加

ユーザー追加
sudo useradd ftp-user
sudo passwd ftp-user


sudo chown ftp-user /var/www
sudo chmod 755 /var/www

ポートを開ける
EC2のインスタンスを選択し、「セキュリティーグループ」の「launch-wizard-3」をクリック

アクションーインバウンドのルールの編集

ルールの追加で、
「カスタムTCPルール」
「ポート:6001-60010」
「ソース:0.0.0.0/0」

「カスタムTCPルール」
「ポート:21」
「ソース:0.0.0.0/0」

を追加。

FTP起動
sudo service vsftpd start
sudo chkconfig vsftpd on

以上で、FTP接続可能になる。

 

===== 以下、追加の設定 =====

<composerのインストール>

https://qiita.com/k-ando/items/b022fcea2cf76d9814a9

 

curl -sS https://getcomposer.org/installer | php

sudo mv composer.phar /usr/local/bin/composer

 

<EC2からRDSに接続>

1. RDSでデーターベースを作成し、セキュリティーグループ(タイプ:EC2 Security Group - Inbound)をクリック

 

2.  「インバウンド」ー「編集」を押し、

タイプ:「MYSQL/Aurora」

ルール:接続元のEC2インスタンスで「セキュリティーグループ」のリンクを押し、表示された『グループID』を入力

 

これでEC2を踏み台にして、RDSに接続できる。

 

以上 

laravelium/sitemap のインストール

gitlab.com

1.自分の環境はLaravel5.5のため、composer.jsonに以下を記述する。

"require": {
"php": ">=7.0.0",
"aws/aws-sdk-php": "~3.0",
  ・・・・
・・・・
"laravelium/sitemap": "2.7.*" ←★ここを追加
},

 

2.composer updateで必要なファイルをインストール

composer update laravelium/sitemap

 

3.必要なファイルを生成

php artisan vendor:publish --provider="Laravelium\Sitemap\SitemapServiceProvider"

 

ここまで出来れば後は簡単。

 

4.route/web.phpに以下を追加

Route::get('/sitemap', 'SiteMapController@sitemap');

 

5.コントローラーの作成

php artisan make:controller SiteMapController

 

6.後は作成したコントローラーにURLを書いていく

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\URL;
use Carbon\Carbon;

class SiteMapController extends Controller
{
    public function sitemap()
    {
        // create new sitemap object
        $sitemap = App::make("sitemap");
        $now = Carbon::now();

        //ここからサイトマップに追加
        $sitemap->add(URL::to('/'), $now, '1.0', 'daily');
        $sitemap->add(URL::to('/XXXXX'), $now, '1.0', 'daily');

 

        //必要があれば、DBからページを読み込み、サイトマップに追加する

       $books = Books::where('open', 2)->where('del', 0)->orderBy('id', 'desc')->get();
      foreach ($books as $book)
      {
            $sitemap->add(URL::to('/viewer/' . $book->book_id), $book->updated_at, '0.8', 'daily');
       }

        return $sitemap->render('xml');
    }
}

 

7.URL/sitemap にアクセスすると、サイトマップが表示される。

 

以上

 

 

 

 

 

 

 

 

 

ImagemagickでCPU100%回避

tech.clickyourstyle.com

 

まずは、自分の設定値を確認

identify -list resource 

 

/etc/httpd/conf/httpd.conf に以下を追記

SetEnv OMP_NUM_THREADS 1

その後、以下を実行

$ sudo service httpd configtest
Syntax OK
$ sudo service httpd reload

 

以上

 

確かに処理が早くなった。CPUの負荷はどうだろう。下がったのだろうか。

 

(メモサイト)

techlife.cookpad.com

 

policy.xmlで編集する場合

1.policy.xmlの場所を探す 

find /usr | grep "policy.xml"

/usr/local/etc/ImageMagick-7/policy.xml

 

2.sudo vi /usr/local/etc/ImageMagick-7/policy.xml で編集し、

<policymap>
</policymap>

の中に以下を追記

<policy domain="resource" name="thread" value="1"/>

 

これでもいい。