Ubuntu 16.04LTS はデフォルトが php7 で、時に php5 が必要なことがあるので、そんなときにどうするかのメモ。
Linux コマンドを実行したはいいものの、なかなか処理が終わらないので、バックグラウンドに移してログアウトしたい時のコマンド。
$ command Ctrl-z $ disown -h $ bg
最初からわかってるなら、 nohup コマンドをよく使う。
$ nohup command &
iMac の HD を新しい SSD に置換したので、 OS を入れようとした時に欲しかったので作った。
ローカルに Sierra のアップデータがちょうど残っていたので、それを利用。多分 El Captin でも High Sierra でも同じなんだろう
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 は割とわかりやすい設定ファイルを 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 をすると反映されます。
Apache で SSL のテストをする際に certificate を作成する方法をいつも探しているのでメモ。
とりあえず openssl だけ yum とか apt-get でインストールしておく。
後で詳細は書くとして、とりあえずメモ。 Windows 10 Pro, VMWare Workstation 12 Pro, Unlocker 2.0.8, Mac OS X 10.11, DELL XPS 15
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
入れたら、 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 を入れれば、マウスの動きもディスプレーサイズも快適になります。
Linux でディスク容量を確認するのに dfコマンドをよく使いますが、ふと不思議なことに気付いた。Used + Available != Total である。
調べてみると、 ext2/ext3/ext4 では標準で 5% を root ユーザーのみの領域として確保してあるらしい。システムが完全に一般ユーザーにディスクを使われないように確保するものらしい。
ただ、別にそんな領域なくても困らないパーティションもあるわけで、その場合は、以下のコマンドでその領域を減らす、もしくは完全になくすことができる。
sudo tune2fs -m 1 /dev/xvdb1
1 はパーセンテージ。 0 を指定すれば、完全になくなる。確認するには
sudo tune2fs -l /dev/xvdb1
しょっちゅう使ってるのに全く覚えないコマンドをメモ。
git reset --soft 'HEAD^'
git commit --amend -m "New commit message"
もしまだ誰もフェッチしてない、プッシュしてないなら、、取り消したい commit を指定して
git push origin +abcdef123456^:master
そしてローカルで soft reset
リモートで
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
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 (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 show interface
netsh interface ipv4 show dnsservers
netsh interface ipv4 add dnsserver "Local Area Connection ?" address=xx.xxx.x.xx index=1
netsh interface ip set dns "Wi-Fi" dhcp
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
これで一応成功した。
重要ファイルは全て暗号化した dmg にして保存しているので、これをクリックしてマウントするかわりに、コマンドラインでできないか探した所、 hdiutil というのがあるらしい。
hdiutil attach /path/to/diskimage.dmg
lftp を使うと FTP ミラーが簡単にできる。
lftp -e "mirror --only-newer 20140101 && exit" -u username,password ftp.domain.com
seq コマンドを使って、例えば日付を順番に処理したい場合などに便利なコマンド。
for i in `seq 1 31` ; do echo `printf "201401%02d" $i`; done
などとやると 20140101 から 20140131 まで順番に echo コマンドを実行してくれる。
例えば 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 ポートを開いていると、間違いなくパスワード総当り攻撃を食らう。これが酷い時は、 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
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 がインストールされていることは何となく分る。
参考文献
新しいホスティングに移動するにあたって、せっかくなので HTTP サービスを整理してみた。その時に HAProxy をフロントの Proxy に使ってみたのでメモ。
環境は以下のとおり
公開しているサービスは色々あり、これを整理したかった。
これを一台でやってるので、 haproxy は別にロードバランサー的な役割は特にしていない。ただのプロキシ、兼SSL。