Linux:scpコマンドでリモートへファイルをコピーする

Linuxscpコマンドを使用して、ローカルリモート間でファイルをコピー転送)する使用方法をメモします。

scpコマンドはsshでサーバと接続して使用します。

FTPなどで接続できない状況などで、ファイルディレクトリを取得したい場合に活用できます。

下記にscpコマンドの説明と使用方法をメモします。


「scp」コマンド

リモートとローカルや、リモート間でファイルをコピーします。
scpコマンドを使用する際は下記の書式で記載。
オプションを付けることで、ディレクトリも転送することが可能です。

scp [オプション] [コピー元] [コピー先]

リモート(サーバ)へファイルをコピーする

「hoge.txt」をリモートの「/home/user/hoge」にコピーする場合です。
リモート側はSSHで接続するためのユーザー名とホスト名を記載します。

scp hoge.txt user@example.com:/home/user/dir

リモート(サーバ)からファイルをコピーする

リモートの「/home/user/dir/hoge.txt」ファイルをローカルの「~/tmp」にコピーする場合です。

scp user@example.com:/home/user/dir/hoge.txt ~/tmp

オプションを指定してディレクトリをコピーする

リモートへコピーする場合です。
「-r」オプションを使用すればディレクトリをコピーすることができます。

scp -r tmp user@example.com:/home/user/dir

ローカルにある「tmp」ディレクトリをリモートにコピーします。


scpコマンドは今まであまり使用していなかったのですが、結構使う機会が増えてきたので、scpコマンドの基本的な使用方法についてメモしました。
サーバとのデータ転送をしたい場合など、とても便利な機能です。

Linux:rebootコマンドを使用したサーバの再起動

Linuxサーバでサーバの再起動をする場合、今までは「shutdown」コマンドを使用して再起動をしてました。
以前、「shutdown」コマンド使用した時の方法を記事にしてます。

Linux:サーバをシャットダウン・再起動する

他にも「reboot」コマンドを使用してもサーバの再起動をすることができると分かったのでメモします。

下記に「reboot」コマンドを使用して、Linuxサーバを再起動したときの方法を記載します。


「reboot」コマンド

システムの再起動で使用します。
引数(オプション)はなしで実行します。

reboot

rebootコマンドを使用したサーバの再起動

SSHでサーバにログインします。

suコマンドでrootに切り替えます。

「reboot」コマンドを実行するだけでサーバの再起動をすることができます。
※引数なしで実行

reboot

下記のコマンドと同じ意味になります。

shutdown -r -q now

また、ファイルシステムのチェックせずにより早く再起動する場合は「fastboot」コマンドを使用します。

fastboot

下記のコマンドと同じ意味になります。

shutdown -r -q -f now

Linux:MySQLのmax_allowed_packetの値を変更する

LinuxサーバでMySQLmax_allowed_packetの値を変更した際の方法をメモします。

MySQLのmax_allowed_packetで設定している値よりも大きいデータをサーバに送った時に、
エラーになってしまうことがあります。

エラーになってしまう場合は、パケットの最大の値を変更する必要があります。
MySQLでサーバに送るパケットの最大は16MBです。

下記に変更手順を記載します。


MySQLのmax_allowed_packetの値を変更

SSHでサーバにログインし、MySQLに接続します。

mysql -u root -p

最大のパケット値を確認する場合は下記を実行します。

show variables like 'max_allowed_packet';

実行するとmax_allowed_packetの設定値が表示されます。

※1MBの場合

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

max_allowed_packetの値を変更する場合は「my.cnf」を編集します。

vi /etc/my.cnf

max_allowed_packetの値を「16MB」に変更します。

max_allowed_packet=1MB

↓ 変更

max_allowed_packet=16MB

編集を保存し、MySQLを再起動します。

/etc/init.d/mysqld restart

再起動後、MySQLに接続しmax_allowed_packetの値を確認します。

mysql> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)

max_allowed_packetの値が変更されていればOKです。


MySQLでデータが大き過ぎてエラーが出てしまう場合は、
max_allowed_packetの値を確認すると解決するかもしれないです。

Linux:オープンリゾルバの確認と対策

DNSサーバオープンリゾルバかどうか確認する方法と対策をメモします。

オープンリゾルバとは、外部からの問い合わせを許可しているDNSサーバのことを言います。
DDoS攻撃などを受ける可能性があるので対策は必要です。


オープンリゾルバの確認

下記サイトでオープンリゾルバかどうかの確認ができます。
サイトにアクセスし、確認したいサーバのIPアドレスを入力します。

Test for Open Resolvers

入力後、「送信」ボタンをクリックします。

結果が出力されるので、Statusが「closed」になっていれば、
オープンリゾルバではない状態です。
また、Statusが「open」になっている場合は、
オープンリゾルバの状態なので対策が必要です。


オープンリゾルバの対策

DNSサーバがオープンリゾルバ設定になっている場合、
「named.conf」に下記の内容を反映します。

recursion no;

「recursion no」を設定すれば、オープンリゾルバとして動作しないように設定できます。
また、オープンリゾルバの設定にする場合は、「recursion yes」で設定します。

「named.conf」を編集し、「recursion no;」を「options」の箇所に追加します。

options {
    recursion no;

    (省略)

};

※「named.conf」の内容により、設定方法が異なる場合があります。

上記の設定を行い、rndcをリロードすれば設定完了です。
再度確認を行い「closed」になっていればOKです。


オープンリゾルバについて、分からないことだらけなので、
詳しい内容が分かれば、随時ここに追記していきたいと思います。

Linux:php.iniの設定を変更し、反映させる

phpでシステムを構築している際に、php.iniの設定内容を変更したい場合があります。

Linuxサーバに設置しているphp.iniファイルを変更し、
Apacheを再起動させれば変更した内容で反映させることができます。


php.iniファイルの場所を確認

php.iniファイルがどこにあるかわからない場合は、
phpinfo()を実行するとphp.iniファイルの場所を確認できます。

phpファイルに下記の内容を記述し、サーバにアップロードします。
アップしたファイルにアクセスすればphpinfoの内容が出力されます。

<?php phpinfo(); ?>

「Loaded Configuration File」にphp.iniファイルへの場所が出力されます。

php_ini_check


php.iniファイルの変更・反映

SSHでサーバにログインし、php.iniファイルを編集します。

編集する場合はバックアップを作成した方がいいと思います。
cpコマンドでバックアップを作成します。

cp /etc/php.ini /etc/php.ini.org

php.iniを編集する場合は下記コマンドを実行します。

vi /etc/php.ini

php.iniの内容が表示されるので、変更したい内容でファイルを編集します。
変更が完了したら、php.iniを保存し閉じます。

編集しただけだと反映されないので、Apacheを再起動します。

/etc/init.d/httpd restart

または、下記コマンドを実行します。

service httpd restart

再起動が完了すれば、変更した内容でphp.iniを反映することができます。
再起動後は、phpinfo()で変更内容を確認し、書き換わっていればOKです。


サーバ全体の変更を行ないたい場合はphp.iniファイルを書き換えるといいと思います。