CentOS ITかあさん

ITかあさん

真夏のMySQL!! HDDいっぱいで緊急停止事件簿

down-your-site

真夏の怖い話と言えばやっぱりあれですよね

真夏ですし、今日は恐怖の怪談話をしましょう。。
突然電話が鳴ってですね、こう言われるんですよ。。。。。

「サイト落ちてますよ」

いやあああああああああ!!!!!!!!!

Webエンジニア恐いのは、幽霊じゃない、妖怪じゃない、ゾンビじゃない!!
「サイトが何故か落ちてる」問題!!

震える指先、笑うヒザ。。安定運用を3年、なーんの異常もないまま3年経過した運用サーバ。(VPS) クラウドじゃないのでオートスケール対応してないので、何らかの事情で落ちるケースもある。お安いVPS。落ちることもたまにはあるでしょう。

過去の経験則から Apacheかと推測し、とりま再起動しようとするも。。あれ?Apacheは落ちてない。

??

セツコ!!落ちたのはApacheやない!MySQLや!

アンちゃん。。。。

MySQLもアクセス不可で落ちることもありますね。

MySQLを再起動するも。。。。。

# /etc/init.d/mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [FAILED]

※CentOS6の運用サーバのため、古いコマンドです

??あれ?停止したあと起動しない

# /etc/init.d/mysqld start
MySQL Daemon failed to start.
Starting mysqld: [FAILED]

!!!!!????????

起動しない!!

何度やっても起動しない!

down-your-mysql

運用サーバのMySQLが死亡した模様。。

ギャーーーー!!!!!

落ち着いてMySQLのログを確認することに。

# tail -f /var/log/mysqld.log
2017-07-25 12:52:43 29864 [ERROR] /usr/sbin/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28 – No space left on device)
2017-07-25 12:52:43 29864 [ERROR] Can't start server: can't create PID file: No space left on device

No space left on device?? お前のデバイスはもう空きがない、HDDがいっぱいで起動出来ないですと??

df コマンドで、ディスクの空き容量を調べる

-hオプションで容量に対してそれっぽい単位で表示してくれます

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 98G 93G 0 100% /
tmpfs 1003M 0 1003M 0% /dev/shm

100%!!!!use 100%!! もう全く容量が完全に限界まで使われていました。

今回運用していたサーバは格安のVPS。クラウドではないため 容量アップも出来ません。そもそもコンテンツとしての容量も100GB容量のVPSに10GB程度しか積んでません。

でも原因は分かりました。何かがHDDの容量を圧迫していてMySQLの起動に失敗しているようです。

HDDの容量を圧迫している箇所を知る方法

# sudo du -sh /*

.
.
.
8.0K /tmp
789M /usr
90G /var

これでどのディレクトリがどれだけの容量のデータを積んでいるのかわかります。varが90Gも持ってることが分かりますね。
あとはディレクトリの階層を掘りながら再びds

# du -sh /var/*
.
.
.
8.0K /var/lock
90G /var/log
0 /var/mail
.
.

HDDの容量90%を占める溜まりまくったクソログが原因と判明。。
btmpとsecureのログがかなり溜まっている様子。サーバへの不正ログイン系ですね。
確かにSSHは22番ポートをデフォルトで使っていましたが、こういう不正ログインのクソログの温床にもなるのでやはりsshのポートは22以外にしておくのがベータのようです。

# cd /var/log
# ls -ll
total 6968212
-rw——- 1 root root 0 Feb 23 2015 anaconda.log
-rw——- 1 root root 0 Feb 23 2015 anaconda.program.log
-rw——- 1 root root 0 Feb 23 2015 anaconda.storage.log
-rw——- 1 root root 0 Feb 23 2015 anaconda.syslog
-rw——- 1 root root 0 Feb 23 2015 anaconda.xlog
-rw——- 1 root root 0 Feb 23 2015 anaconda.yum.log
drwxr-x— 2 root root 4096 Jul 24 02:45 audit
-rw-r–r– 1 root root 33415 Sep 14 2015 boot.log
-rw——- 1 root utmp 4422120960 Jul 25 13:08 btmp
-rw——- 1 root root 10876 Feb 26 2015 cron
-rw-r–r– 1 root root 19284 Sep 14 2015 dmesg
-rw-r–r– 1 root root 19284 Feb 25 2015 dmesg.old
drwx—— 2 root root 4096 Feb 26 2015 httpd
-rw-r–r– 1 root root 148044 Jul 25 12:35 lastlog
-rw——- 1 root root 8450523 Jul 25 13:12 maillog
-rw——- 1 root root 277469 Jul 24 15:33 messages
-rw-r—– 1 mysql mysql 4865748 Jul 25 13:12 mysqld.log
drwxr-xr-x 2 ntp ntp 4096 Nov 29 2011 ntpstats
-rw——- 1 root root 2692548419 Jul 25 13:08 secure
-rw——- 1 root root 0 Feb 23 2015 spooler
-rw——- 1 root root 0 Feb 23 2015 tallylog
-rw-rw-r– 1 root utmp 36480 Jul 25 12:35 wtmp
-rw——- 1 root root 4197 Dec 21 2015 yum.log

このほかApacheでも大量のログを持っていることが判明。

# du -sh /var/log/httpd/*
0 /var/log/httpd/access_log
168K /var/log/httpd/error_log
488K /var/log/httpd/ssl_access_log
664K /var/log/httpd/ssl_error_log
624K /var/log/httpd/ssl_request_log
6.8G /var/log/httpd/virtual-access_log
76G /var/log/httpd/virtual-error_log

溜まったログを削除していきます。

手順はどのログの削除も一緒なのでbtmpのみ記載します

rm btmp
rm: remove regular file `btmp'? y (本当に消していいの?と聞かれるので”y”で)

touchして権限を600にしておきます。同様に全てのクソログ溜まったログファイルを同様の手順で一度削除して、新しくファイルを作ってください。

# touch /var/log/btmp
# chmod 600 /var/log/btmp

ファイルをrmしたはずなのに、HDDの使用量に変化がない!!

やばいファイルをrmしたはずなのに、HDDの使用量に変化がほぼ変化が起きない

参考

rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
参考の通りなのですが、プロセスが活きている使用中のファイルはrmしても変化が無いようです。
今回だと調べた結果、一番ヤバいログはhttpdに関連するログでした。対象のログファイルをrmしたあとhttpdを再起動したところ無事HDDの使用量は劇的に減りました

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 98G 5.8G 87G 7% /
tmpfs 1003M 0 1003M 0% /dev/shm

# /etc/init.d/mysqld start
MySQL Daemon failed to start.
Starting mysqld: [OK]

無事起動が確認できました

まとめ

サーバ管理の専門職では無いためやはり運用しているサイトのサーバが落ちると焦ります。が、やはり冷静にログを見れば解決方法は必ずあるはずなので。
サイトが落ちたときの監視として クラウドサーバ以外のサーバでは外部サービスで80ポート監視して一定時間応答がなければメールでお知らせするように設定していました。
今回だとMySQLが完全に落ちてしまい、アクセス不可による停止出なかったた80ポートは正常動作。これにより発見が遅れてしまいました。
クラウドサーバだとこれらHDDの容量制限が危なくなるとメールでお知らせしてくれるものですが、格安VPSにはこれらは自分で監視しなければなりません。。
やっぱりクラウドが何かと安心で便利。月額1000円程度のVPSは月間数万PVくらいしか耐えられないかもしれません。やはり今回の運用サイトは移転が必要かもしれません。
あ、なお今回落としたのはITかあさんブログではありません。ITかあさんはクラウドでオートスケールに対応しているからです。
今後はログも含めたHDDの容量の監視にも目を光らせていと思います。まる。

クッソ古いCentOS yumコマンドでこける、でもbaseurl書き換えで解決

昔むかし あるところにCentOS 5.11というくそ古いサーバーがあったんじゃ

NKJ52_usuguraichikurin_TP_V
おじいさんは山へ芝刈りに、おばあさんはMacのターミナルでCentOS 5.11でyumコマンドを叩いたそうな。

おばあさん「ガッデーーーーーーーム!!」

エラー: Cannot find a valid baseurl for repo: base

そうです、baseurlが未定義だったのです。

vi /etc/yum.repos.d/CentOS-Base.repo

baseurlにcentosを配布してくれているriken.jpにbaseurlを設定することにしました。

baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/

おばあさん「ガッデーーーーーーーム!!」

==> default: http://ftp.riken.jp/Linux/centos/5/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not Found

おばあさんは理研の配布元にアクセスしました。すると。。

おばあさん「ガッデーーーーーーーム!!」

This directory (and version of CentOS) is depreciated.

CentOS-5 is now past EOL

You can get the last released version of centos 5.11 here:

http://vault.centos.org/5.11/

Please NOTE: this is not being maintained for security since moving to Vault.
It will have security issues, you should upgrade to a new version instead.

EOL(End Of Life) お前はすでに死んでいる。

でも対処方法はわかりました、baseurlにcentos5.11の配布元を探して設定すればいいのです。
おばあさんはarchive.kernel.orgというサイトを見つけました。
http://archive.kernel.org/centos-vault/
ここになら目的のCentOSのバージョンが配布していそうです。

vi /etc/yum.repos.d/CentOS-Base.repo

baseurlを目的のクソ古いバージョンに変えてあげます

baseurl=http://archive.kernel.org/centos-vault/5.11/os/x86_64/

おばあさんは無事CentOS5.11のupdateができましたとさ。 めでたしめでたし

CentOS7×Apache2系でPermission設定777にしても書き込み権限できないときはSELinuxの設定を疑う!

もうだまされないぞ!CentOS7×Apache2系でPermission設定777にしても書き込み権限できないときはSELinuxの設定を疑う!

今回は壮大にはまりましたよ!でも分かってしまうと原因はとても単純でした

久々にWordPressでWEBサイト構築したんですよ、CentOS7とApache2系で。

たとえpermission777にしても、ユーザーグループをapacheにしても権限エラー。。

ことの発端はWordPressのメディアアップローダーが動作しないこと、何度やっても「ディレクトリに移動できません」エラー。ややや?
permission777にしても、ユーザーグループをapacheにしても権限エラーが出るので完全にお手上げ。php.iniのsafe_modeもoffになっているのでこれも違う。

CentOS7ではSELinuxがデフォルトで有効になってるよ

LinuxベースのセキュアOSのSELinux。たとえroot がのっとられてもシステムの影響を最小限にしようぜ!的な考えがあるようですが、かあさんの脳みそでは詳しいことは分かりません。
乱暴ですが、SELinuxを強制的にoffにすることで書き込み権限に関する問題は解決できました!

# setenforce 0

一応、切らずに設定もできるようです。
私の場合、一度offにしhていたのですが、サーバーを落として再度起動した際に再びONになってしまったため発生した問題のようです。
permission 権限、safe_modeもいずれも問題ないのにpermissionエラーが発生したらSELinuxを思い出して頂ければと思います。

CentOS7でLAMP+MongoDB環境を作る

CentOS7でLAMP+MongoDB環境を作る

CentOS

CentOS7(64bit)でLAMP+MongoDB環境をサクっと作るためのコマンドメモです。
自分用にメモっておきました。
近いうちシェルスクリプトで固めて、vagrantで一発で作れるようにしたいなあ。
2016年3月15日時点で、PHP5.6 MySQL5.6 MongoDB 3.2環境の構築手順です。
この他git comporser も入ってますがSMTPサーバーは立ててないのであしからず。
クラウドサーバーのコントロールパネルからポート番号を指定して空けていくことが可能な場合、fierwallコマンドでポート空けて行く作業は必要無いです。

MongoDBリポジトリ

MongoDBはリポジトリを予め指定しておく必要があります。

# vi /etc/yum.repos.d/mongodb.repo

以降、CentOS7 LAMP+MongoDBインストール手順

【緊急事体発生】ITかあさんブログがDOSアタック攻撃でダウン

【緊急事体発生】ITかあさんブログがDOSアタック攻撃発生!!

スクリーンショット 2016-02-18 9.26.56

ITかあさんの運営するサーバーが突如CPU70%越えて、MySQLに繋がらない問題発生!

ITかあさんのブログはWindowsAzureというクラウドサーバーで運用されています。ちなみにITかあさんの運営されているサーバーのスペックは以下の通り。

2 コア、3.5 GB メモリ CentOS6

まあ、一端のエンジニアごとき戯れ言のブログですから、これくらいあれば十分ですね。

夜間〜朝方にかけて猛烈なDOS攻撃!落ちるMySQL、繋がらないApacheサーバー

ざっけんなー!こらー!

ざっけんなー!こらー!

スクリーンショット 2016-02-18 9.26.56
こちらのグラフが明け方から落ち着きを取り始めた現在のWindowsAzureのCPU使用率なのですが、グラフの山が盛り上がっていますね。
あまりの重たさに一時的に

3 コア、7 GB メモリ

までメモリを増しましにした状態で、CPU60%越えに振り切れているっちゅーことで半端じゃないCPUの使用率ということがお分かり頂けると思います。

まずは冷静に状況の分析

サーバーが落ちる時点でもう顔面蒼白なのですが、メモリを一時的に増大させて何とかサイトを復旧させてここで一旦冷静に状況の分析から。なんとなーく原因はDOSくらっているんだろうなあと過去の経験から分かっているのですが。。

まずは冷静に状況の分析

明らかにCPUが高過ぎるので、「何がCPUを大量に消費しているのか」を調べます。

# ps au

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1997 0.0 0.0 4060 584 tty1 Ss+ Feb17 0:00 /sbin/mingetty

root 1979 0.0 0.0 4060 584 tty5 Ss+ 00:56 0:00 /sbin/mingetty

root 1981 0.0 0.0 4060 584 tty6 Ss+ 00:56 0:00 /sbin/mingetty

apache 2056 3.1 0.5 480216 38728 ? S 00:56 1:06 /usr/sbin/httpd

apache 2258 3.2 0.5 479168 39076 ? S 00:56 1:07 /usr/sbin/httpd

apache 2272 3.3 0.5 478932 38792 ? S 00:56 1:10 /usr/sbin/httpd

apache 2509 3.3 0.5 476300 36152 ? S 01:00 1:01 /usr/sbin/httpd

apache 2615 3.4 0.5 480420 40356 ? S 01:02 1:00 /usr/sbin/httpd
。。。。。。。。

apacheが多いなあ。。

# ps aux | grep httpd

すると
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
apache 2056 3.1 0.5 480216 38728 ? S 00:56 1:06 /usr/sbin/httpd

apache 2258 3.2 0.5 479168 39076 ? S 00:56 1:07 /usr/sbin/httpd
以下100行ほどapacheのプロセスが大量に渡って来ます。
試しにGoogleアナリティクスでリアルタイムのアクセス状況拾ってもその時間にサイトにアクセスしているのは朝方っていうこともあって数人しかおりません。
(っつーか1回のapacheプロセスに対して、CPU3%超えるようなアクセスってなんだよ!という話であってですね。もうこれはDOSアタックしかないですね)

DOSアタックの対処。国外アクセスの禁止

いつ落ちてもおかしく無いので一時的に国外からのアクセスを禁止します。(この手のDOSは中国系のDOSアタックが多いのは経験済みなので)

こちらのサイトから国外からのアクセスを禁止できる.htaccessを入手できますので、一先ずこれをWordPressの閲覧可能ディレクトリの直下の.htaccessにコピペします。
ただしこれをそのままにしておくことは出来ません。なぜならこのままだとfacebookからサイトにアクセスすることができないのでogpの取得ができなくなるのでソーシャルに一切対応していないサイトになってしまうからです。なので対処としては一時的に。

mod_evasiveモジュールの追加

Apacheのmod_evasiveモジュールでDOSアタックに対処します。1秒間に●●回アクセスしてくるIPアドレスを●●秒アクセス禁止にする
という設定が可能な有名なモジュールですね。
epelリポジトリが追加されているサーバーであればyumコマンドでインストール出来ます。

#yum install mod_evasive
#mkdir /var/lock/mod_evasive ログディレクトリ
#chown apache:apache /var/lock/mod_evasive  ログディレクトリへのアクセス権

mod_evasive.confの設定を変更します。

# vi /etc/httpd/conf.d/mod_evasive.conf


テストコマンドは以下。バージョンによって変わるので、/usr/share/docをlsコマンドで中身確認してtestスクリプトを実行してください。

perl /usr/share/doc/mod_evasive-1.10.1/test.pl

ちなみに私はテストすら出来ませんでした。
何度やってもテストがぜーんぶ200 OKでレスポンスが返ってくるんですね。最初なんでだろう!って辛くなったんですが、冷静に考えてみればこのテストの最中もアホか!ってほどDOS喰らっていたので、テストのシェルスクリプト1行ごとの実行に1秒より多くかかっていたためにまともにテストできなかったんですよ。あるんだねー、テストすらできなくなるほどのDOSアタック。

そんなわけでまとめ

CPUが突然爆発的に消費をはじめたらpsコマンドで原因を突き止めて、サイトのアクセス数に対してhttpdに対するCPUが爆発的に消費されていたらDOSアタック対策を行うこと。
以上!

追記

mod_evasiveは正しく設定できていたはずなのに、海外からのアクセスをもう一度許可をすると再びCPUが激しく増加しました。自分のサイトへの攻撃はDOSではなくDDOS(ディードス)だったもようで、mod_evasiveだけでは防ぐことが出来ませんでした。
ゆえに自分は海外からのアクセスは完全に拒否する対策を取って、facebookでOGPキャッシュを作る時だけ海外アクセスを許可する方法を取りたいと思います。出来れば国内だけに限定させるのは自分としてはあまりいい対処だとは思ってはいないので今後もDDOSへの対策を考えたいと思います。

MySQL5.6がInnoDB書き込み権限エラーで起動に失敗するよ問題

MySQL5.6がInnoDB書き込み権限エラー

あんたには書き込み権限がないのよ!

あんたには書き込み権限がないっつってんのよ!(バシっ)

そうですか、ないんですか。

まずはMySQLのエラーログチェックして、原因を突き止める

ログの場所を確認

cat /etc/my.cnf

ログチェック!

tail /var/log/mysqld.log

かあさんのMySQLログ

InnoDB: To fix the problem and start mysqld:
InnoDB: 1) If there is a permission problem in the file and mysqld cannot
InnoDB: open the file, you should modify the permissions.
InnoDB: 2) If the table is not needed, or you can restore it from a backup,
InnoDB: then you can remove the .ibd file, and InnoDB will do a normal
InnoDB: crash recovery and ignore that table.
InnoDB: 3) If the file system or the disk is broken, and you cannot remove
InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf
InnoDB: and force InnoDB to continue crash recovery here.
150502 15:53:24 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

1)If there is a permission problem in the file and mysqld cannot
InnoDB: open the file, you should modify the permissions.
(パーミッションの問題があるならパーミッションを編集してね)

パーミッション変更

chown -Rf mysql:mysql /var/lib/mysql

再び起動!

# service mysqld start
Starting mysqld: [ OK ]

きたーーーーー!

MySQL5.6使うようになってからパーミッション問題をよく見るなあ

数年前からLAMP環境は当たり前のように作るんですが、MySQL5.6の新しい環境を使うようになってからよくパーミッション問題に悩まされるようになりました。
エラーログを冷静に見て、パーミッションならchownコマンドでパーミッションをmysqlにしてあげようっと。

CentOSのMySQLがシャットダウンできない!PIDファイルがないってどういうことだ!

service mysql stop
MySQL server PID file could not be found! [FAILED]

MySQLがシャットダウンできない!再起動できない!PIDファイルがないってどういうことだ!

ひとまずPIDファイルを表示する

ps auxww | grep mysql

root 1274 0.0 0.0 108336 1456 ? S Mar12 0:00 /bin/sh /usr/bin/mysqld_safe –datadir=/var/lib/mysql –pid-file=/var/lib/mysql/kanareba.pid
mysql 1450 0.0 12.9 1020676 459000 ? Sl Mar12 0:27 /usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib64/mysql/plugin –user=mysql –log-error=/var/log/mysqld.log —pid-file=/var/lib/mysql/kaasan.pid –socket=/var/lib/mysql/mysql.sock
root 6882 0.0 0.0 107472 896 pts/0 S+ 05:11 0:00 grep mysql

どうやら、本来必要なPIDは赤字の箇所みたい。
PIDファイルをcatしても無いようなのでPIDファイルとやらを作成。

vi /var/lib/mysql/kaasan.pid

で、白紙のpidファイルに青字の数値だけを記載して保存。

service mysql stop
Shutting down MySQL… [ OK ]

今度は無事に終了できたー!

CentOS6環境に最新LAMP環境を作る!

時代はPHP5.5 MySQLは5.6の時代よ!


そんな訳で、PHP5.5 MySQLは5.6をインストールするお話をメモがてら残しておく。

とりあえずApach。

#yum -y install httpd
#httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Oct 16 2014 14:48:21

epelとremiのリポジトリの追加

epelとremiのリポジトリの追加リポジトリからPHP5.5をインストールします。

#rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
#rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

PHP5.5

yum install –enablerepo=remi –enablerepo=remi-php56 php php-opcache php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-devel php-pecl-xhprof

インストールをチェック

#php –version
PHP 5.6.6 (cli) (built: Feb 19 2015 10:30:11)

MySQL5.6 用にMySQLの公式サイトからリポジトリ

MySQLの5.6は、MySQLの公式サイトよりリポジトリを追加して そのリポジトリからMySQL5.6をんストールします。
既存のMySQLをチェック。

#rpm -qa | grep mysql
yum remove mysql*
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.20-1.el6.x86_64.rpm
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.20-1.el6.x86_64.rpm
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.20-1.el6.x86_64.rpm
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.20-1.el6.x86_64.rpm
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.20-1.el6.x86_64.rpm

あとはリポジトリを元にMySQL5.6をインストール

#yum install MySQL-{client,devel,server,shared-compat}-5.6.20-1.el6.x86_64.rpm
#yum install MySQL-shared-5.6.20-1.el6.x86_64.rpm

最後にバージョンの確認。 

#mysql –version
mysql Ver 14.14 Distrib 5.6.20, for Linux (x86_64) using EditLine wrapper

以上終了!

CentOS環境にremiリポジトリが重複!?remiリポジトリでパッケージがインストールできない!

CentOS環境のremiリポジトリが重複してPHPのアップデートに失敗する!

PHP5.4をremiリポジトリから5.6をインストールしようとしたところ、以下のようなエラーで失敗。

–> Processing Dependency: libgd.so.3()(64bit) for package: php-gd-5.6.6-1.el6.remi.x86_64
–> Finished Dependency Resolution
Error: Package: php-gd-5.6.6-1.el6.remi.x86_64 (remi-php56)
Requires: gd-last(x86-64) >= 2.1.0-3
Error: Package: php-gd-5.6.6-1.el6.remi.x86_64 (remi-php56)
Requires: libgd.so.3()(64bit)
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest
[root@itkaasan html]# rpm -qa | grep remi
remi-release-6.5-1.el6.remi.noarch
[root@itkaasan html]# rpm -e remi-release-6.5-1.el6.remi.noarch

リポジトリが重複しているエラーが!

remiリポジトリが2つあるらしいので、remiリポジトリを削除します。

#rpm -e remi-release-6.5-1.el6.remi.noarch

これで再度remiリポジトリをインストールすればよいのです。

MacのターミナルからSCPコマンドでサーバーのファイルをダウンロード

SCPダウンロードの模様
MacのターミナルからSCPコマンドでLinuxサーバー上に置いてあるフォルダを一括ダウンロードします。
もちろんSCP,SFTP対応のアプリ、フリーソフトはたくさんあるんだけれどMacのターミナル、SSHから出来たら便利。
たまに使うのに忘れてしまうのでメモ。

SCPダウンロードコマンド

scp -r ユーザー名@サーバーホスト名:ダウンロードしたいサーバー上のフォルダパス Linuxなど保存したいローカルのパス

直後にパスワードを聞かれるのでパスワードを入力すれば指定したローカルのフォルダに大してファイル、フォルダをコピーしてくれます。
Macのターミナルじゃなくて、これをやればサーバー間でファイルの相互バックアップが出来ますね。