PHP-8.1 on Ubuntu-22 で composer をインストールしようとした時の事。
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" PHP Warning: copy(https://getcomposer.org/installer): Failed to open stream: Connection timed out in Command line code on line 1
PHP での copy() でタイムアウトしてる?
curl とか wget なら問題ないから、
allow_url_fopen とか allow_url_include とか、PHP 関連かと思って色々試しても全然解決できない。
なんかクラウドの環境の依存かなとかホスティングかなとか、散々困った挙句、結局以下で解決。
# echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
なんでこれで解決するの
ssh -f -N -R 9000:localhost:3000 user@example.com
リモートサーバーの 9000 番に接続した際に、接続元のローカルホストの 3000 番に接続する例。-f -N はトンネルだけ作る場合。.ssh/config に書く場合は
Host example HostName example.com Port 22 User user RemoteForward 9000 localhost:3000
ssh -L 127.0.0.1:2525:localhost:25 user@example.com
Apache などのアクセスログから、ぱっと簡単な統計を見たい時などに awk は便利です。
便利なものをメモ。
でも最近は大体 goaccess を使っている。
どうしようもない不要メールがキューに溜まってしまうことがあります。
この場合は postsuper コマンドを使用して削除できます。
postfix のメールキューは /var/spool/postfix/ 配下のディレクトリにそれぞれの意味合いごとに溜まります。
例えば deferred のメールを全部削除したい場合は以下のコマンドを実行します。
# postsuper -d ALL deferred
サブジェクト、ってピンポイントでは難しいですが、メール内の文字にマッチしたものだけ削除するときは。
# cd /var/spool/postfix # grep -r -i -l "This is unique subject" ./ | cut -d/ -f3 | postsuper -d -
CRONジョブなど、予期せず強制終了されたプロセスを確認したい場合に便利なコマンド。
abrt-cli list --since 12345678
12345678 は Unixタイムスタンプ。
多分一番簡単にファイル内の行を削除するのは sed コマンドです。
その他にも grep コマンドを使用したりしても十分行えます。
sed で abc を含む行を全削除するには以下のコマンドを実行します。
$ sed '/abc/d' input.fileパイプで渡すこともできます。
$ cat input.file | sed '/abc/d'
ちなみに sed は他の目的でもかなり色々使えます。行の削除で言うと、行数を指定した方法など。
$ sed '1d' input.file
行をまとめて削除などは
$ sed '1,10d' input.file
Ubuntu 16.04LTS はデフォルトが php7 で、時に php5 が必要なことがあるので、そんなときにどうするかのメモ。
Linux コマンドを実行したはいいものの、なかなか処理が終わらないので、バックグラウンドに移してログアウトしたい時のコマンド。
$ command Ctrl-z $ disown -h $ bg
最初からわかってるなら、 nohup コマンドをよく使う。
$ nohup command &
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 でインストールしておく。
Linux でディスク容量を確認するのに dfコマンドをよく使いますが、ふと不思議なことに気付いた。Used + Available != Total である。
調べてみると、 ext2/ext3/ext4 では標準で 5% を root ユーザーのみの領域として確保してあるらしい。システムが完全に一般ユーザーにディスクを使われないように確保するものらしい。
ただ、別にそんな領域なくても困らないパーティションもあるわけで、その場合は、以下のコマンドでその領域を減らす、もしくは完全になくすことができる。
sudo tune2fs -m 1 /dev/xvdb1
1 はパーセンテージ。 0 を指定すれば、完全になくなる。確認するには
sudo tune2fs -l /dev/xvdb1
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
これで一応成功した。
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
などとやるとできる。
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。
SMTP でちょっとテストしたい時などに SMTP コマンドを実際に叩いてテストすることがよくあるが、 smtp auth のやり方がいまいち分からなかったので、調べた時のメモ。
マシンにディスクを追加したり、 VMWare でディスクサイズの変更をした際に、既存の ext4 をリサイズするためのメモ。
最近は Cloud ばっかりなので、こういうのはすっかり忘れている。