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

2016年12月25日日曜日

Itamaeセットアップ on CentOS7

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の初期設定

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回取得し、バックアップ用ファイルを保存する - サイト制作の豆知識

2014年4月12日土曜日

Androidの APKをデバッグ可能じゃなくする方法

Android StudioでAPKを作ってアップロードしたら下記エラーが発生。

デバッグ可能な APK をアップロードしました。セキュリティ上の理由により、Google Play に公開するにはデバッグを無効にする必要があります。

無効にする方法
  1. 上部メニューからView → Tool Windows → Build Variantを選択
    (他のViewの後ろに隠れている場合は、他のViewを最小化した後、再選択)
  2. 表示されたBuild VariantのViewで、Build Valiantの値をdebugからreleaseに変更する


 それでBuildしたらエラー。
Error:Gradle: Execution failed for task ':Xxxxxxx:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.
To proceed, either fix the issues identified by lint, or modify your build script as follows:
...
android {
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
}
...

エラーメッセージの通りにbuild.gradleを変更する。
Buildすると1回エラーになったが、もう1回やったらできた。


(2014/4/17 追記)
Build Variantをreleaseのままデバグ(Android Studioでrun)しようとすると下記エラーが発生する。
Installation failed since the APK was either not signed, or signed incorrectly.
If this is a Gradle-based project, then make sure the signing configuration is specified in the Gradle build script.
言われたとおり build.gradle を修正すればいいのかもしれないけど、Build Variantをdebugに切り替えれば解消したので良しとする。
(追記終わり)


参考

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年11月16日水曜日

Windows 7で Poderosaの接続履歴が保存されない問題

Windows7でPoderosaを使い始めたが、なぜか接続の履歴が保存されないので、毎回ユーザー名や鍵ファイルを指定しなければならないのが面倒。
そして試してみたら接続の履歴だけでなく、あらゆる設定が保存されていないことが判明。

対策は、Poderosaを起動する時に管理者として実行すること。

管理者として実行したら、接続の履歴も設定も保存される。
毎回管理者として実行するのは面倒なので、新しい接続設定を残したい場合や、その他の設定を変えたい場合のみやれば良いと思う。

あるいは、インストールする時にProgram Filesじゃないとこに入れればよかったのかもね。

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年4月11日月曜日

PHPのエラーメッセージのマニュアルへのリンクを変更する

PHPのfunctionでエラーが発生すると、エラーメッセージが該当するfunctionへのリンクになる場合がある。

array_merge('foo');

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /var/www/html/test.php on line 2

このリンクのリンク先は、デフォルトでは有効なURLではない。

php.ini等でマニュアルの場所を指定してあげると、マニュアルの該当functionへのリンクにすることができる。
ini_set('docref_root', 'http://jp.php.net/manual/ja/');
array_merge('foo');

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /var/www/html/test.php on line 3

このエラーメッセージをブラウザで見る場合は便利な場合もあるかもしれないが、このエラーメッセージはそのままエラーログにも出力されるので、エラーログが余計に増えてしまう。
(エラーログ上のマニュアルのURLを使うなら便利かもしれないが。)
このリンクを抑制するにはhtml_errorsをOffにする。
ini_set('html_errors', false);
array_merge('foo');

Warning: array_merge(): Argument #1 is not an array in /var/www/html/test.php on line 3

すっきりしたね。


参考:PHP: 実行時設定 - Manual

2010年4月16日金曜日

今さらPHP4の環境を作るメモ

yumでは入れられないPHP4をインストールしたい。
インストールされていたApache2.2とPHP5は事前にアンインストールした。


  1. gccをインストール(コンパイルに必要)

    yum install gcc
  2. OpenSSL-develをインストール(ApacheでSSLを使う場合に必要)

    yum install openssl-devel

    • (OpenSSL1.0が標準的なyumでインストールできるようになるのはいつだろう)
  3. Apache2.0をインストール
  4. flexをインストール(PHPのインストールに必要)

    yum install flex
  5. PHP4をインストール
  6. SELinuxが有効な場合、Apache用PHPモジュールのラベル(セキュリティコンテキスト)を変更する

    chcon -t textrel_shlib_t /usr/local/apache2/modules/libphp4.so

    • 参考:cannot restore segment prot after reloc: Permission denied - Linuxシステム設定
    • SELinuxが有効な場合、これを変更しないとApache(再)起動時に下記のようなエラーが出る

      Syntax error on line 232 of /usr/local/apache2/conf/httpd.conf:
      Cannot load /usr/local/apache2/modules/libphp4.so into server: /usr/local/apache2/modules/libphp4.so: cannot restore segment prot after reloc: Permission denied
  7. Apacheの設定

    vi /usr/local/apache2/conf/httpd.conf

    • AddTypeを追加

      AddType application/x-httpd-php .php
    • DirectoryIndexを変更(index.phpを追加)

      DirectoryIndex index.php index.html index.html.var
    • Webコンテンツのディレクトリを変更(/var/www/htmlにする)

      #DocumentRoot "/usr/local/apache2/htdocs"
      DocumentRoot "/var/www/html"
    • Apacheを再起動

      /usr/local/apache2/bin/apachectl restart

2010年3月14日日曜日

Windowsをインストールしたらまずやる設定と入れるツールのリスト

なんとなくメモ。

(2011/1/12 細かいところをいろいろ追記・変更した。)


初めに

  1. ドライバのインストール
    • ネットワークドライバ等、必要に応じて。
  2. Windows Update
    • インストールするものが無くなるまで何度でも。


基本設定
  1. XPの場合、Cドライブの直下に新しいフォルダを作ってマイドキュメントの場所に設定する
    • 深いところは嫌。
    • Vista ならC:\Usersの下なので許せる。
  2. DNSをGoogle Public DNSにする
    • Active Deirectoryとか使ってなければ。
    • (2010/4/16 取消線&追記)DHCPならDNSは設定しない方が楽。問題なければプロバイダのDNSが無難か。8.8.8.8の方が覚えやすいけど。
  3. ユーザーを最小限にする
    • ログイン用のユーザーをきちんと設定し、他のユーザーは(必要なもの以外は)全て不可にする。
  4. MSN Messengerを自動起動しないようにする
  5. XPの場合、タスクと例の時間にマウスカーソルを当てるとポップアップで表示される日付に曜日を追加する
    • コントロールパネル → 地域と言語のオプション → 地域オプションの標準と形式の「カスタマイズ」ボタンをクリック → 日付タブ → 長い形式を「yyyy'年'M'月'd'日' dddd」にする(ddddの部分が曜日になる)
  6. XPの場合、メイリオをインストールする
    • WindowsUpdateでインストールできた?
    • Firefox等でも綺麗に見えるように、フォントのClearTypeを有効にする。
      • デスクトップを右クリック → プロパティ → デザインタブ → 「効果(E)...」ボタンをクリック → 「次の方法でスクリーン フォントの縁を滑らかにする」にチェックを付け、ClearTypeを選ぶ。
  7. エクスプローラでコンテキスト(右クリック)メニューからコマンドプロンプトを呼び出せるようにする
  8. 必要に応じて、他のPCからの リモートデスクトップ接続を可能にしておく
    • マイコンピュータ > プロパティ > リモート
    • ファイアウォールの設定も。(自動でなったかな?)


ソフトウェアのインストール
  1. ウィルス対策ソフトのインストール
    • インストールしたら、定義ファイルを最新にしてから検索実行。
    • なければMicrosoft Security Essentials(いわゆるMSSE)で。(ただし軽くはないので注意。)
    • スキャンがスケジュールされていることを確認する
  2. IMEをGoogle 日本語入力にする
    • サジェストが便利。
    • 「入力補助」の全角半角は使いやすいように変更する。
    • たまに(あるいはしばしば)バグるのはご愛嬌。
    • 非力なPCならデフォルトのMS IMEを使った方が無難。
    • MSとGoogle双方の監視下におかれる(可能性がある)のは気持ち悪地といえば気持ち悪い。
  3. WebブラウザをFirefoxかGoogle Chromeにする
    • Web開発用でメモリが潤沢なら便利なアドオンが多いFirefox、そうでないなら軽快なChrome。
    • Firefoxの場合、プロファイルのフォルダへのショートカットを作りマイドキュメント等の分かりやすい場所に置いておく。
    • アドオンとかExtensionとか拡張とかその他の設定は割愛。
  4. Flash Playerの更新&設定
  5. テキストエディタとしてサクラエディタをインストール
    • ファイルの排他制御はしないようにする。
    • スクリプト系(PHP等)の開発をするならGinnieも。
  6. MyJVN バージョンチェッカのためにJavaもインストール
    • Updateチェックは コントロールパネル → Java → Updateタブ
      • 通知はインストール前。
      • 詳細ボタンをクリックして、頻度は毎日に。
  7. その他、必要に応じて
    • MS Office
      • Upadteする。何回でもUpdateする。
    • Adobeリーダー
      • 最新化&JavaScriptをオフにする。
      • でもPDFは基本的にGoogle Docsで開く。
      • (2010/04/16 追記)アップデーターの設定はすぐにアップデートするようにする
    • Dropbox
    • Skype
    • +Lhaca デラックス版
    • などなど
    • (2010/04/16 追記)iTunesやQuickTime等のApple製品を入れた場合、念のためにタスクにあるApple Updateの実行頻度を毎日とかにする。


定期的に
  1. MyJVN バージョンチェッカでAdobeリーダー、Flash Palyer、JRE等のバージョンをチェックする
    • 要 Java。これだけのためにJREをインストールする場合は本末転倒気味だが。
    • IEとFirefox/Chromeの両方のFlash Playerのバージョンを調べられるのが便利。
  2. Windows Updateの履歴を削除



書き出してみると意外に多い。
XPのこととVistaのことがごちゃまぜになってもう判別できないけどまあいいか。
ムーバブル、あるいはポケッタブル(あるいはシンクロナス)にできないのかなあ。

2009年7月4日土曜日

Firefox3.5で最後のタブを閉じてもWindowを閉じないようにする方法

Firefox3.0から3.5にUpdateしたら、全てのタブを閉じたときにFirefoxのWindow自体も閉じるようになってしまった。
(タブバーは常に表示するようにしている。)

これでは使いにくいので調べた。

Closing the only tab closes the windowにあるとおり、about:configで browser.tabs.closeWindowWithLastTab をfalseにすると、3.0までと同じように空のタブを残してくれるようになった。

どうも3.5がBeta版の時から論議が交わされてきた設定らしく、同じように不満を持つ人も少なくないようだ。

2008年6月10日火曜日

ini_set()で post_max_sizeや upload_max_filesize等を指定する場合の注意点

(2010/01/30追記)
最近試したら、upload_max_filesizeはini_set()では設定できなかった。
マニュアル見てもupload_max_filesize / PHP_INI_PERDIR / PHP <= 4.2.3 では PHP_INI_ALLと書いてある。
これ書いた時は動作確認せずにメモしたのかも...
(追記終わり)


php.iniなら、upload_max_filesize = 10M とできるが、phpファイルの中では、ini_set('upload_max_filesize', ’10M'); とできない。 代わりに、数値で指定する。単位はバイト。

ini_set('upload_max_filesize', 10 * 1024 * 1024);
参考: PHP: PHP の使いかた - Manual

ブログ アーカイブ

tags