ラベル config の投稿を表示しています。 すべての投稿を表示
ラベル config の投稿を表示しています。 すべての投稿を表示

2017年6月8日木曜日

Laravelを Github + Circle CIで CIするまでの参考サイトまとめ


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"

2016年12月20日火曜日

クラウドN (cloudn)でのサーバ構築


クラウドといえばAWSしか使ったことがないので、主にAWSと比較しながら備忘録的にメモ。
FLATタイプでCentOS 7の場合。


AWSと同じようなところ

  • セキュリティグループの受信規則は、記述されていないものはDENYなので(デフォルトは設定なし=全て拒否)、許可するものを設定する。
  • セキュリティグループの送信規則は逆にデフォルトALLOWなので、禁止したい場合のみ設定する。
  • サーバ(Compute)を起動すると、サーバに対してグローバルIPが与えられる。
  • サーバにはデフォルトでPython 2.7が入っていた。


AWSと違うところ
(良いところ)

  • データ転送量についての課金が無い。
  • サービスが少ないので管理コンソールがシンプル。
  • 接続元IPアドレスによる管理コンソールのアクセス制限が簡単。
  • サーバ起動時に指定したhost名がサーバ内にも適用される。
  • 一番小さいインスタンスでもデフォルトでswapがある。
(悪いところ)
  • サーバ停止中でも課金される。(稼働中よりは安いが。)
  • サーバ削除のプロテクト設定が無いのがちょっと怖い。
  • 管理コンソール等のタイムゾーンがUTC。
  • 管理コンソールで意味不明な部分がある。(OpenStackの仕様をしらべればいいのか...?)
  • サーバ起動後にセキュリティグループを変更できない。
  • サーバはデフォルトでrootのSSHログインが可能。鍵ファイルではなくパスワード認証。
    ※パスワードはサーバ登録時に生成され、管理コンソール上で1度だけ表示される。管理コンソールからリセットもできる。リセットするとsshdの設定(SSHのrootログイン禁止、パスワード認証禁止、鍵ファイルによる認証の許可など)も初期化される。
  • サーバのテンプレート(AWSでいうところのAMI)を作る前に、手動でサーバを停止しないといけない。
(その他)
  • サーバのSELinuxはデフォルトで有効。
  • SMTPはpostfixが入っている。



本番用テンプレートを作る時にまずやることのメモ
CentOS 7のコマンドがCentOS 6から色々変わってるので慣れないと...。

  • タイムゾーンの設定(/root/tzconfigurator.shという対話形式の設定ツールが用意されているが、itamaeと相性が悪い?)
  • yum update
  • Linuxユーザーの追加(SSH用公開鍵のセットも)
  • rootのSSHログイン禁止
  • SSHのパスワード認証の禁止と、鍵認証の許可
  • メール送信先の変更(/etc/aliasesの編集)

以下は必要に応じて




参考



2016年12月3日土曜日

CentOS 7に NginXをインストール


ダウンロード・インストール
CentOS7.1でnginxを用いたウェブサーバの構築 - Qiita

Webのルートのディレクトリは下記になる
(SELinuxが有効な場合は変更しない方が面倒が無い?)

/usr/share/nginx/html/


設定
/etc/nginx/nginx.conf

worker_processesはautoで良さそう。
参考 nginx の worker_processes を auto にしたときの挙動 - やまぶろぐ


サービス開始
systemctl start nginx.service

起動時にサービス開始するようにする
systemctl enable nginx.service


HTTPS(TLS)対応
既存の/etc/nginx/conf.d/default.confのserver{}内に下記を追加したらできた。
(公開サーバの場合はセキュリティ設定をもっと絞り上げたほうが良い。)
listen 443 ssl;
ssl_certificate     /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
参考 はてなブックマーク - Bマイナー志向 - 2016年1月30日


リバースプロキシ
同じく/etc/nginx/conf.d/default.confのserver{}内に下記を追加。
location /foo/ {
    proxy_pass https://example.jp/test/;
}


参考
nginx.confが読めるようになる - 魔法使いの卵
Nginx設定のまとめ - Qiita

2016年7月16日土曜日

Ansibleや Itamaeで LAMP環境を作る

参考サイトのメモ。
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で調べながら...。まあシェルコマンドが使えるから汚い書き方でいいならどうにでもなるけど。

2016年1月9日土曜日

EC2の MySQLを S3にバックアップする方法(世代管理付き)


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


IAMでS3のみに権限を絞り込んだユーザーを作り、その認証情報をconfigure。(もう少し権限を絞っても良いかも。)

aws configure
↓
AWS Access Key ID [None]: (アクセスキーを入力)
AWS Secret Access Key [None]: (シークレットアクセスキーを入力)
Default region name [None]:
Default output format [None]:


世代管理はS3の機能であるバージョニングとライフサイクルを使う。
S3でバケットを作成し、バージョニングを有効化。
ライフサイクルでルールを追加。(例「以前のバージョン」を30日後に削除)


後は適当にダンプとS3へのコピーのスクリプトを作ってcronに登録する。
分かりやすいようにディレクトリを作成し、そこにスクリプトを作った。

バックアップ用スクリプト作成。
vi backup.sh
↓
#!/bin/sh
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'
(パスワード直書きにしたが、きちんとやるならMySQLのパスワードは隠したい。)

スクリプトのファイルに実行権限を付ける。
chmod 700 backup.sh

cronに登録。
crontab -e
↓
0 1 * * * cd /スクリプトのディレクトリ; ./backup.sh >> history.log


aws-cliを使うと、AWSのサービス間の通信はSSL(TLS?)で暗号化されるようだ。
参考
aws — AWS CLI 1.9.17 Command Reference
By default, the AWS CLI uses SSL when communicating with AWS services.

Amazon Web Service aws cliはデフォルトで暗号化通信されるのか? - なぜか数学者にはワイン好きが多い



S3を使わずにサーバ上で世代管理するだけなら、下記が一番分かりやすかった。
mysqldumpをcronで1日1回取得し、バックアップ用ファイルを保存する - サイト制作の豆知識

2015年9月5日土曜日

VALUE DOMAINで CNAMEを設定するときの注意

参考: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になる。

2013年11月9日土曜日

MySQLで 「ERROR 2006 (HY000) at line xxx MySQL server has gone away」

調べたことをメモしておく。


mysqldumpでエクスポートした1GB余りのデータをインポートする時に、下記エラーが発生。

ERROR 2006 (HY000) at line 351 MySQL server has gone away

対策
↓
インポート時に「MySQL server has gone away」が発生したときの対処 | 南紀熊野ウェブサービス(大阪、新宮市)

max_allowed_packet = 32M

↓

今度は下記エラーが発生。

ERROR 2013 (HY000) at line xxx: Lost connection to MySQL server during query

対策
↓

Importing 1GO SQL File => ERROR 2013 (HY000) at line 23: Lost connection to MySQL server during query - Stack Overflow

max_allowed_packet = 1100M
net_write_timeout = 300

↓

駄目。次。

ERROR 2013 (HY000): Lost connection to MySQL server during query - MySQL

innodb_force_recovery = 4

↓

下記エラー。

ERROR 1051 (42S02) at line xx: Unknown table 'xxxxx.xxxxx'

↓

これは?

ERROR 2013 (HY000): Lost connection to MySQL server during query - Dev Shed

innodb_force_recovery = 3

↓

同じエラー。innodb_force_recoveryはやめる。

↓

MySQL Lists: mysql: Re: ERROR 2013 (HY000): Lost connection to MySQL server during query

connect_timeout = 6000

単位は秒?

↓

駄目。

↓

【結論】原因は、メモリ不足だった。

2013年7月5日金曜日

Amazon Linuxに Ruby 2.0(+ Rails)をインストールするメモ

現時点でyumでは2.0は入れられないので調べた。
いろんなやり方があって、みんな微妙に違うから、参考サイトのパッチワークになってしまった。
参考にしたのは下記のサイト、下記の箇所。

  • yumで依存するパッケージをインストールする(全部いるのかどうかは分からない)

  • “Here is a variant with rbenv.”の方に従って、
    • rbenvをインストール
    • ruby-buildをインストール
    • /etc/profile.d/rbenv.shファイルを作成
    • “. /etc/profile”を実行

  • Rubyをインストール(必要に応じてバージョンを指定する)
  • Railsをインストール(必要に応じてバージョンを指定する。本家サイトはこちら)


後で気付いたが、Amazon Linuxには最初からRuby 1.8が入っているからrbenvにしてよかった。

MySQL 5.6を RPMからインストール

現時点でyumに無いMySQL5.6をAmazon Linuxにインストールするメモ。
バージョン番号は現時点での最新版なので必要に応じて読み替えること。


インストール

  1. yum install MySQL-*.rpm

chkconfigに登録しようと見てみたら、もうmysqlが登録されてた。


初期設定


2011年5月9日月曜日

Webベースのテキストエディタ ecoderのカスタマイズメモ

WebブラウザでPHP等を編集できるオンラインテキストエディタのecoderのセットアップ時の変更箇所のメモ。


前提知識

  • $_SESSION['live'] == 0 になるのはサーバがlocalhostの場合


変更箇所
  • /code.php
    • 一通り関係しそうな設定を変更する
  • /code/base/server.php
    • $_SESSION['google']を0にすると初期表示ページのAdSenseが非表示になる
  • /code/tree/type.php
    • 表示対象の拡張子を追加する場合は、if文の該当箇所に追加する
  • その他
    • .htaccessを使わない場合は、Noticeを抑制するために index.php の先頭あたりに下記を入れる?
      error_reporting(E_ALL ^ E_NOTICE);
    • ただしphp.iniでE_STRICTを有効にしている場合はStrictエラーが出てしまうことがある。
      PHPのパース時に出るので、PHP内でerror_reportingを変更してもこれには効かない。(参考:PHP: error_reporting - Manual)
(2012/04/18 追記)
  • /code/logs/analytics.php
    • Google Analyticsの読み込みをコメントアウトする
ちなみに上記はversion 0.4.9の話。今の最新は0.4.10みたい。
(追記 終わり)

2011年1月25日火曜日

Apacheで特定のアクセスをログから除外したり、月ごとにログファイルを分けたりする

(2011/1/26変更:ログのローテーションはLinuxだったらlogratateに任せればいいかなと思ってWindows限定の書き方をしたけど、Windowsじゃなくてもrotatelogsを使いたい場面はあると思い変更した。)

Apacheのログ出力設定のメモ。

こんなことをしたい場合の例。

  • SetEnvIfとenv=!を使って、任意のアクセスをログ出力対象外にする
  • ログ内容のフォーマットはcombinedで (もっと詳しくログりたい場合は自分でフォーマットを作る)
  • (Windowsの場合、)Apacheに標準で付いてくるrotatelogsを使って任意の時間でログファイルを分割する

#ログに残さないアクセス元
SetEnvIf Remote_Addr 127.0.0.1      nolog
#前方一致でも可
SetEnvIf Remote_Addr 192.168.       nolog

#月ごとにローテーションする場合は%Y%m
CustomLog "|bin/rotatelogs -l logs/access_%Y%m.log 86400" combined env=!nolog

と、思ったら3年前に自分で既にメモしていた... → floatingdays: ApacheでURIに応じてアクセスログを分ける方法

2010年3月3日水曜日

SELinuxコマンドメモ

SELinuxの状態を確認する

/usr/sbin/getenforce
  • "Enforcing"なら有効
  • "Permissive"なら無効


SELinuxを一時的に無効/有効にする
無効
/usr/sbin/setenforce 0
有効
/usr/sbin/setenforce 1


SELinuxにアクセス拒否された結果のログを見る

/sbin/ausearch -m avc
  • ログは /var/log/messages に出力されるという説明をよく見かけるが、手元の環境では /var/log/audit/audit.log に出力されている。
  • "scontext"がアクセスしてきたプロセスの情報で、"tcontext"がアクセス対象のセキュリティコンテキストみたい。
  • 参考:selinux - xField Wiki


各ディレクトリ・ファイルのセキュリティコンテキスト(ラベル)を見る
ls -aZ [パス]


セキュリティコンテキストを変更する
chcon -t <セキュリティコンテキスト> <パス> [-R]


セキュリティコンテキストを規定の値に戻す
/sbin/restorecon -R <パス>
  • 手元の環境では想定通りに動かなかった。使い方が違うのかな?



booleanを一覧表示する
/usr/sbin/getsebool -a


audit2allowでポリシーを変更
/usr/sbin/setenforce 0
audit2allow -M local -i <抜き出したログ>
/usr/sbin/semodule -i local.pp
/usr/sbin/setenforce 1



時間があるなら、第一人者がやさしく教える新SELinux入門---目次 - 第一人者がやさしく教える新SELinux入門:ITproを一読したい。
ボリュームが多いけど、基礎から駆け足で学ぶのによさそう。

VMware上の Linux (CentOS)のシステム時刻が狂うのを防ぐ

詳しくはVMwareの時刻あわせ 2008年冬版 - SH2の日記にまとまっている。(本当に詳しい。)
これ以外だと古いやり方を説明しているサイトが多い。


とりあえずある程度それらしい時間になってればOKなら、下記だけでもOKみたい。

  1. /boot/grub/grub.conf を編集し、下記の箇所にパラメータを追加する。

    title CentOS (2.6.18-164.11.1.el5)
    root (hd0,0)
    kernel /vmlinuz-(中略) quiet divider=10 clocksource=acpi_pm
    initrd /initrd-2.6.18-164.11.1.el5.img
    これでLinuxを再起動するとシステム時刻のズレがかなり小さくなる。
    (参考:VMwareの時刻あわせ 2008年冬版 - SH2の日記の「4. CentOS 5.2のカーネルパラメータを変更する」)
  2. /etc/ntp.conf を編集し、同期するサーバを日本のntpサーバに変更する。

    #server 0.centos.pool.ntp.org
    #server 1.centos.pool.ntp.org
    #server 2.centos.pool.ntp.org
    server ntp.nict.jp
    centos.pool.ntp.orgの3つはコメントアウトし、ntp.nict.jpとかインターネットマルチフィード(MFEED) 時刻情報提供サービス for Publicにする。
  3. ntpdが起動していない場合は起動する。

    /etc/init.d/ntpd start
    ブート時に起動するようになっていない場合はブート時に起動するようにする。

    /sbin/chkconfig ntpd on

2009年9月24日木曜日

PHPの mbstringの設定の意味についてのメモ

こんな感じ?
PHP5.3の場合だが、5.2でもそんなに違いはないと思う。(mbstring.http_output_conv_mimetypeくらい?)
実際に使う場合は必要に応じて要調査。

[mbstring]
; language for internal character representation.
; http://php.net/mbstring.language
mbstring.language = [(2010/04/26訂正)Japaneseだとmb_send_mail()でメールの文字コードがjisになる。また、文字コード検出順で"auto"を使う場合にもこの設定が必要]

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
; http://php.net/mbstring.internal-encoding
mbstring.internal_encoding = [mbstring系関数で使われるデフォルトの文字コード]

; http input encoding.
; http://php.net/mbstring.http-input
mbstring.http_input = [入力データを自動で文字コード変換する場合の変換元の文字コード]

; http output encoding. mb_output_handler must be
; registered as output buffer to function
; http://php.net/mbstring.http-output
mbstring.http_output = [ob_start('mb_output_handler')した場合の変換先の文字コード]

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
; http://php.net/mbstring.encoding-translation
mbstring.encoding_translation = [入力データを自動で文字コード変換するかどうか]

; automatic encoding detection order.
; auto means
; http://php.net/mbstring.detect-order
mbstring.detect_order = [(2010/04/26訂正)変換元文字コードをautoにした場合 一部の関数での文字コード検出の優先順位]

; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
mbstring.substitute_character = [文字コード変換できなかった文字の代替文字]

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
mbstring.func_overload = [非mbstring系の関数のうちどれをmbstring系の関数で上書きするか]

; enable strict encoding detection.
mbstring.strict_detection = [文字コード変換時に厳密なチェックを行うかどうか]

; This directive specifies the regex pattern of content types for which mb_output_handler()
; is activated.
; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml)
mbstring.http_output_conv_mimetype = [mb_output_handler()関数が呼び出された場合に使うContent-Typeの正規表現パターンらしい]

; Allows to set script encoding. Only affects if PHP is compiled with --enable-zend-multibyte
; Default: ""
;mbstring.script_encoding = [普通は使わない]

参考:
 PHPの文字化けを本気で解決する - ぎじゅっやさん
 セキュリティ専門家でも間違える!文字エンコーディング問題は難しいのか?
 PHP: 実行時設定 - Manual
 PHP: INIファイル の扱いに関する変更 - Manual

2009年8月12日水曜日

Railsの GetText 2.0でサーバが起動しないエラーの対応メモ

レアなケースだろうけど一応メモ。


(参考:RailsでGetText)
Rails のためのものぐさな Web アプリケーションの国際化手法 - 川o・-・)<2nd lifeが参考になる。
ただしGetText 2.0からはenvironment.rbで読み込むgemが変わったので注意。

config.gem "locale_rails"
config.gem "gettext_activerecord"
config.gem "gettext_rails"



ActiveRecordもActionMailerも使わないので、config/environment.rbで不使用にしていた。
config.frameworks -= [ :active_record, :action_mailer ]

gettext(2.0)を使うために、下記をgemでインストール。
locale
locale_rails
gettext
gettext_rails
ActiveRecordは使わないのでgettext_activerecordは入れなかった。

アプリケーションにgettextを使う設定を入れて、mongrelを起動しようとしたがエラーになって起動できない。
ruby server/script
↓
.../lib/active_support/core_ext/module/aliasing.rb:33:in `alias_method': undefined method `create!' for class `ActionMailer::Base' (NameError)

ActionMailer?使ってないけど?
しょうがないから不使用指定を外す。
config.frameworks -= [ :active_record, :action_mailer ]
↓
config.frameworks -= [ :active_record ]

これでも駄目。
試しにgettext_activerecordをインストール。
これで起動したら起動できた。

もう1つ試しにgettext_activerecordのrequireをコメントアウトしたら起動しなかった。


結論:RailsでGetTextを使う場合、不要でもActionMailerを外しては駄目。かつ、不使用でもgettext_activerecordが必要。

2009年7月28日火曜日

PHPを5.3にバージョンアップしたら動かなくなった場合の対処法

Windows上のPHPを5.2から5.3にバージョンアップしたら動かなくなった時にやったこと。
(自分の環境での解決策のメモ)


トラブル1:Apacheを起動する時に下記のようなエラーが出て起動できない

ローカル コンピュータ の Apache2 サービスを開始できません。
エラー 1067: プロセスを途中で強制終了しました。
原因は存在しないextensionをロードする設定になっていることだった。
自分の場合、php_pdo.dllとphp_zip.dllをコメントアウトしたらApacheを起動できるようになった。
(以前、PHP 5.3 RC2に無いエクステンションを書いたことを思い出してやったら動いた。)


トラブル2:PHPのページを呼んでも帰ってこない OR 真っ白のページが表示される
Apacheのアクセスログにもエラーログにも何も記録されていない。PHPのエラーログにも何も書かれない。
ということはPHPのエラーログにエラーを書き出す前にこけてる?そしてApacheはPHPからの処理の戻りを待ち続けてる?

原因は、タイムゾーンの設定をしていないことだった。
date.timezone = Asia/Tokyo
上記設定をしてあげたら無事動くようになった。

これは仕様か?

2009年7月12日日曜日

Linuxで svnにパスワードを保存させない設定

Linuxでsvnを使うと、デフォルトではSubversionサーバへの接続設定がパスワードも含めて全て平文で記録される。
rootに丸見えで気持ち悪い場合もある。

これをやめさせるには、ファイル ~/.subversion/config を編集し、パスワードを保存しないようにする。

store-passwords = no
パスワードだけでなく、なるべく保存される情報を無くしたいなら、auth-credsをnoにする。
store-auth-creds = no

上記設定をしても既に保存された情報は消えないので、 ~/.subversion/auth/svn.simple/ にあるハッシュっぽい名前のファイルを消しておく。


参考:Subversion - Linux Wiki

2009年3月5日木曜日

Apacheで特定の User-Agentだけアクセス拒否する設定

メモ。

SetEnvIf User-Agent "^DoCoMo/2.0 P90liS" deny_agent

<Location />

 Order allow,deny
 Allow from all
 Deny from env=deny_agent

</Location>




参考:

mod_setenvif - Apache HTTP サーバ

mod_authz_host - Apache HTTP サーバ

2009年2月16日月曜日

Apacheモジュール版の v8cgiがリリースされていた

v8cgiのバージョン0.3.0がリリースされ、Apacheモジュールとして動作させられるようになった。


httpd.conf設定例(Windowsの場合)

LoadModule v8cgi_module C:/test/v8cgi/mod_v8cgi.dll
AddHandler v8cgi-script .ssjs

Apacheモジュールとして動作させる場合、ssjsファイルの方の1行目に"#!/test/v8cgi/v8cgi"を書かなくてもよい。


ただし手元の環境では、Apache(再)起動後に最初に読み込んだssjsファイルが毎回実行される。
つまり、最初に/test/example.ssjsを表示させたら、/test/example2.ssjsでも/test/not-exist.ssjsにアクセスしてもexample.ssjsが実行される。
Zend Frameworkライクな(M)VCパターンにするならよいかもしれない。


参考:floatingdays: v8cgiのインストールと簡単なサンプル

2009年2月11日水曜日

MySQLの query_cache_sizeのチューニング

query_cache_sizeに値を指定することで、MySQLのクエリーをキャッシュさせレスポンスを向上させる。
デフォルトはゼロ。(キャッシュしない。)

現在の状態は下記SQLで取得できる。

SHOW STATUS LIKE 'Qcache_%';

  • Qcache_free_memory・・・キャッシュの空き容量。足りなければ増やす
  • Qcache_lowmem_prunes・・・キャッシュの容量不足で削除されたクエリーの数。これが多い場合もキャッシュサイズを増やす
  • Qcache_free_blocks・・・断片化したキャッシュのブロック。これが多い場合は下記SQLで断片化を解消する(1になる)。
    FLUSH QUERY CACHE;


キャッシュに関する状態は、MySQL Administratorでも見られる。


参考:
 [ThinkIT] 第6回:query_cache_sizeの違いによるパフォーマンス比較 (1/3)
 もろもろメモ : MySQL cache "query_cache_size" の設定

ブログ アーカイブ

tags