主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

ubuntu 16.04 で複数のバージョンの PHP を使う、切り替える


Ubuntu 16.04LTS はデフォルトが php7 で、時に php5 が必要なことがあるので、そんなときにどうするかのメモ。


もっと読む

foreground job を background にして、ログアウト後も継続するようにするには

Linux コマンドを実行したはいいものの、なかなか処理が終わらないので、バックグラウンドに移してログアウトしたい時のコマンド。

$ command
Ctrl-z
$ disown -h
$ bg

最初からわかってるなら、 nohup コマンドをよく使う。

$ nohup command &

Mac OS のインストーラーを作るには

iMac の HD を新しい SSD に置換したので、 OS を入れようとした時に欲しかったので作った。

ローカルに Sierra のアップデータがちょうど残っていたので、それを利用。多分 El Captin でも High Sierra でも同じなんだろう


もっと読む

cygwin で sudo

/usr/bin/sudo に以下のスクリプトを書いておしまい。

#!/bin/bash

cygstart --action=runas "$@"

Firewalld で DNAT

firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.1.10
firewall-cmd --reload
参考: https://myredhatcertification.com/2015/04/26/firewalld-masquerade-forwarding-transparent-proxy/

Firewalld で特定のソースに対してのルールを設定するには

Firewalld は割とわかりやすい設定ファイルを XML で作成して、 IPTABLES をきれいに吐き出してくれるなかなか便利なツール

とは言っても、慣れるまでは色々調べながらやらないといけないので、適当にメモ。

新規ゾーンを作成

特定 source/if に対するゾーンを作成する

firewall-cmd --new-zone=safer --permanent
firewall-cmd --reload

そしてゾーンに属する source を追加

firewall-cmd --permanent --zone=safer --add-source=1.2.3.4/32

このゾーンからのアクセスを許可するポート、サービスを指定

firewall-cmd --permanent --zone=safer --add-port=1234/tcp

ここまでやると、 /etc/firewalld/zones/safer.xml が作成されているので、一応確認して、 --reload をすると反映されます。

SSL Certificate を作成するには

Apache で SSL のテストをする際に certificate を作成する方法をいつも探しているのでメモ。

とりあえず openssl だけ yum とか apt-get でインストールしておく。


もっと読む

Windows で VMWare に Mac OSX El Capitan を入れるには

後で詳細は書くとして、とりあえずメモ。 Windows 10 Pro, VMWare Workstation 12 Pro, Unlocker 2.0.8, Mac OS X 10.11, DELL XPS 15

El Capitan をダウンロード

Mac で App Store から El Capitan をダウンロード。
ダウンロードされたものは /Applications/Install OS X El Capitan.app に保存されている。
その中から /Applications/Install OS X El Capitan.app/Contents/SharedSupport/InstallESD.dmg を取り出しておく。

起動イメージの生成

この DMG ファイルは自動でブートせずにうまく実行されないので、以下のコマンドを実行して、自動ブートするようにする。 http://www.insanelymac.com/forum/topic/308533-how-to-create-a-bootable-el-capitan-iso-fo-vmware/

#!/bin/bash
 
 # Mount the installer image
 hdiutil attach /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app
 
 # Create the ElCapitan Blank ISO Image of 7316mb with a Single Partition - Apple Partition Map
 hdiutil create -o /tmp/ElCapitan.cdr -size 7316m -layout SPUD -fs HFS+J
 
 # Mount the ElCapitan Blank ISO Image
 hdiutil attach /tmp/ElCapitan.cdr.dmg -noverify -nobrowse -mountpoint /Volumes/install_build
 
 # Restore the Base System into the ElCapitan Blank ISO Image
 asr restore -source /Volumes/install_app/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase
 
 # Remove Package link and replace with actual files
 rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages
 cp -rp /Volumes/install_app/Packages /Volumes/OS\ X\ Base\ System/System/Installation/
 
 # Copy El Capitan installer dependencies
 cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/BaseSystem.chunklist
 cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/BaseSystem.dmg
 
 # Unmount the installer image
 hdiutil detach /Volumes/install_app
 
 # Unmount the ElCapitan ISO Image
 hdiutil detach /Volumes/OS\ X\ Base\ System/
 
 # Convert the ElCapitan ISO Image to ISO/CD master (Optional)
 hdiutil convert /tmp/ElCapitan.cdr.dmg -format UDTO -o /tmp/ElCapitan.iso
 
 # Rename the ElCapitan ISO Image and move it to the desktop
 mv /tmp/ElCapitan.iso.cdr ~/Desktop/ElCapitan.iso

VMWare Workstation 12 Pro をいれる

入れたら、 unlocker を使って、 Mac イメージを作れるようにパッチ。
http://www.insanelymac.com/forum/files/file/339-unlocker/
2.0.8 を使用した。
展開して win-install.cmd を administrator で実行。

イメージの作成

後は VMWare Workstation でイメージを作成する。
Installer disc image file (iso) に作った ISO をしてして、標準の設定で作成する。

そのままだとエラーが出てブートしないので、イメージ設定ファイルの .vmx ファイルを開き以下の行を追加。

smc.version = 0

これで後はインストールすればおしまい。インストール後に VMWare Tools を入れれば、マウスの動きもディスプレーサイズも快適になります。


もっと読む

ext2/3/4 での df コマンドの出力の差

Linux でディスク容量を確認するのに dfコマンドをよく使いますが、ふと不思議なことに気付いた。Used + Available != Total である。
調べてみると、 ext2/ext3/ext4 では標準で 5% を root ユーザーのみの領域として確保してあるらしい。システムが完全に一般ユーザーにディスクを使われないように確保するものらしい。

ただ、別にそんな領域なくても困らないパーティションもあるわけで、その場合は、以下のコマンドでその領域を減らす、もしくは完全になくすことができる。

sudo tune2fs -m 1 /dev/xvdb1

1 はパーセンテージ。 0 を指定すれば、完全になくなる。確認するには

sudo tune2fs -l /dev/xvdb1

git メモ

しょっちゅう使ってるのに全く覚えないコマンドをメモ。

取り消し系

1個前のコミットを取り消す

git reset --soft 'HEAD^'

ログコメントだけ治すなら

git commit --amend -m "New commit message"

コミットのみならずプッシュまでしてしまった

もしまだ誰もフェッチしてない、プッシュしてないなら、、取り消したい commit を指定して

git push origin +abcdef123456^:master

そしてローカルで soft reset

ローカルで作業していたのをリモートの bare へアップ

リモートで

mkdir hoge.git; cd hoge.git
git init --bare --share

ローカルから

git remote add origin ssh://git@hoge.com/home/git/hoge.git
git push origin --all
git push origin --tags

リモート URL の変更

git remote set-url origin ssh://git@hoge.com/home/git/fuga.git

リモートブランチの削除

git branch -d -r origin/somefeature
git push origin :somefeature
or
git push origin --delete somefeature

もっと読む

Windows gvim の設定

Windows (8, 8.1, 10)上で gvim を使う際に、 Unix 版とは異なる点があるので、色々とメモ。

設定ファイルマッピング

まず初めて設定ファイルの名称と置き場所だが、まずベースとなるのは UNIX と同じく $HOME。分らない時は gvim 上で :echo $HOME などとやればわかる。

Windows 上ではあまりドットファイルを作らないので、 .vimrc.viminfo の代わりに _vimrc, _viminfo を使う。
また autoload や bundle を置く .vim ディレクトリは vimfiles という名前でフォルダを作る。

具体的に私の場合、 cygwin のユーザーホーム上に .vimrc などを作って、Windows user home の _vimrc へショートカットを張っている。

日本語の文字化けの対処

vim はフォントが monospace じゃないと文句を言ってくるようで、 .vimrc に以下を追加して対応できた。

set guifont=Consolas:h10,Lucida_Console:h10:w5 guifontwide=MS_Gothic:h10
set encoding=utf-8
set fileencodings=utf-8,euc-jp,sjis

スタートアップディレクトリ

gvim をアイコンから起動すると、通常ディレクトリポジションが C:\Windows\System32 になっている。これを例えば $HOME から起動するようにするには、 _vimrc ファイルに

...
:cd $HOME
...

などと書いておけば良い。

netsh コマンドメモ

たまになんとなく使う netsh コマンドのメモ

interface

interface 一覧

netsh interface show interface

ip

dns server 一覧

netsh interface ipv4 show dnsservers

dns server の追加

 netsh interface ipv4 add dnsserver "Local Area Connection ?" address=xx.xxx.x.xx index=1

dns を hdcp でとるようにする

netsh interface ip set dns "Wi-Fi" dhcp

ubuntu で ext4 をリサイズするには

ubuntu 以外でも可能かもしれないが、とりあえずここでの前提としては ubuntu-12.04 で LVM が搭載されていないケース。
また、クラウドなどを使っていて、ドライブの増量をしたはいいけど、 ext4 ファイルシステムはどうすればいいか、というもの。

調査した結果、 partd は現時点で ext4 をサポートしていないので、少し怖いのだが、パーティションを削除して、データを上書きせずに再作成するという方法。ちなみに、ディスクはその間アンマウントしてないといけない。あまり実用的ではないが、設定中などのケースではそれでも有効なのでメモ。

本当にうまくいくか保証しないので、データのバックアップは取った方が無難です。

まずは、該当のパーティションを削除。 cfdisk を使う。

sudo cfdisk /dev/xvdb

対象のパーティション(ドライブに1つと仮定)を削除して、完全にフリーな状態へする。

そうしたら、後は fdisk でパーティションを全サイズ使って作成する。

sudo fdisk /dev/xvdb

そして、次にファイルチェック

sudo e2fsck -f /dev/xvdb1

最後にファイルシステムを再構築

sudo resize2fs /dev/xvdb1

これで一応成功した。

Mac で DMG ファイルをコマンドラインでマウントするには

重要ファイルは全て暗号化した dmg にして保存しているので、これをクリックしてマウントするかわりに、コマンドラインでできないか探した所、 hdiutil というのがあるらしい。

hdiutil attach /path/to/diskimage.dmg

lftp を使って FTP ミラーするには

lftp を使うと FTP ミラーが簡単にできる。

lftp -e "mirror --only-newer 20140101 && exit" -u username,password ftp.domain.com

Linux で連続数をコマンドで処理

seq コマンドを使って、例えば日付を順番に処理したい場合などに便利なコマンド。

for i in `seq 1 31` ; do echo `printf "201401%02d" $i`; done

などとやると 20140101 から 20140131 まで順番に echo コマンドを実行してくれる。

Linux ファイルの変更を監視するには

例えば Web コンテンツがハッキングなどによって書き換えられてしまった際にそれを検知できると助かります。
Tripwire などの商用ツールも有りますが、 Linux には auditd というデーモンがあります。これが割りと便利なので簡単な使い方をメモ。

特定のディレクトリを丸ごと監視

例えば /var/www ディレクトリ内で発生する書き込み、属性の変更を監視したい場合、以下の様なルールを作る。

# vi /etc/audit/audit.rules
# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Feel free to add below this line. See auditctl man page

-w /var/www/ -p wa -k web-wa

-w は監視対象ディレクトリ
-p は監視の種類、 w: 書き込み a: 属性 r: 読み込み など
-k はログを見る際などのキーになる

更に特定のディレクトリだけは関しから外したいような場合は

-a exit,never -F dir=/var/www/tmp -k exclude
-a exit,never -F dir=/var/www/cache -k exclude
-a exit,always -F dir=/var/www -F perm=wa -k web-wa

などとやるとできる。


もっと読む

SSH の ブルートフォース攻撃を iptables で防ぐには

SSH ポートを開いていると、間違いなくパスワード総当り攻撃を食らう。これが酷い時は、 SSH ポートに接続できなくなる位ひどい時もあるので、前もって対策しておきたい。

F/W や iptables でアクセス元の IP を制限すればいいんだけど、それができないケースなどは以下の iptables ルールで、一分間に3回以上接続がきた IP をブロックする。

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP
  • 1行目:チェーン名を作る
  • 2行目:22番ポートへの最初のインバウンド SYN パケットを SSH_CHECK チェーンにマーク
  • 3行目:SSH という名前で SSH_CHECK チェーンに引っかかったパケットを一時リスト
  • 4行目:随時60秒間一時リストを更新しつつ、4回以上引っかかったら DROP する

grub の再インストールと確認

grub を MBR にインストールするには

$ sudo grub-install /dev/sdX(ex. /dev/sda)

インストールされたことを確認するには、ちょっと強引だが

$ sudo dd bs=512 count=1 if=/dev/sdX 2>/dev/null | strings
ZRr=
...
GRUB
...

などすれば、とりあえず grub がインストールされていることは何となく分る。

参考文献

HAProxy の設定メモ

新しいホスティングに移動するにあたって、せっかくなので HTTP サービスを整理してみた。その時に HAProxy をフロントの Proxy に使ってみたのでメモ。

環境は以下のとおり

  • Ubuntu 14.04.1 LTS

公開しているサービスは色々あり、これを整理したかった。

  • PHP で動いているこのブログ
  • Ruby on Rails のホームページ(Unicorn+Nginx 構成)
  • Ruby on Rails のテスト環境(Unicorn+Nginx 構成)
  • https 上の ownCloud(php)
  • https 上の SVN(apache)
  • その他 Apache で捌いているバーチャルドメイン

これを一台でやってるので、 haproxy は別にロードバランサー的な役割は特にしていない。ただのプロキシ、兼SSL。


もっと読む
ページ: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank2, rank3, rank7, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google