サーバー
このガイドでは最も一般的なサーバーについての概要と選択肢、管理やセキュリティに関するガイドラインを提供します。
序文
サーバーとは何か?
かいつまんで言うと、サーバーとは遠隔地のクライアントと関係するサービスを実行するコンピューターのことです。全てのコンピューターは何らかのサービスを実行しています、例えば: Arch をデスクトップとして使っている場合、ネットワークに接続するにはネットワークサービスを動かす必要があります。ただし、サーバーは外部のクライアントと関わりを持つサービスを実行します、例えば: ウェブサーバーはインターネットを介して、またはローカルネットワーク上のどこかから見ることができるウェブサイトを管理します。
サーバー OS としての Arch Linux
次のような批評または主張を見たことがあるかもしれません: Arch Linux はサーバーのオペレーティングシステムには全く向いていない!。これはある意味で真実です: Arch Linux にサーバー専用のインストールディスクというものは存在していません。他のディストリビューションでは用意されているようなディスクのことです。これは Arch Linux には最小限の (しかしながら堅実な) ベースシステムしか含まれていないためで、初めからインストールされているデスクトップまたはサーバーとしての機能は、ほんのわずかしかありません。ただし、このことは Arch Linux をサーバーとして使うべきでないということを意味しません。むしろ正反対です。Arch のコアインストール環境はセキュアかつ有能な基礎です。少数の機能しかプリインストールされてないからこそ、Linux サーバーのベースとして簡単に使うことができます。人気のサーバーソフトウェア (Apache, MySQL/MariaDB, PHP, Samba など) は全て公式リポジトリからインストールすることができ、さらに多くのソフトウェアが AUR には存在します。さらに、ソフトウェアをセットアップするための方法を記した詳細なドキュメントが wiki にはあります。また、archlinuxjp.org は Arch Linux で稼働しています。
要件
サーバーで Arch Linux を使うには、まず Arch Linux をインストールしておく必要があります。
ほとんどの GNU/Linux サーバーオペレーティングシステムには、2つの選択肢があります:
Arch Linux のインストールについては、ビギナーズガイドや一般的な推奨事項の記事を参照してください。ただし GUI を必要としない場合はこのセクション以降は不要です。
サーバーにリモートからアクセスするには、固定 IP アドレスやドメイン名、あるいは No-Ip のようなものが必要です。
基本的なセットアップ
"基本的な"セットアップとは:
- サーバーへのリモートアクセス。
管理作業をするためにサーバーにリモートでログインできるようにすると良いでしょう。サーバーがどこか別のところにあったり、モニターが取り付けられていない場合: ファイルの削除や追加、設定オプションの変更やサーバーの再起動など、全ての作業はリモートでサーバーにログインしないかぎり実行することが不可能です。SSH がこの機能を提供します。
- Arch Linux サーバー。
- ウェブページを公開するために必要な http サーバー (Apache)。
- アドレス帳、フォーラム、またはブログの文章などのデータを保存するのによく使われるデータベースサーバー (MySql/MariaDB)。
- ブログ、フォーラム、コンテンツ管理システムなどのウェブスクリプトで使われている人気のスクリプト言語である PHP スクリプト言語。
太字でわかるように、このアプリケーションの組み合わせには名前が付けられています: LAMP。
以下のセクションでは上述の基本機能のセットアップのインストールと設定をガイドします。
SSH
SSH は Secure Shell の略です。SSH を使うことで SSH クライアントでサーバーにログインでき、見覚えのあるターミナルのようなインターフェイスを使うことができます。SSH によるリモートログインのアクセス権限をシステムのユーザーに与えることで、サーバーのリモート管理ができるようになります。
インストールと設定方法は SSH のページに書かれています。
LAMP
LAMP サーバーは合理的で標準的なウェブサーバーです。
'P' が何を意味するのかということについてはよく議論があります。ある人は PHP だと言い、またある人は Perl のことだと言い、また、Python だと主張する人もいます。このガイドでは P は PHP ということにしますが、Linux には素晴らしい Perl や Python モジュールが存在するので、同じように Perl や Python をインストールすることもできます。
とは言え、ここに書くにはあまりに多くのことがありすぎます。
インストールや設定の方法は LAMP の wiki ページを見てください。
他のウェブサービス
メールサーバーのインストールと設定についてはカテゴリ:メールサーバーのページを参照してください。
FTP
FTP は File Transfer Protocol の略です。FTP クライアント (FileZilla, gftp など) や FTP 対応のブラウザを使って遠隔地からファイルシステムにアクセスすることができるサービスを提供します。FTP を使うことで、遠隔地からファイルを追加・削除できるだけでなく、chmod コマンドを適用してファイルに特定のパーミッションを設定することもできます。
FTP のアクセスはシステム上のユーザーアカウントに関連付けられるため、権限の管理をシンプルに行なえます。FTP は遠隔地からウェブサーバーにファイルを追加するのによく使われているツールです。
複数の FTP デーモンが存在します。アプリケーション一覧#FTP サーバーを見てください。
また、SSH を介して FTP を使うという方法もあります。SFTP を参照。
DAViCal
DAViCal はカレンダーやリマインダー、連絡先の管理に使用する CalDAV や CardDAV プロトコルを実装したサーバーです。
WebDAV
WebDAV (Web Distributed Authoring and Versioning) は HTTP 1.1 の拡張です。HTTP 1.1 プロトコルを通じて読み書きを行う手段を提供します。NFS や SMB を使うかわりに、WebDAV を使えば HTTP でファイルを転送できます。
DLAN
ReadyMedia (旧名 MiniDLNA) は DLNA/UPnP クライアントと完全な互換性を持つサーバーソフトウェアで、ネットワーク上のクライアントにメディアファイル (音楽, 画像, 動画) を転送できます。
ウェブキャッシュ
Squid は HTTP, HTTPS, FTP などでウェブコンテンツをキャッシュするプロキシです。キャッシュを活用して頻繁にリクエストされるウェブページを再利用することにより、帯域幅を減らして反応時間を速くします。Squid にはアクセスを制御したりサーバーアクセラレータを作成するための機能も備わっています。
ローカルネットワークサービス
Zeroconf
Avahi はフリーの Zero-configuration networking (zeroconf) 実装で、マルチキャスト DNS/DNS-SD サービスを探知するシステムが含まれています。個別に設定をすることなく、ローカルネットワーク上でサービスやホストをプログラムから公開することを可能にします。例えばネットワークに接続して即座に印刷を行うプリンターを確認したりできます。
CUPS (印刷)
CUPS (Common UNIX Printing System) は多数のユーザーが印刷に使用する中心を提供します。例えば、複数のプリンタ (たとえば3台) と印刷をしたいユーザーがローカルネットワークに存在するとします。すべてのプリンタを個々のユーザーのコンピューターに追加することもできますが、CUPS が動いているサーバーにプリンタを追加して、サーバーを全てのクライアントに追加することもできます。24時間365日オンラインの集中型印刷システムを作ることができ、ネットワーク機能がないプリンタには特に有用です。
インストールと設定については CUPS の wiki ページを参照してください。
Samba (Windows 互換のファイル・プリンタ共有)
Samba は SMB/CIFS ネットワークプロトコルのオープンソース実装であり、Linux と Windows システム間で効率的にファイルやプリンタを共有することができます。Samba は共有を公開して認証を必要とさせることもできます。
インストールと設定については Samba の wiki ページを参照してください。
DNS
カテゴリ:Domain Name System には Domain Name System (DNS) プロトコルの様々な実装の記事があります。
セキュリティ
ファイアウォール
ファイアウォールソフトウェアに関する詳細はファイアウォールを参照してください。
SSH の保護
管理目的で SSH でリモートログインできるようにすることは良いことですが、サーバーのセキュリティに脅威となる可能性もあります。ブルートフォース攻撃の対象としてよく狙われるため、SSH のアクセスは適切に制限して第三者がサーバーにアクセスできないようにする必要があるでしょう。設定方法は Secure_Shell#SSH の保護 を見てください。
SELinux
インストールと設定については SELinux の wiki ページを参照してください。
管理とメンテナンス
アクセシビリティ
SSH は Secure SHell の略で、サーバーにリモート接続して、まるで物理的にコンピュータの前に居るように管理コマンドを実行することができます。Screen と組み合わせることで SSH はリモート作業や管理になくてはならないツールになります。SSH をインストールだけではあまりセキュアとは言えず、設定を加えないとサーバーがロックダウンしてしまう可能性があるので注意してください。root ログインの無効化や、パスワードによるログインの無効化、ファイアウォールのルールの設定などが必要です。さらに、sshguard や fail2ban などのデーモンを利用することで SSH デーモンのセキュリティを補足することもできます。怪しい行動がないかログファイルを常時監視したり、なんどもログインに失敗した IP アドレスを接続できないようにします。
X フォワーディングは SSH を使って X セッションを転送することでデスクトップの GUI にリモートからログインできるようにします。この機能を使用するには SSH と X サーバーをサーバーにインストールする必要があります。また、クライアント側でも X サーバーをインストールして、サーバーと接続します。詳しくは SSH の記事にある X フォワーディングのセクションを参照してください。
ローカルパッケージリポジトリ
Repose を使うことで本番環境にデプロイする前にパッケージの品質と信頼性を確認する必要があるローカルのサーバークラスタ用にパッケージリポジトリを作成することができます。
参照
- Virtual Private Server - Arch を用意している VPS プロバイダのリスト