Edo::World::Blog

〜Linux/Solaris関連の作業メモ〜

[Linux][Ubuntu][squid] リバースプロキシ

memo

"*.hogehoege.com"(ドメイン名は仮)のオレオレ証明書を作成し、squidに登録するまでの道のり。

サブドメインに対応できるように、ドメイン名をアスタリスクで指定しているが、

ドットが2つ入るような、www.blog.hogehoge.comには対応していない模様


環境

$ lsb_release -r
Release:        14.04


CA構築

sudo -s
mkdir -p /home/demoCA
mkdir /home/demoCA/{certs,crl,newcerts,private}
chmod 0700 /home/demoCA/private
echo 01 > /home/demoCA/serial
touch /home/demoCA/index.txt
openssl req -new -x509 -keyout /home/demoCA/private/cakey.pem -out /home/demoCA/cacert.pem -days 3650

  ~略~
Verifying - Enter PEM pass phrase:     ※パスワード入れないとエラーになるので入力
-----
  ~略~
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Setagaya-ku
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:*.hogehoge.com
Email Address []:


csr生成

mkdir -p /etc/squid/ssl/private
chmod 0700 /etc/squid/ssl/private
openssl genrsa -des3 -out /etc/squid/ssl/private/serverkey.pem 2048
chmod 0400 /etc/squid/ssl/private/serverkey.pem
openssl req -new -key /etc/squid/ssl/private/serverkey.pem -out /etc/squid/ssl/server.csr    ※CA構築時と同じ情報を対話的に入力


サーバ証明書作成

※/homeに移動するのがポイント:http://askubuntu.com/questions/382611/file-says-it-doesnt-exist-but-it-is-right-there

cd /home; pwd
openssl ca -in /etc/squid/ssl/server.csr -keyfile /home/demoCA/private/cakey.pem -cert /home/demoCA/cacert.pem -out /etc/squid/ssl/cert.pem

証明書からパスワード除去

openssl rsa -in /etc/squid/ssl/private/serverkey.pem -out /etc/squid/ssl/private/nopass_serverkey.pem ※CSR作成時のパスワード入力


squid3設定

証明書を読み込む設定に変更

$ sudo vi /etc/squid3/squid.conf
  ~中略~

acl hogewww   dstdomain www.hogehoge.com   hogehoge.com
https_port 443 accel vhost cert=/etc/squid/ssl/cert.pem key=/etc/squid/ssl/private/nopass_serverkey.pem
cache_peer www.hogehoge.com parent 443 0 no-query originserver name=hogewww
cache_peer_domain hogewww www.hogehoge.com hogewww
 ~中略~

起動失敗

設定ファイルをチェックすると、ubuntuのバイナリだとsslを利用できない模様。。

$ sudo squid3 -k parse
2014/06/01 08:20:43| ERROR: 'https_port' requires --enable-ssl

squid3再起動

$ sudo service squid3 restart

[Linux] wget

memo

続きを読む

[CentOS] dhcp設定による/etc/resolv.confの自動変更を防ぐ

DHCPを利用時、"/etc/resolv.conf"のnameserverが、

networkサービス起動時にDHCPの取得したアドレスに変更される。

[回避策]]

ネットワークアダプタ「/etc/sysconfig/network-scripts/ifcfg-eth0」に

"PEERDNS=no"のエントリを追加

[MySQL] sqlの実行履歴を保存

sqlの実行履歴を保存

$ sudo vi /etc/my.cnf
[mysqld]
log=/path/to/file

[ログファイル作成]

$ sudo mkdir /path/to/file
$ sudo chown mysql:root /path/to/file
$ sudo /etc/init.d/mysql restart


teeコマンドを利用

mysqlのプロンプトからteeコマンドを実行

mysql> tee /path/to/file
mysql> notee          # ログ取得停止

[Ruby] Active Record

作成中

Rail4ではfindは廃止

http://railsdoc.com/references/find

rails3からrails4で大きく変更があったメソッドの一つ。

find(:all)やfind(:all, :conditions ...)などの書き方が廃止になりました。whereなどを使うようにしてください。

※AREL(https://github.com/rails/arel#readme)が導入されたによる影響。ActiveRecordのfindが使えなくなった訳ではない。

where

Model.where("id = ?", 10).first
# 複数指定する場合は配列を使用
Model.where("id IN (?)", [10, 20])
# joinがある場合
Model.where("models.id = ?", 10).first
Model.where("models.id IN (?)", [10, 20])

参考:http://ryopeko.hatenablog.com/entry/20101215/1292373612


Arelで組み立てたSQLをfind_by_sqlで実行

http://d.hatena.ne.jp/takihiro/20100923/1285215139

sql = model.project(config[:id]).where(config[:name].eq('hoge')).to_sql
Model.find_by_sql(sql)

pluckメソッド

puts Model.pluck(:id)  # "puts T_config_file.select(:id).map(&:id)"と同価


sqlを表示

puts Model.pluck(:id).to_sql #=> SELECT `models`.`id` FROM `models`

[explain]

puts Model.pluck(:id).explain


distinctはuniqを使用

Client.select('DISTINCT name')
# 以下も同じ動作
Client.select(:name).uniq


find

# id列、name列を表示
Model.find(:all, :select => "id, name")

[プレースホルダ]

# ex1
Model.find(:all, :conditions => ["id = ? and name = ?", params[:id], params[:name]])
# ex2
Model.find(:all, :conditions => ["id = :id and name = :name", {:id => params[:id], :name => params[:name]}])


find_by_

result = Model.find_all_by_id(1)
result.to_a.each do |p|
  puts p[:id]
end


find_by_sql

sql = "select * from models where id = ? and name = ?"
id = 1
name = 'foo'
Model.find_by_sql([sql, id, name])

cond = Hash.new
sql = "select * from models where id = :id and name = :name"
cond[:id] = 1
cond[:name] = 'foo'
Model.find_by_sql([sql, cond])


テーブル定義を表示

# カラム数を表示
puts Model.columns.size  #=>4
# カラム名を表示
puts Model.columns.map { |e| e.name }
["id", "name", "tel", "mail"]
# 属性を表示
puts Model.columns.map { |e| e.sql_type }
["int(10)", "varchar(30)", "int(10)", "int(10)"]

[Ruby] mysql2のgemインストールに失敗(mac(10.8.5)/mysql56(macports)環境)

解決=>mac(10.8.5)/mysql56(macports)環境でmysql2のgemインストールに失敗

続きを読む

[MySQL] MySQL56初期設定

macportsからインストールしたMySQL5.6のセットアップ

続きを読む

[MAC] MySQL56インストール

Macportsからのインストール

続きを読む

[MySQL] 画像データをインサート

備忘録

base64を利用することも出来るが、一番簡単なのは"load_file"かと。

LOAD_FILE(file_name)

mysql> UPDATE t
            SET blob_col=LOAD_FILE('/tmp/picture')
            WHERE id=1;

[Ruby] csvファイルの処理

Ruby標準添付のcsvライブラリを使用

続きを読む
プロフィール

edworld

記事検索
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

livedoor 天気
  • ライブドアブログ