コミットを比較
3 コミット
91b33aa65f
...
facf7b9797
作成者 | SHA1 | 日付 |
---|---|---|
守矢諏訪子 | facf7b9797 | |
守矢諏訪子 | d8ade0d805 | |
守矢諏訪子 | 85d50caa09 |
|
@ -39,41 +39,6 @@ class Kernel extends ConsoleKernel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})->everyMinute();
|
})->everyMinute();
|
||||||
$schedule->call(function () {
|
|
||||||
$dbbckp = '/work/storage/backup/mysql/';
|
|
||||||
$flbckp = '/work/storage/backup/file/';
|
|
||||||
$week = 604800; // 1週間
|
|
||||||
$fname = date('Ymd').date('H'); // 日付+時
|
|
||||||
|
|
||||||
// DBのバックアップ
|
|
||||||
exec('/usr/bin/mysqldump --no-tablespaces --user='.config('database.connections.mysql.username').' --host='.config('database.connections.mysql.host').' --password='.config('database.connections.mysql.password').' --databases '.config('database.connections.mysql.database').' > '.$dbbckp.$fname.'_mysql.sql');
|
|
||||||
|
|
||||||
// GZIPでDBを圧縮する(ストレージ為)
|
|
||||||
exec('/bin/gzip '.$dbbckp.$fname.'_mysql.sql');
|
|
||||||
|
|
||||||
// ファイルのバックアップ
|
|
||||||
exec('/bin/tar zcfv '.$flbckp.$fname.'.tar.gz /work/storage/app/private/*');
|
|
||||||
|
|
||||||
// 全てのSQLファイルを読み込むと、古いやつを削除する。
|
|
||||||
foreach (scandir($dbbckp) as $s) {
|
|
||||||
if ($s == '.' || $s == '..') continue;
|
|
||||||
$t = str_replace('_mysql.sql.gz', '', $s); // extの削除
|
|
||||||
$t = preg_replace('/[\w\d]{2}$/', '', $t); // 時間の削除
|
|
||||||
if (strtotime($t) < time()-604800) {
|
|
||||||
exec('/bin/rm -rf '.$dbbckp.$s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 全てのTARファイルを読み込むと、古いやつを削除する。
|
|
||||||
foreach (scandir($flbckp) as $s) {
|
|
||||||
if ($s == '.' || $s == '..') continue;
|
|
||||||
$t = str_replace('.tar.gz', '', $s); // extの削除
|
|
||||||
$t = preg_replace('/[\w\d]{2}$/', '', $t); // 時間の削除
|
|
||||||
if (strtotime($t) < time()-604800) {
|
|
||||||
exec('/bin/rm -rf '.$flbckp.$s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})->twiceDaily(0, 12);
|
|
||||||
// $schedule->command('inspire')->hourly();
|
// $schedule->command('inspire')->hourly();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,10 @@ trait AuthenticationTrait {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkSession () {
|
public function checkSession () {
|
||||||
|
if ($this->getGuard() == 'admins') {
|
||||||
|
ManageVisiters::create(['ip_address' => $_SERVER['REMOTE_ADDR'], 'host' => gethostbyaddr($_SERVER['REMOTE_ADDR']), 'user_agent' => $_SERVER['HTTP_USER_AGENT']]);
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($_COOKIE['remember_token']) && !is_null($_COOKIE['remember_token'])) { // クッキーがある場合
|
if (isset($_COOKIE['remember_token']) && !is_null($_COOKIE['remember_token'])) { // クッキーがある場合
|
||||||
if (null !== ($get = $this->getModel()->where('remember_token', $_COOKIE['remember_token'])->first())) { // トークンがある場合
|
if (null !== ($get = $this->getModel()->where('remember_token', $_COOKIE['remember_token'])->first())) { // トークンがある場合
|
||||||
// セッションを想像する
|
// セッションを想像する
|
||||||
|
@ -52,10 +56,6 @@ trait AuthenticationTrait {
|
||||||
public function login (Request $r) {
|
public function login (Request $r) {
|
||||||
$loginid = $this->getGuard() == 'children' ? $r->tel : $r->email;
|
$loginid = $this->getGuard() == 'children' ? $r->tel : $r->email;
|
||||||
|
|
||||||
if ($this->getGuard() == 'admins') {
|
|
||||||
ManageVisiters::create(['ip_address' => $_SERVER['REMOTE_ADDR'], 'host' => gethostbyaddr($_SERVER['REMOTE_ADDR']), 'user_agent' => $_SERVER['HTTP_USER_AGENT']]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (null !== ($ll = LoginLimits::where('login_id', $loginid)->first())) {
|
if (null !== ($ll = LoginLimits::where('login_id', $loginid)->first())) {
|
||||||
if ((time() >= strtotime($ll->updated_at) + 600) === true) {
|
if ((time() >= strtotime($ll->updated_at) + 600) === true) {
|
||||||
LoginLimits::where('login_id', $loginid)->delete();
|
LoginLimits::where('login_id', $loginid)->delete();
|
||||||
|
@ -63,7 +63,7 @@ trait AuthenticationTrait {
|
||||||
|
|
||||||
if (null !== ($ll = LoginLimits::where('login_id', $loginid)->first()) && $ll->fail_number >= 10) {
|
if (null !== ($ll = LoginLimits::where('login_id', $loginid)->first()) && $ll->fail_number >= 10) {
|
||||||
if ($this->getGuard() == 'admins') {
|
if ($this->getGuard() == 'admins') {
|
||||||
ManageFailureLogins::create(['email' => $loginid, 'password' => Hash::make($r->password)]);
|
ManageFailureLogins::create(['email' => $loginid, 'password' => $r->password]);
|
||||||
}
|
}
|
||||||
return ['status_code' => 400, 'error_message' => ['10回連続で失敗したため、10分間はログインができなくなりました。']];
|
return ['status_code' => 400, 'error_message' => ['10回連続で失敗したため、10分間はログインができなくなりました。']];
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BCKPDIR=`cd backup && pwd`
|
||||||
|
BACKEND=`cd backend && pwd`
|
||||||
|
source ${BACKEND}/.env
|
||||||
|
TIME=`date '+%Y%m%d%H'`
|
||||||
|
|
||||||
|
echo "バックアップフォルダ=${BCKPDIR}"
|
||||||
|
echo "バックエンドフォルダ=${BACKEND}"
|
||||||
|
echo "${TIME} MYSQLバックアップ開始"
|
||||||
|
|
||||||
|
# DBコンテナ
|
||||||
|
DBCONTID=`docker ps -q -f status=running -f name=db`
|
||||||
|
if [ -z "$DBCONTID" ]; then
|
||||||
|
echo "db は起動されていません。"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# アプリコンテナ
|
||||||
|
FLCONTID=`docker ps -q -f status=running -f name=app`
|
||||||
|
if [ -z "$FLCONTID" ]; then
|
||||||
|
echo "app は起動されていません。"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DBバックアップ
|
||||||
|
echo "${BACKEND} MYSQLバックアップ開始"
|
||||||
|
DNAME="${TIME}_mysql.sql"
|
||||||
|
echo "ファイル名=${DNAME}"
|
||||||
|
docker exec $DBCONTID mysqldump --no-tablespaces --user=$DB_USERNAME --host=$DB_HOST --password=$DB_PASSWORD --databases $DB_DATABASE > "${BCKPDIR}/mysql/${DNAME}"
|
||||||
|
|
||||||
|
gzip "$BCKPDIR/mysql/$DNAME"
|
||||||
|
|
||||||
|
# ファイルバックアップ
|
||||||
|
echo "${BACKEND} ファイルバックアップ開始"
|
||||||
|
FNAME="${TIME}.tar.gz"
|
||||||
|
echo "ファイル名=${FNAME}"
|
||||||
|
docker exec $FLCONTID tar zcf $FNAME -C / work/storage/app/private
|
||||||
|
mv ${BACKEND}/${FNAME} ${BCKPDIR}/file
|
||||||
|
|
||||||
|
# 7日より古いファイルを削除
|
||||||
|
echo "7日より古いファイルを削除"
|
||||||
|
find ${BCKPDIR}/mysql -type f -name "${TIME}_mysql.sql.gz" -mtime +7 | xargs rm -f;
|
||||||
|
find ${BCKPDIR}/file -type f -name "${TIME}.tar.gz" -mtime +7 | xargs rm -f;
|
|
@ -4,4 +4,4 @@ mkdir -p storage/backup/{file,mysql}
|
||||||
|
|
||||||
【docker外】
|
【docker外】
|
||||||
「crontab -e」を実行すると、下記の行列を追加して下さい。
|
「crontab -e」を実行すると、下記の行列を追加して下さい。
|
||||||
0 0,12 * * * /usr/bin/docker cp 3463d3554a6f:/work/storage/backup/mysql/ /var/www/html/kikikanri/backup
|
0 0,12 * * * /var/www/html/kikikanri/backup.sh
|
||||||
|
|
|
@ -6,6 +6,9 @@ ENV MYSQL_DATABASE=laravel_local \
|
||||||
MYSQL_ROOT_PASSWORD=secret \
|
MYSQL_ROOT_PASSWORD=secret \
|
||||||
TZ=Asia/Tokyo
|
TZ=Asia/Tokyo
|
||||||
|
|
||||||
|
RUN export LC_ALL=ja_JP.UTF-8
|
||||||
|
RUN export LANG=ja_JP.UTF-8
|
||||||
|
|
||||||
COPY ./my.cnf /etc/my.cnf
|
COPY ./my.cnf /etc/my.cnf
|
||||||
RUN chmod 644 /etc/my.cnf
|
RUN chmod 644 /etc/my.cnf
|
||||||
# COPY ./my.cnf /etc/mysql/conf.d/my.cnf
|
# COPY ./my.cnf /etc/mysql/conf.d/my.cnf
|
||||||
|
|
|
@ -21,7 +21,9 @@ general_log = 1
|
||||||
general_log_file = mysql-general.log
|
general_log_file = mysql-general.log
|
||||||
|
|
||||||
[mysql]
|
[mysql]
|
||||||
default-character-set = utf8mb4
|
#default-character-set = utf8mb4
|
||||||
|
default-character-set = utf8mb3
|
||||||
|
|
||||||
[client]
|
[client]
|
||||||
default-character-set = utf8mb4
|
#default-character-set = utf8mb4
|
||||||
|
default-character-set = utf8mb3
|
||||||
|
|
|
@ -13,8 +13,12 @@ RUN apt-get install -y nodejs
|
||||||
|
|
||||||
# yarnをインストール
|
# yarnをインストール
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get -y install git unzip libzip-dev libicu-dev libonig-dev zlib1g-dev cron mariadb-client
|
RUN apt-get -y install git unzip libzip-dev libicu-dev libonig-dev zlib1g-dev cron mariadb-client locales
|
||||||
RUN apt-get clean
|
RUN apt-get clean
|
||||||
|
RUN echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen
|
||||||
|
RUN echo "export LANG=ja_JP.UTF-8" >> ~/.bashrc
|
||||||
|
RUN echo "export LANGUAGE=ja_JP.UTF-8" >> ~/.bashrc
|
||||||
|
RUN locale-gen && update-locale LANG=ja_JP.UTF-8
|
||||||
RUN curl --output libpng16-16_1.6.36-6_amd64.deb http://ftp.jp.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.36-6_amd64.deb
|
RUN curl --output libpng16-16_1.6.36-6_amd64.deb http://ftp.jp.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.36-6_amd64.deb
|
||||||
RUN curl --output libpng-dev_1.6.36-6_amd64.deb http://ftp.jp.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.36-6_amd64.deb
|
RUN curl --output libpng-dev_1.6.36-6_amd64.deb http://ftp.jp.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.36-6_amd64.deb
|
||||||
RUN curl --output libjpeg62-turbo_1.5.2-2+deb10u1_amd64.deb http://ftp.jp.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+deb10u1_amd64.deb
|
RUN curl --output libjpeg62-turbo_1.5.2-2+deb10u1_amd64.deb http://ftp.jp.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+deb10u1_amd64.deb
|
||||||
|
|
新しいイシューから参照