コミットを比較

...

2 コミット

作成者 SHA1 メッセージ 日付
守矢諏訪子 d25f640c8b バックアップ 2022-02-18 15:51:26 +09:00
守矢諏訪子 ac5f5e1ab8 修正 2022-02-18 15:46:36 +09:00
20個のファイルの変更85行の追加32行の削除

ファイルの表示

@ -39,6 +39,41 @@ 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();
} }

ファイルの表示

@ -63,14 +63,25 @@ class FathersController extends Controller {
]; ];
try { try {
// DBに入ります。 // DBの値の準備。
EmailActivation::create($create); DB::beginTransaction();
if (null !== ($oema = EmailActivation::where('email', $r->email)->first())) {
$oema->delete();
}
$emac = new EmailActivation;
$emac->fill($create);
$emac->push();
// メールを送ります。 // メールを送ります。
Mail::to($r->email)->send(new FathersForgetPasswordMail($token)); Mail::to($r->email)->send(new FathersForgetPasswordMail($token));
// DBに入ります。
DB::commit();
} catch (\Throwable $e) { } catch (\Throwable $e) {
// 失敗 // 失敗
Log::critical($e->getMessage()); Log::critical($e->getMessage());
DB::rollback();
return ['status_code' => 400, 'error_messages' => 'メールアドレスが未登録です。入力した情報を確認してください。']; return ['status_code' => 400, 'error_messages' => 'メールアドレスが未登録です。入力した情報を確認してください。'];
} }

長すぎる行があるためファイル差分は表示されません

ファイルの表示

@ -203,8 +203,8 @@ const AdminChildEdit = () => {
</div> </div>
</div> </div>
} }
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</section> </section>
</div> </div>
</div> </div>
@ -213,4 +213,4 @@ const AdminChildEdit = () => {
} }
export default AdminChildEdit; export default AdminChildEdit;

ファイルの表示

@ -157,12 +157,12 @@ const AdminChilds = () => {
} }
</div> </div>
</div> </div>
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</section> </section>
</div> </div>
</div> </div>
) )
} }
export default AdminChilds; export default AdminChilds;

ファイルの表示

@ -112,8 +112,8 @@ const AdminChildPasswordEdit = () => {
className="btn-edit btn-default btn-h75 bg-yellow rounded-20"> className="btn-edit btn-default btn-h75 bg-yellow rounded-20">
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>パスワードを更新</span> <span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>パスワードを更新</span>
</LoadingButton> </LoadingButton>
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</form> </form>
</div> </div>

ファイルの表示

@ -226,8 +226,8 @@ const AdminMeetingDetail = () => {
handleAccept={handleAcceptDelete} handleAccept={handleAcceptDelete}
loading={submit} loading={submit}
/> />
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</div> </div>
) )
} }

ファイルの表示

@ -414,8 +414,8 @@ const AdminMeetingEdit = () => {
</div> </div>
</article> </article>
} }
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</div> </div>
</div> </div>
</div> </div>
@ -424,4 +424,4 @@ const AdminMeetingEdit = () => {
) )
} }
export default AdminMeetingEdit; export default AdminMeetingEdit;

ファイルの表示

@ -214,8 +214,8 @@ const AdminParentDetail = () => {
handleAccept={handleAcceptDelete} handleAccept={handleAcceptDelete}
loading={submit} loading={submit}
/> />
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</div> </div>
) )
} }

ファイルの表示

@ -193,8 +193,8 @@ const AdminParentEdit = () => {
</div> </div>
</div> </div>
} }
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</section> </section>
</div> </div>
</div> </div>
@ -203,4 +203,4 @@ const AdminParentEdit = () => {
} }
export default AdminParentEdit; export default AdminParentEdit;

ファイルの表示

@ -172,12 +172,12 @@ const AdminParents = () => {
} }
</div> </div>
</div> </div>
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</section> </section>
</div> </div>
</div> </div>
) )
} }
export default AdminParents; export default AdminParents;

ファイルの表示

@ -113,8 +113,8 @@ const AdminParentPasswordEdit = () => {
className="btn-edit btn-default btn-h75 bg-yellow rounded-20"> className="btn-edit btn-default btn-h75 bg-yellow rounded-20">
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>パスワードを更新</span> <span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>パスワードを更新</span>
</LoadingButton> </LoadingButton>
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</form> </form>
</div> </div>

ファイルの表示

@ -70,7 +70,7 @@ const ChildForgotPassword = () => {
</LoadingButton> </LoadingButton>
{ _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success}</Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</form> </form>
</div> </div>
</div> </div>
@ -78,4 +78,4 @@ const ChildForgotPassword = () => {
} }
export default ChildForgotPassword; export default ChildForgotPassword;

ファイルの表示

@ -22,7 +22,7 @@ const ParentForgotPassword = () => {
axios.post('/api/fathers/requestPassword', formdata) axios.post('/api/fathers/requestPassword', formdata)
.then(response => { .then(response => {
setSubmit(false) setSubmit(false)
switch(response.data.status_code){ switch (response.data.status_code) {
case 200: setSuccess(response.data.success_messages); break; case 200: setSuccess(response.data.success_messages); break;
case 400: set400Error(response.data.error_messages); break; case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break; case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
@ -57,7 +57,7 @@ const ParentForgotPassword = () => {
</span> </span>
</LoadingButton> </LoadingButton>
{ _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> } { _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
{ _success && <Alert type="success" hide={()=>setSucess('')}> {_success}</Alert> } { _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</form> </form>
</div> </div>
</div> </div>
@ -65,4 +65,4 @@ const ParentForgotPassword = () => {
} }
export default ParentForgotPassword; export default ParentForgotPassword;

0
backend/storage/backup/file/.index 実行可能ファイル
ファイルの表示

0
backend/storage/backup/mysql/.index 実行可能ファイル
ファイルの表示

0
backup/.index ノーマルファイル
ファイルの表示

0
backup/file/.index ノーマルファイル
ファイルの表示

0
backup/mysql/.index ノーマルファイル
ファイルの表示

7
crontab.txt ノーマルファイル
ファイルの表示

@ -0,0 +1,7 @@
【docker内】
まずは下記のコマンドで新しいフォルダを創作して下さい。
mkdir -p storage/backup/{file,mysql}
【docker外】
「crontab -e」を実行すると、下記の行列を追加して下さい。
0 0,12 * * * /usr/bin/docker cp 3463d3554a6f:/work/storage/backup/mysql/ /var/www/html/kikikanri/backup