Archive "2017年9月"を表示しています。
2017.9.29 金
AIDEをインストールする yum install -y aide 設定 設定ファイル確認 vi /etc/aide.conf ## 改ざん検知の対象から外すもの !/tmp !/proc aideのスキャニング自体は典型的なLinuxサーバーでは(サイズによりますが)10分から60分ぐらいはかかりました。少なくともサーバー立ち上げ時でも10分弱かかりました。なので、テスト中は殆どのディレクトリを対象外にして開発した方がよいです。 また修正した後はこの後の初期化コマンド(aide –init)でDB作成をしないとダメです。 初期化(というかDBの生成) ものすごい時間がかかるので、topコマンドで見守る。 aide --init AIDE, version 0.15.1 ### ...
2017.9.29 金
通常の文字列のポストは普通にできるんですが、ファイルのアップロードはちょっと特殊(便利)です。というのはLaravelにはFILE_SYSTEMとかstrageというものがあって、別ホストの領域をLaravelの中に取り込めるという仕組みがあります。つまりアップロードしたファイルは大容量ストレージ(S3とか)にアップロードできてしまうわけです。 なので、生PHPに慣れ親しんだファイルアップロードとはおよそ扱いがちがっているということになっています。 画像が保存される場所の確保 アップロードファイルが保存される領域を設定します。Laravelのこのシステムはとても便利でこのストレージ領域をS3などに設定することが可能になってます。NFSファイルマウントをこの領域に設定しちゃうとかいろいろできま...
2017.9.27 水
.bashrcに以下追加 export PS1="[\u@HOSTNAME]\\$ " 保存したら source .bashrc
2017.9.27 水
URL/URIの正規化というと「正規化」というエンジニア用語みたいのが絡んでいて意味がわからないので、URL/URIの統一化の方がいいんじゃないかということで、正規化=統一化という話でここでは進めたいと思います。 URL/URIっていうのは、いろんな方法で1つのデータに割り当てられるというのがそもそもの問題であり、またその複数のURL/URIというのを別々のデータであると判断する検索エンジン…というのが第二の問題であります。これは機能上仕方ないことといえば仕方ないことなので、サイトを運用する側が何とかしないといけないというところです。 http://www.example.com/ http://example.com/ という2つのURL/URIがあったとして、この2つをバラバラに利用して...
2017.9.25 月
Postfixの設定 インストール yum -y install postfix 2017-09-25時点では最新のpostfix-2.10.1-6.el7.x86_64がイントールされると思う。(あるいは最近のサービスだったらすでにされているかも) /etc/postfix/main.cfを設定します。 cd /etc/postfix/ cp -p main.cf main.cf.org vi main.cf 実際ここでmain.cfに何も設定しなくてもlocalhostであれば、メールが送信できるようになっている筈です。テストサーバーとか開発サーバーとかでPHPのmb_sendmail()あたりをつかうのであれば充分かと思います。 systemctl start postfix.serv...
2017.9.24 日
例によってフロントコントローラは非常に簡素。むしろ何もしていない。 app/Http/Controllers/Auth/ForgotPasswordController.php むしろこいつが全部やってます。 vendor/laravel/framework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php こっから先はファサードとサポートの嵐で正直ソース追うのがつらいので、独自クラスでやった方がよさそうです。 パスワードリセットメールを日本語にする 新規で通知クラスを作成します。Laravel 5.5 通知 php artisan make:notification JaPasswordReset app/Notific...
2017.9.23 土
auth.failedというバリデーションエラー(というかログイン認証のエラー)時だけvendorの中でべた書きになっているのでが嫌ですね。なんでvalidation.phpに書いてくれてないんですかね。 日本語に修正するには、 vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php のエラー文言を日本語にしてあげます。 protected function sendFailedLoginResponse(Request $request) { throw ValidationException::withMessages([ $this->username() => [tran...
2017.9.22 金
ざっくりとログインの仕組みを見てみました。認証機能についてはこちらをご覧ください。 ログイン時の条件 以下のURIからユーザー名(Eメール)とパスワードを入力すると、 /login 実際にログインの手続きを行っているのは、 Illuminate\Foundation\Auth\AuthenticatesUsers; (vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php) というところです。ログインしているのかしてないのかを判断してくれるところです。 実際のログイン時の関数はここですね。 protected function credentials(Request $request) { ...
2017.9.19 火
自動起動サービスのリスト表示 長年親しんできたchkconfigがいなくなってsystemctl list-unit-files -t serviceという長ったらしいコマンドになりました。 [CentOS6] chkconfig --list [CentOS7] systemctl list-unit-files -t service systemctl使うと長ったらしいので、 ls -al /usr/lib/systemd/system/ で一覧見た方が見やすいです。 表示の形式も変わっていわゆるランレベル的なものではなくて純粋に自動起動に関して「enabled | disabled | static」というふうにステータスを表示するようになってます。 .... httpd.servic...
2017.9.16 土
実際につくるコマンドは、 php artisan foo:bar fooobaaar みたいなことで実行できるコマンドをつくります。取り急ぎここではechoするだけです。 artisanのコマンドクラスを作成する php artisan make:command foobar app/Console/Commands/foobar.phpが作成されます。これがコマンドを実行する際に読み込まれるクラスになります。 コマンドの詳細記述 app/Console/Commands/foobar.phpを開いて、修正変更します。 コマンド名 実際のコマンドは$signatureに設定します。これがすなわちコマンドになります。 protected $signature = 'foo:bar'; arti...
2017.9.15 金
これやっておくと麻薬中毒みたいになるんで外部の他人のPCとか使ったら不便で仕方なくなるのでご注意。 $ git config --global alias.st status $ git config --global alias.co checkout $ git config --global alias.br branch $ git config --global alias.cm commit $ git config --global alias.df diff $ git config --global alias.gr grep
2017.9.14 木
どう考えても足りないカラムとプレフィックスのないテーブルはきついので改変します。 テーブル名の変更 元々あるAuthの機能は勿体無いので使うとして、テーブル名を他と統制が取れるように変更します。変更するというより新規で作成してAuth用のテーブルにしてしまう感じです。 artisanコマンドでマイグレーションを実行します。面倒なのでモデルも作成します。 php artisan make:model MODELNAME --m ちなみにここではモデルを作成するついでにマイグレーションファイルの作成ということなのでモデル名(単数形)を指定します。 app/uo_user.php database/migrations/2017_09_12_155108_create_uo_users_table...
2017.9.12 火
最近のクラウドサーバーはSSHのコンソールが管理画面にあったりするのでよいですね。SSH接続できなくなったからといってデータセンターに行くことももうないです。 設定の前にサーバーの通信を遮断しているものを全部フリーにしておく。 SSHの設定の切り分けのためにサーバーにデフォルトで設定してあるファイヤーウォールなどは予めすべて切りにしておきましょう。セキュリティ・ポリシーはその後丁寧に設定しましょう。 で、最初にこれらは全部切りにしておく。 SULinux iptables Firewall (CentOS7からの新種) hosts.allow/hosts.deny SULinux vi /etc/selinux/config SELINUX=disabled (*1)サーバー再起動必要 ip...
2017.9.12 火
2017.9.12 火
端末によってまちまちですが一部のAndroide端末ではBasic認証をかけたディレクトリ以下の動画が再生できないというのがあります。また再生はできてもいちいちBasic認証が2回走るということになります。 通常Basic認証は全てのファイルに引き継がれるんですが動画ファイルだけ(たぶんvideoタグだけなのかも。)認証情報が引き継がれないみたいです。 しかたがないので動画ファイルだけ認証解除してしまうしかないです。 AuthUserFile /home/USER/.htpasswd AuthGroupFile /dev/null AuthName StaffOnly AuthType Basic require valid-user <Files ~ "\.(mov|mp4|m4v|...
2017.9.12 火
ソースをダウンロード 私のxampp環境のPHPが5.6だったので7.1にアップグレード。PHPのバイナリをダウンロードしてきて既存のphpに上書きすればOKです。 http://windows.php.net/download ここら「VC14 x86 Thread Safe (2017-Aug-30 21:35:49)」をzipでダウンロード。2017-09-12時点ではphp-7.1.9-Win32-VC14-x86.zipが落ちてきます。ちなみに「VC14 x86 Thread Safe」以外のものでやってみたら動きませんでした。 既存のPHPに上書き C:\xampp\phpに上書きすればいいだけですが、一応バックアップ取ります。というのはいくつかエラーが出て起動しないとき...
2017.9.12 火
オートインクリメントの設定をしているカラム(id)に新しい番号が付番されていないっぽい。通常nullを入れるとオートインクリメントが設定されているカラムは自動的に次の値を付番します。急にインサートできなくなったという次第です。 1048:Column 'id' cannot be null auto_incrementの設定を確認する(1) 以下のコマンドで確認 show variables like '%auto_inc%'; 案の定おかしなことになっている mysql> show variables like '%auto_inc%'; +--------------------------+-------+ | Variable_name | Value | +---------...
2017.9.10 日
Gitで実践的に使うときにはブランチの嵐になになります。途中参加すると技術の云々に関わらずどのブランチを正とするかなど人間が決めている部分があるので確認事項多くなります。どのブランチに何をするのかというのを怠ると結構たいへんなので、そこはちゃんとした方がいいですよ。 リモートのブランチを確認する 最初にリモートのブランチを確認します。リモートのブランチと自分のブランチが一致していたらそれでOKですが、リモートに見知らぬブランチがたくさんある場合は、それが何の開発をしているのか確認しておいた方がよいでしょう。 正確な意味でのリモートにあるブランチは「git branch -r」で見ることができません。これはあくまでもローカルにある追跡ブランチを表示できるコマンドなので、最新のリモートブランチを...
2017.9.9 土
Laravelのバージョン確認 $ php artisan --version Laravel Framework 5.5.2 PHPのバージョン確認 $ php -v PHP 7.1.4 (cli) (built: May 10 2017 16:03:28) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
2017.9.7 木
すごく簡単なバックアップシェルです。DBとファイルを保存して、別筐体にもコピーします。コピーはrsyncの方が速いのでscpとか使うのやめました。 あと30日前のものはバックアップのタイミングで削除されます。cronで実行する前提で作っているので基本フルパスになっています。手動でも動きますよ。 ちなみにログとかそういう機能はありません。 #!/usr/bin/bash #----------- # backup.sh #----------- # file record time record_time=`date "+%Y%m%d_%H%M"` # file backup setting backupdir="/home/user/backup" # backup file store d...
2017.9.6 水
Gitがいろいろ複雑になってきたら、とりあえずは昔ながら風にバックアップ取りましょう。これ確実です。それからいろいろやって慣れてくると便利になります。 リモートのブランチで上書き 開発のスピードがあがると自分が書いたものがリモートに追いつかないことがあって一日中マージして終わりみたいなことになったりします。そういうときは自分の開発したものをいったん退避させて(物理的にバックアップして)リモートリポジトリの最新にしてから自分でマージした方がスムーズ。 まずはリモートの内容をひっぱってきます。 git fetch origin BRANCH_NAME あらかじめコンフリクトしそうなファイルを確認する場合は、diff取りましょう。全部みたい場合は–name-onlyオプションはいらない...
2017.9.2 土
https://www.xml-sitemaps.com/crawl.html ここで作るといいと思います。クロールするのでページ数が多いとかなり時間かかります。 トップページなどのURLを入力してスタートするだけでOKです。