from manager.models import *
python manage.py runserver 0:8000
ALLOWED_HOSTS=[‘*’]
/usr/bin/.pyenv/versions/3.6.4/lib/python3.6/site-packages/django/db/models/fields/__init__.py:1365: RuntimeWarning: DateTimeField Person.birthday received a naive datetime (2018-01-04 00:00:00) while time zone support is active.
if self.request.user.is_authenticated(): #'bool' object is not callableと怒られる
↓
if self.request.user.is_authenticated:
ModuleNotFoundError: No module named 'hijack'
Ruby On Rails と違って、マイグレーションは完全にモデルのファイルから生成されます。マイグレーションは本質的には単なる履歴です。 Django はデータベースのスキーマをアップデートしながら履歴を進んでいき、現在のモデルに合致させることができます。
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
python manage.py makemigrations <アプリ名>
python manage.py migrate
C:\Program Files (x86)\Microsoft Office\root\Office16\XLSTART
Laravel
前にメモしたリンク集。
floatingdays: 初めてのLaravel参考サイト
floatingdays: Laravelと Vue.jsのチュートリアル参考サイト
MySQL5.6以前だと出るエラーの対処方法。
他にもやり方はあるみたいだけど、ここのが公式?
Laravel 5.4: Specified key was too long error - Laravel News
テストを書くチュートリアル。
Laravel5.3以前の記事のようで、Laravel5.4からはページ遷移やページ内のテストは別途インストールが必要なLaravel Duskの管轄に変わったので、その部分は読み替えが必要。
Laravelでテストコードを書くためのチュートリアル - Qiita
Github
Githubを二要素認証にして、かつ、Githubへのpushをsshではなくhttpsでする方法。
ユーザー名とトークンの入力省略も。
https+アクセストークンを使ってGitHubのアカウントを使い分ける - Qiita
同じく入力省略について、こちらは.netrcに書く方法。
[Git][GitHub]GitHubにPushする際に認証失敗する | DevAchieve
Circle CI
DBまわりの設定。
seedはtest内でやるなら設定ファイルには要らないかも。
CircleCiでLaravelのMySQLを使ったテストを実行する - Qiita
APP_KEYをcircle.ymlに定義しないとエラーになるので書いておく。
エラーメッセージが分かりづらい → "RuntimeException: The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths."
Laravel アプリケーションを、 Circle CI 経由で AWS ElasticBeanstalk に自動デプロイ - Qiita
Circle CIで使えるPHPのバージョンの参考ページのリンクなど。
PHPプロジェクトにおけるCircle CIの設定 - Qiita
Circle CIからプロジェクトを削除せずにGithubからプロジェクトを削除すると、Circle CI側で削除できなくなる(ずっと読み込み中になる)。
対策は、Githubに同名のプロジェクトを作ればCircle CIから削除できるようになる。
相羽 大輔 (Daisuke AIBA)さんのツイート: "さっきの件、解決。CircleCIに登録したプロジェクトを削除するには「Project Settings > Stop Building on CircleCI」GitHub側で先に消すとCircleCIのプロジェクト設定が触れなくなるので注意。 #kzrb"
Laravel 5.4で Vue.js開発環境を手軽に作る : アシアルブログ
Laravel 5.4でWeb APIを作る : アシアルブログ
Vue.js + vuexによるToDoアプリケーションの実装 : アシアルブログ
node.js/npmの環境作りについては下記が参考になった。
[AWS] 手順に沿った画像付きでAmazon EC2にNode.js, Express環境の構築する | Developers.IO
cross-envがCannot findになる問題の対策は下記。
Cannot find module cross-env · Issue #478 · JeffreyWay/laravel-mix · GitHub
次はDBまわりかなあ。
メモ。
試しにログイン周りを自動生成してみる。
Laravelの標準Authentication(Auth)の動きを調べてみる - Qiita
Specified key was too longというエラーが出たら。
Laravel 5.4: Specified key was too long error - Laravel News
RESTなAPIを作ってみる。微妙に古い?
開発の進め方きめごと - Qiita
次はこれかな。
Laravel 5.4でWeb APIを作る : アシアルブログ
Rubyなどをインストール。Rubyはrbenvで入れた方がいろいろできるが、今回は手軽なyumで。# yum install ruby-devel gcc-c++gemでItamaeなどをインストール。# gem install itamae io-console --no-documentパスワードも生成するならこれも必要# gem install unix-crypt --no-document参考 floatingdays: Itamaeセットアップメモ Itamae自分メモ[1] userとかsshとかportの初期設定
PDFファイルの一部のページだけ保存する。 - Yahoo!知恵袋
Google Chromeの印刷機能で出力をプリンターでなくPDFにできることを利用する。 なるほど。
クラウドといえばAWSしか使ったことがないので、主にAWSと比較しながら備忘録的にメモ。
FLATタイプでCentOS 7の場合。
AWSと同じようなところ
ダウンロード・インストール
CentOS7.1でnginxを用いたウェブサーバの構築 - Qiita
Webのルートのディレクトリは下記になる
(SELinuxが有効な場合は変更しない方が面倒が無い?)
/usr/share/nginx/html/
systemctl start nginx.service
systemctl enable nginx.service
listen 443 ssl;参考 はてなブックマーク - Bマイナー志向 - 2016年1月30日
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
location /foo/ {
proxy_pass https://example.jp/test/;
}
chalice (Python Serverless Microframework for AWS)をAmazon Linuxに入れてHello Worldしたのでメモ。
1. aws configure
Amazon Linuxならaws(AWS CLI)は最初からインストールされている。
configureで認証情報を登録する。
参考 【AWS】CLIの初期設定について(認証情報とコマンド補完) - TASK NOTES
2. chalice
参考 GitHub - awslabs/chalice: Python Serverless Microframework for AWS
必要に応じてrootで作業する。
マネジメントコンソールから確認したところ、下記が登録されていた。
Goadがおもしろそう。 【ツール】 ab (Apache Bench) 参考 Apache Benchでサクッと性能テスト - Qiita JMeter 要Java。 参考 JMeter | TECHSCORE(テックスコア) Goad EC2からAWS Lambdaを使う。Golang製。 参考 Lambda を利用した分散 Web 負荷テストツール Goad を使ってみた - Qiita LOCUST Python製。 Tsung Erlang製。 参考 Tsung で負荷試験 - Qiita 【サービス】 Shift社の負荷テストサービス
無料。テスト対象と同じドメインのメールアドレスを登録する必要あり。 参考 SHIFTの負荷テストサービス Load Impactまともに使うなら有料。 参考 ロードテストサービスの Load Impact を使ってみた : まだプログラマーですが何か?
基本 MySQLでSSLクライアント証明書を使う - Qiita ※MySQL側のCommon Nameはサーバのホスト名にする 暗号化されていることを確認するSQLshow status like'Ssl_cipher';MySQL5.6での注意点 MySQL 5.6でSSL接続が有効にならない・クライアントからSSL接続できない。 - ah-2 WindowsのMySQL Query Browserでは、caだけでなく、下記の全てを指定しないと接続できないようだ。USE_SSL => "Yes" SSL_CA => ca.crtのファイルパス SSL_CERT => client.crtのファイルパス SSL_KEY => client.keyのファイルパスファイルパスのバックスラッシュ(¥)はバックスラッシュのままでも、スラッシュにしてもどちらでもOK。 ファイルパスのスペースが含まれていてもOK。 ca.crtは、server.crtとclient.crtの中身を合わせる必要はないようだ。 参考:MySQL :: MySQL Administrator :: 21.4.1 SSL Connections REQUIRE SSLなユーザーだと、MySQL Query Browserの上部メニューからのMySQL Administratorの起動や、逆にMySQL AdministratorからMySQL Query Browserの起動ができない。(直接起動すれば起動できる。)
参考記事
Amazon Aurora/MariaDB/MySQLの違いを整理してみる #reinvent | Developers.IO
エンタープライズワークロードにおけるAmazon Auroraの活用
Amazon Auroraについての簡単なメモ - Qiita
11/10 Amazon RDS for Aurora 東京ローンチ記念セミナーに行ってきました - 駆け出しアクアテラリストのIT奮闘記
ちょっと待って!Auroraを使う時にMulti-AZが本当に必要ですか? | Developers.IO
問題点
Amazon Auroraへの移行 - inFablic
AWS RDSのAuroraをパブリックから繋いだ時のパフォーマンス - イフブロ
メンテナンスウィンドウ
Amazon RDS のメンテナンス期間 - Amazon Relational Database Service
可用性
Amazon Web Services ブログ: 【AWS発表】Amazon Auroraをご利用頂けるようになりました!
Amazon Aurora東京ローンチ記念セミナー参加レポート - 其未来
Auroraの可用性は99.99% → 1年間で52.56分止まる計算になる
SLAは99.95%
料金
料金 - Amazon RDS | AWS
2016年現在、オンデマンドインスタンスで、$0.35/H~(最安のr3.large)→ ストレージやI/Oも含めて3万円弱/月~くらいか
Multi-AZにするなら倍だから6万円弱/月か
EC2のAmazon LinuxにItamaeのサーバを構築し、リモートサーバもEC2のAmazon Linuxの場合
セットアップ
参考:Itamae on AWS - Itamae の EC2 へのインストールとレシピ適用 - - Qiita
sudo gem install itamae
sudo yum install ruby-devel gcc-c++
sudo gem install io-console
sudo /usr/local/bin/itamae local path/to/recipe.rbyamlのnodeを読み込む場合
sudo /usr/local/bin/itamae local --node-yaml path/to/node.yaml path/to/recipe.rb
itamae ssh -h 対象のIP -i path/to/your-pair.pem path/to/recipe.rb
参考サイトのメモ。
Itamaeの方がいいかな。
Ansible
Ansibleのインストールと、ごく簡単なplaybook
VagrantとAnsibleでCentOSの環境を用意してみる - yk5656 diary
LAMP環境を作成
AnsibleでとりあえずのLAMP環境してみる - yk5656 diary
PHPをインストール
Ansible でインストール (php 5.6) - Qiita
Itamae
Itamaeのインストール、ごく簡単なレシピ、リモートサーバへの適用
Itamae on AWS - Itamae の EC2 へのインストールとレシピ適用 - - Qiita
レシピの書き方など
Chef脱落者が、Itamaeで快適インフラ生活する話 - Qiita
itamae 入門 - Qiita
Itamaeチートシート - Qiita
vagrantとitamaeによるLAMP環境構築 - Qiita
EC2 のインスタンスを Itamae でプロビジョニングした | mizoguche.info
設定値をJSONまたはYAMLに切り出す
第3回 ノード属性で汎用的なレシピを書く:Itamaeが構成管理を仕込みます! ~新進気鋭の国産・構成管理ツール~|gihyo.jp … 技術評論社
公式ドキュメント(英語。詳細は載ってない)
Home · itamae-kitchen/itamae Wiki · GitHub
公式ドキュメントが想像よりそっけないので、詳細は他のブログ等やQiitaで調べながら...。まあシェルコマンドが使えるから汚い書き方でいいならどうにでもなるけど。
certbot (Let's Encrypt)を Amazon Linuxにインストールの後日談。
OSはAmazon linux。
cronの結果がメールで送られてきた。
Checking for new version...↓
Upgrading certbot-auto 0.6.0 to 0.7.0...
Replacing certbot-auto...
Creating virtual environment...
./certbot/certbot-auto: line 530: virtualenv: command not found
WARNING: Amazon Linux support is very experimental at present...↓
if you would like to work on improving it, please ensure you have backups
and then run this script again with the --debug flag!
./certbot/certbot-auto renew --debug && sudo service httpd reload
Bootstrapping dependencies via Amazon Linux...↓
yum is /usr/bin/yum
Loaded plugins: priorities, update-motd, upgrade-helper
Package gcc-4.8.3-3.20.amzn1.noarch already installed and latest version
Package dialog-1.1-9.20080819.1.5.amzn1.x86_64 already installed and latest version
Package augeas-libs-1.0.0-5.7.amzn1.x86_64 already installed and latest version
Package 1:openssl-1.0.1k-14.91.amzn1.x86_64 already installed and latest version
Package 1:openssl-devel-1.0.1k-14.91.amzn1.x86_64 already installed and latest version
Package libffi-devel-3.0.13-11.4.amzn1.x86_64 already installed and latest version
Package system-rpm-config-9.0.3-42.27.amzn1.noarch already installed and latest version
Package ca-certificates-2015.2.6-65.0.1.15.amzn1.noarch already installed and latest version
Package python27-2.7.10-4.120.amzn1.x86_64 already installed and latest version
Package python27-devel-2.7.10-4.120.amzn1.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package python27-pip.noarch 0:6.1.1-1.21.amzn1 will be installed
---> Package python27-tools.x86_64 0:2.7.10-4.120.amzn1 will be installed
---> Package python27-virtualenv.noarch 0:12.0.7-1.12.amzn1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
python27-pip noarch 6.1.1-1.21.amzn1 amzn-main 1.9 M
python27-tools x86_64 2.7.10-4.120.amzn1 amzn-main 706 k
python27-virtualenv noarch 12.0.7-1.12.amzn1 amzn-main 2.0 M
Transaction Summary
================================================================================
Install 3 Packages
Total download size: 4.6 M
Installed size: 11 M
Is this ok [y/d/N]: Exiting on user command
Your transaction was saved, rerun it with:
yum load-transaction /tmp/yum_save_tx.2016-06-22.11-17.hYs7z_.yumtx
Could not install OS dependencies. Aborting bootstrap!
./certbot/certbot-auto renew --debug↓
Qualys SSL LabsのSSL Server Testで、A評価を得てみる。
環境
SSLProtocol all -SSLv3↓
SSLHonorCipherOrder on
This server accepts RC4 cipher, but only with older protocol versions. Grade capped to B.
SSLCipherSuite HIGH:MEDIUM:!RC4:!aNULL:!MD5↓
Header always set Strict-Transport-Security "max-age=15768000"↓
HTTP Strict Transport Security (HSTS) with long duration deployed on this server.
以前一度挫折した(古いAmazon Linuxをアップデートして使っているためだと思われる)が、certbotに改名後に試してみたら、できた。
前提
45 3 12 * * ./certbot/certbot-auto renew && sudo service httpd reload
2016年4月のマイクロソフト社のルート証明書情報更新の影響と対策に関するご案内(続報) | Symantec
意訳
Microsoftが2016年4月19~20日(日本時間)に配信するルート証明書情報の更新により、シマンテックのクロスルートを付けているサーバ証明書を使っている場合にWindows上の(Firefox以外の)ブラウザで警告が出るようになる。
回避するにはクロスルートを外す。
このMicrosoftの更新はWindows Updateとは別らしい。
なお、4/19~20となっているが4/20になってMicrosoftが更新を延期したらしい。(結局、4/26~27に実施。)
クロスルートを外すと、ガラケー等で使えなくなるのでは?
↓
クロスルート設定用証明書の設定について、どのような対応が必要でしょうか? | Symantec のPDFによると、ガラケーへの影響は2機種のみ。スマホでもいくつか影響があるが、発売が2010年以前なので影響は少なそう。SHA-1を切り捨てたことにより、既に古いガラケーの多くはSSL/TLSの対象外になっていた。
ちなみに、 Windowsが遂にSymantecG1ルートを捨てるらしい - 情緒不安定。 によるとクロスルート証明書のIssuerが問題なので、中間CA証明書(クロスルートを含む)自体がG1でなくても影響がある。(シマンテックがクロスルート証明書として配布している VeriSign Class 3 Public Primary Certification Authority - G5 のIssuerがG1なので。)
クロスルートを付けている場合に問題が発生するクライアントPC(Windows)の条件を見ると、
条件3 : クライアント環境のルート証明書ストア(Windows Trusted Root Store)に、G5ルート証明書*2が含まれていない場合とある。
*2「VeriSign Class 3 Public Primary Certification Authority - G5」
最近のブラウザではPC/スマフォ問わずにG5証明書が予めインポートされています。ですがwindowsXPのSP2以前やフィーチャーフォンの一部端末はG5証明書がインポートされておらず、『VeriSign Class 3 Public Primary CA』(通称:G1証明書)がインポートされています。
SymantecG5ルート証明書が入っていないパソコン。とあるので、Windows Vista以降は大丈夫?
つまり、レガシーなパソコンです。(WindowsXP以前、WindowsUpdateなどを定期的に行ってないと怪しいです。)
1.4.2 より前 → 接続できない
1.4.2 ~ 1.6.0_18 → ごにょごにょしてG5をCAストアに追加すれば接続できる
1.6.0_19 以上 → 接続できる
S3への送信はaws-cliが良さそう。
参考:aws-cli - AWS CLIでS3を操作する - Qiita
aws-cliはAmazon Linuxなら最初から入っているが、手元のインスタンスはconfigure等をするにはバージョンアップが必要だった。
yumでもバージョンアップできるが、今回は諸事情により依存関係のある諸々をそっとしておきたかったので、下記を参考にyumを使わずにaws-cliをバージョンアップ。
参考:AWSCLIで運用検討中の人必見! AWSCLIを使用したS3へのファイルコピー | クラウド工房 Powered by Amazon Web Services
sudo easy_install pip
sudo pip install awscli -U
aws configure↓
AWS Access Key ID [None]: (アクセスキーを入力)
AWS Secret Access Key [None]: (シークレットアクセスキーを入力)
Default region name [None]:
Default output format [None]:
vi backup.sh↓
#!/bin/sh(パスワード直書きにしたが、きちんとやるならMySQLのパスワードは隠したい。)
echo "START " `date +'%Y/%m/%d %H:%M:%S'`
MYSQL_PWD='MySQLのパスワード' mysqldump -u MySQLのユーザー 対象DB > data.dump
aws s3 cp data.dump s3://バケット名/
echo "E N D " `date +'%Y/%m/%d %H:%M:%S'
chmod 700 backup.sh
crontab -e↓
0 1 * * * cd /スクリプトのディレクトリ; ./backup.sh >> history.log
By default, the AWS CLI uses SSL when communicating with AWS services.
jsDelivrから最新のJavaScirpt/CSSフレームワークを読みこむURLのメモ。
下記の「短縮形」は本来は複数ファイルをまとめる機能だが1ファイルでも使える。(URLが短くなり、キャッシュ期間が長くなる。)
■ jQuery
https://cdn.jsdelivr.net/jquery/latest/jquery.min.js
短縮形 https://cdn.jsdelivr.net/g/jquery
↓
v3.0.0-alpha1
https://cdn.jsdelivr.net/jquery/2/jquery.min.js
短縮形 https://cdn.jsdelivr.net/g/jquery@2
↓
v2.1.4
https://cdn.jsdelivr.net/jquery/1/jquery.min.js
短縮形 https://cdn.jsdelivr.net/g/jquery@1
↓
v1.11.3
■ jQuery UI
CSS
https://cdn.jsdelivr.net/jquery.ui/latest/jquery-ui.min.css
JS
https://cdn.jsdelivr.net/jquery.ui/latest/jquery-ui.min.js
短縮形 https://cdn.jsdelivr.net/g/jquery.ui
JSをjQuery(v2.X)と合わせて1ファイルにする
https://cdn.jsdelivr.net/g/jquery@2,jquery.ui
CSSでテーマを指定する場合
https://cdn.jsdelivr.net/jquery.ui/latest/themes/flick/jquery-ui.min.css
テーマを指定しないと"UI lightness"になる(参考:http://jqueryui.com/themeroller/#themeGallery)
■ jQuery Mobile
CSS
https://cdn.jsdelivr.net/jquery.mobile/latest/jquery.mobile.min.css
JS
https://cdn.jsdelivr.net/jquery.mobile/latest/jquery.mobile.min.js
短縮形 https://cdn.jsdelivr.net/g/jquery.mobile
JSをjQuery(v2.X)と合わせて1ファイルにする
https://cdn.jsdelivr.net/g/jquery@2,jquery.mobile
■ Bootstrap
CSS
https://cdn.jsdelivr.net/bootstrap/latest/css/bootstrap.min.css
JS
https://cdn.jsdelivr.net/bootstrap/latest/js/bootstrap.min.js
短縮形 https://cdn.jsdelivr.net/g/bootstrap
JSをjQuery(v2.X)と合わせて1ファイルにする
https://cdn.jsdelivr.net/g/jquery@2,bootstrap
■ Bootswatch
例
https://cdn.jsdelivr.net/bootswatch/latest/cerulean/bootstrap.min.css
テーマもたくさん → https://www.jsdelivr.com/?query=bootswatch
■ Pure.css
https://cdn.jsdelivr.net/pure/latest/pure-min.css
短縮形 https://cdn.jsdelivr.net/g/pure
■ Normalize.css
https://cdn.jsdelivr.net/normalize/latest/normalize.min.css
短縮形 https://cdn.jsdelivr.net/g/normalize
■ Font Awesome
https://cdn.jsdelivr.net/fontawesome/latest/css/font-awesome.min.css
短縮形 https://cdn.jsdelivr.net/fontawesome/latest/css/mainfile
https://cdn.jsdelivr.net/g/fontawesome だとうまく表示されなかった。(フォントファイルへの相対パスがおかしくなる?)
ブラウザキャッシュ期間は1週間。
ただし、複数ファイルをまとめると max-age=15724800(約6ヶ月)になった。
【HTTP Response Header(抜粋)】
Server: nginx
Content-Type: application/x-javascript; charset=utf-8
Vary: Accept-Encoding
X-Version: 3.0.0-alpha1
Cache-Control: public, max-age=604800
access-control-allow-origin: *
X-Cache: HIT
x-edge-location: jptk
Content-Encoding: gzip
X-Firefox-Spdy: h2
前提として、Windowsにヒラギノを入れてたり、Macにメイリオを入れてたりする、「ごく少数の人」は無視したい。それから、かなり古い環境や日本語以外の環境も除いて考える。
で、よくあるこんな無難なfont-familyを見て。
font-family: "游ゴシック", YuGothic, "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", Meiryo, "MS Pゴシック", sans-serif;
font-family: "游ゴシック", YuGothic,"ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", Meiryo, "MS Pゴシック", sans-serif;
font-family: "游ゴシック", YuGothic,"ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ",Meiryo, "MS Pゴシック", sans-serif;
font-family: "游ゴシック", YuGothic,"ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN", "メイリオ",Meiryo,"MS Pゴシック", sans-serif;
font-family: "游ゴシック", YuGothic, "メイリオ", sans-serif;
font-family: "メイリオ", sans-serif;
参考:Easy Setup for VALUE DOMAIN Users
※最後のピリオドをわすれないように!
ピリオドを付けないとサブドメインと見なされて下記のようになってしまうので注意。
hoge.example.jpで、example2.comにアクセスできるようにしたい場合
cname hoge example2.com
と(最後にピリオドを付けずに)設定し、nslookupすると、
hoge.example.jp canonical name = example2.com.example.jp.
Name: example2.com.example.jp
となってしまう。
cname hoge example2.com.
のように最後にピリオドを付ければ、
↓
hoge.example.jp canonical name = example2.com.
Name: example2.com
のように期待通りのCNAMEになる。
たくさんのライブラリをホスティングしているところ
RawGit
・(cdn.rawgit.comの方は)by MaxCDN
・Github上のライブラリが対象
jsDelivr
・by MaxCDN and CloudFlare
cdnjs
・by CloudFlare
OSSCDN
・by MaxCDN
特定のライブラリのみホスティングしているところ(と言ってもGoogleとMicrosoftはそこそこ揃ってる)
Google Developers Hosted Libraries
・by Google
・AngularJSあり
Microsoft Ajax Content Delivery Network
・by Microsoft
・Bootstrap、Knockoutあり
jQuery CDN
・by MaxCDN
・jQeuryファミリーのみ
Bootstrap CDN
・by MaxCDN
・Bootstrap、Font AwesomeとBootswatchのみ
Yahoo! Developer Network
・by Yahoo
・YUIとPure.cssのみ
・HTTPS不可
MaxCDNがんばってる
参考
floatingdays: JavaScriptフレームワーク/ライブラリの CDNいろいろ
リンク集的メモ。