Linuxのシェルで添付ファイル付きのメールを送信するには、uuencodeコマンドでバイナリファイルをテキストファイルにエンコードした上で、パイプを使ってmailコマンドに渡します。
$ uuencode <対象ファイル> <変換後のファイル名> | mail <E-mailアドレス>
Linuxのシェルで添付ファイル付きのメールを送信するには、uuencodeコマンドでバイナリファイルをテキストファイルにエンコードした上で、パイプを使ってmailコマンドに渡します。
$ uuencode <対象ファイル> <変換後のファイル名> | mail <E-mailアドレス>
「-r」オプションを付けることで、サブディレクトリ以下も含めて再帰的にアーカイブされます。
$ zip -r <作成するzipファイルのパス> <対象ディレクトリのパス>
Dockerはオープンソースのコンテナ型仮想化ソフトウェアです。VirtualBoxやVMWare等のサーバー仮想化技術とは異なり、一つのOS上に独立したユーザー空間を作ることによって仮想化を実現するため、リソースの使用量が少なくて済むという特徴を持ちます。
DockerをCentOS7上にインストールします。(ちなみにv1.8以降はCentOS6のサポートはされない模様です。)
まず、Dockerの公式リポジトリをyumに登録します。
$ sudo vim /etc/yum.repos.d/docker.repo [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg
yumを利用して、docker-engineパッケージをインストールします。
$ sudo yum install docker-engine
SELinuxが有効の場合は、docker-selinuxもインストールします。
$ sudo yum install docker-selinux
dockerサービスがサーバー起動時に自動起動されるよう設定します。
$ sudo systemctl enable docker
dockerサービスを起動します。
$ sudo systemctl start docker
準備が整ったのでコンテナを作成します。コンテナの作成には、その基となるコンテナイメージを利用します。各Linux OSのコンテナイメージはDocker Hubというリポジトリで公開されています。例えば、CentOSのコンテナイメージをダウンロードする場合は、以下の様にします。
$ sudo docker pull centos
ダウンロードしたコンテナイメージはローカルリポジトリに保存されます。保存されているイメージの一覧を確認するには、imagesコマンドを実行します。
$ sudo docker images
コンテナイメージを利用してコンテナを作成するにはrunコマンドを実行します。使用するイメージと作成したコンテナ上で実行するコマンドを引数として与えます。
$ sudo docker run centos echo "Hello World"
また、コンテナ作成後にログインをしたい場合は、-i(標準入力を開け続ける)と-t(疑似端末を割り当てる)のオプションを与えた上で、コマンドとしてシェルを指定します。
$ sudo docker run -it centos bash [root@xxxxxxxxxxxx /]#
コンテナから抜けるにはexitコマンドを実行します。その際、コンテナは自動的に停止します。
[root@xxxxxxxxxxxx /]# exit $
また、コンテナを作成する際に、コンテナに名前を設定するには–nameオプション、ホスト名を設定するには–hostname(または-h)オプションを利用します。
$ sudo docker run --name test-container --hostname test-host centos
存在しているコンテナの一覧を確認するにはpsコマンドを利用します。オプション-aによって、停止しているコンテナを含めて全てが表示されます。
$ sudo docker ps -a
削除したいコンテナを確認したら、IDまたはNAMEを指定してrmコマンドを実行します。実行中のコンテナを削除する場合は-fオプションを付与します。
$ sudo docker rm de3d1454fd9e
CentOS7からはiptablesではなくfirewalldというファイアウォールが導入されました。(iptablesも利用できるようですが、firewalldが標準となっています。)
起動しているか確認するには、systemctlのstatusコマンドを実行します。
$ sudo systemctl status firewalld firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Tue 2015-11-03 22:27:20 JST; 2h 3min ago Main PID: 605 (firewalld) CGroup: /system.slice/firewalld.service └─605 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
上記のようにactiveという表示が出ていれば起動しています。起動していなければstartコマンドで起動させることができます。
$ sudo systemctl start firewalld
また、自動起動サービスとして登録するには、enableコマンドを実行します。
$ sudo systemctl enable firewalld
CentOS7においてホスト名を変更するには、以下のコマンドを実行します。
$ sudo hostnamectl set-hostname <hostname>
さくらVPSのCentOS6サーバーに、WordPressをインストールしたので、その手順を残します。
まず、WordPressの使用言語であるPHPと必要なモジュールをインストールします。yumコマンドを使えば一発です。
$ sudo yum install php php-gd php-mbstring php-mysql
次に、データベースであるMySQLをインストールします。こちらもyumを使えます。
$ sudo yum install mysql-server
インストールが完了したら起動させます。
$ sudo service mysqld start
wordpressのためのデータベースとユーザーを作成します。今回は、いずれも「wordpress」としました。(省略しますが、rootユーザーのパスワードをまず設定した方がよいです。)
$ mysql -u root mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'password'; Query OK, 0 row affected (0.00 sec) mysql> exit Bye
次に、WordPressの設置に進みます。まず、WordPressの公式ページから最新zipパッケージをダウンロードし、展開します。
$ cd /tmp $ wget https://ja.wordpress.org/latest-ja.zip $ unzip latest-ja.zip
wordpressという名前のディレクトリが作成されていることを確認できると思います。これを、実際WordPressを運用する場所に配置します。今回は、後述するApacheのバーチャルホストを利用することを考え、以下の場所にいたしました。ちなみに、今回インストールするWordPressにアクセスするためのドメインをblog.codebase.co.jpとしています。
$ sudo mkdir -p /var/www/vhosts/blog.codebase.co.jp $ sudo mv wordpress /var/www/vhosts/blog.codebase.co.jp
最後に、WebサーバーであるApacheをインストールします。こちらもyumで一発です。
$ sudo yum install httpd
インストールが完了したら、Apacheのバーチャルホスト設定にWordPressを追加します。
$ cd /etc/httpd/conf.d $ sudo vim vhosts.conf NameVirtualHost *:80 # WordPress <VirtualHost *:80> DocumentRoot /var/www/vhosts/blog.codebase.co.jp/wordpress ServerName blog.codebase.co.jp ErrorLog /var/www/vhosts/blog.codebase.co.jp/log/error_log CustomLog /var/www/vhosts/blog.codebase.co.jp/log/access_log combined env=!nolog <Directory "/var/www/vhosts/blog.codebase.co.jp/wordpress"> AllowOverride All </Directory> </VirtualHost>
ログファイルが出力されるフォルダを作成します。
$ sudo mkdir /var/www/vhosts/blog.codebase.co.jp/log
ユーザーapacheがWordPressのログや設定ファイル等を読み書きできるように、blog.codebase.co.jpディレクトリ以下の所有権をapacheに変更します。
$ sudo chown apache:apache /var/www/vhosts/blog.codebase.co.jp -R
Apacheを起動します。
$ sudo service httpd start
以上で、WordPressが立ち上がっている状態になっています。今回の例であればhttp://blog.codebase.co.jpにアクセスすることで、セットアップウィザードが開始しますので、データベースへの接続情報等を入力して初期設定を完了させます。
さくらVPSでサーバーをレンタルし、rootユーザーしか存在しない状態から、管理者ユーザーを作成する手順のメモです。
まず、「仮登録完了のお知らせ」メールに含まれるパスワードを利用して、rootユーザーとしてサーバーに接続します。
ログイン後、まず目的のユーザー(ここではnewuserとします)を作成します。
$ useradd newuser
newuserのホームディレクトリに.sshディレクトリを作成し、パーミッションを700に設定します。
$ mkdir /home/newuser/.ssh $ chmod 700 /home/newuser/.ssh
.sshディレクトリ以下にauthorized_keysというファイルを作成し、パーミッションを600に設定します。
$ cd /home/newuser/.ssh $ touch authorized_keys $ chmod 600 authorized_keys
authorized_keysファイルの中に、接続元ユーザーの公開鍵を登録します。
$ vim authorized_keys
ssh-rsa ...
.sshディレクトリとauthorized_keysファイルの所有者をnewuserに変更します。
$ chown newuser:newuser -R .
これで、接続元ユーザーはnewuserとしてこのサーバーにアクセスすることができるようになりました。
次に、newuserは管理者ユーザーなのでroot権限でコマンドを実行できるようにしたいと思います。visudoコマンドを利用することでこの設定ができます。
$ visudo
コマンドを実行すると、エディタが開き、sudoに関する設定ファイルを編集することができます。下にスクロールしていくと
## Allow root to run any commands anywhere root ALL=(ALL) ALL
という箇所があると思うので、ここにnewuserを追記すればよいです。ただ、新しい管理者が入った場合に、毎回このファイルを修正するのは大変なので、個人ではなくwheelというグループにsudoコマンドの権限を与えて、newuserをwheelグループに登録する方向でいきます。既に以下のような記述があると思うので、先頭の#を削除してwheelグループのsudo権限を有効にさせます。「:wq」で変更内容を保存し、エディタを終了させます。
## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL
newuserをwheelグループに登録するには、gpasswdコマンドを使います。
$ gpasswd -a newuser wheel Adding user newuser to group wheel
これでnewuserは再ログイン後にsudoコマンドを利用できるようになりました。
以上で、管理者newuserによるログインおよびsudoコマンドの実行が可能になりましたが、rootによるログインも有効のままです。これは、セキュリティ的によろしくないので、rootによるログインを禁止し、また接続の際に公開鍵認証を義務付けたいと思います。この設定を行うには/etc/ssh/sshd_configを編集します。
$ vim /etc/ssh/sshd_config
「PermitRootLogin」、「PermitRootLogin」および「PasswordAuthentication」の設定を「no」にします。
PermitRootLogin no PermitEmptyPasswords no PasswordAuthentication no
設定を有効にするために、sshサービスを再起動します。
$ service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]