注:EC2ボックスに関して今朝この質問をしましたが、インスタンスを開始および停止するツールへのリンクしか返されなかったので、言い換えます...
私のプロジェクトの1つで毎晩処理するLinuxボックスがいくつかあります。ときどき、入室したり、コードを変更したり、設定したり、ファイルを移動したりする必要があります。
これらの操作のための私のツールセットはひどくまばらです(SSHをボックスに入れ、VIMでファイルを編集し、必要なリモートファイルをWGETで編集します)。私の立場にいる他の人たちが何をしているのか知りたいです。
ボックスへのアクセスに、何らかの形式のウィンドウシステムと同等のリモートデスクトップを使用していますか、それともすべてコマンドラインですか?リモートのWindowsボックスを管理することは簡単です。なぜなら、リモートデスクトップでネットワーク経由でファイルを転送して転送するだけだからです。 Linuxの世界でこれに相当するものはありますか?
構成ファイルの変更/スクリプトの微調整をマシンで直接行っていますか?または、これらのファイルをリモートで編集するためにローカルボックスに何か設定されていますか?または、リモートで編集してから、保存するたびに転送しますか?
サーバーとローカル環境の間でファイルをどのように移動しますか? FTP? VPN経由でマップされたドライブのようなものですか?
これらのボックスを管理するには、いくつかのベストプラクティスを用意する必要があります。いくつかの痛みを取り除くための提案は大歓迎です!
これらの操作のための私のツールセットはひどくまばらで(ボックスへのSSH、VIMでのファイルの編集、必要なWGETリモートファイル)、私はそれを行うより良い方法があると思います。私の立場にいる他の人々が何をしているのか知りたいです。
スパース?一体どういう意味ですか?失礼ですが、ssh、vim、wgetを痛みを伴うものとして却下するのはほとんど侮辱です。あなたの質問から私はあなたが主にあなたの昼間の仕事のプログラマーであると推測しているので、私はその質問を理解しています。しかし、正直なところ、あなたが言及した3つのツールのいずれにも不慣れなLinux管理者を雇うつもりはありません。
ボックスへのアクセスに、何らかの形式のウィンドウシステムとリモートデスクトップを使用していますか、それともすべてコマンドラインですか?リモートのWindowsボックスを管理することは、ネットワーク経由でデスクトップをリモートで転送してファイルを転送するだけなので簡単です。 Linuxの世界でこれに相当するものはありますか?
管理者のタスクでは、X環境を使用することはありません。あなたはそれを必要とせず、それはシステムリソースを占有するだけであり、ほとんどの場合、それらは助けではなく邪魔です。ほとんどのGUI構成ツール(まあ、実際にはすべて)は、vimで構成ファイルに設定できる構成オプションのサブセットしか提供しません。
Linuxボックスの管理は、Windowsボックスの管理と同じくらい簡単です。まともなスキルを習得するには、少し時間がかかります。
そして同等のネットワークファイル転送?たっぷり。 scp、sftp、ftp、nfs、cifs/smb(Windowsファイル共有プロトコル)、そしていくつか。
構成ファイルの変更/スクリプトの微調整をマシンで直接行っていますか?または、これらのファイルをリモートで編集するためにローカルボックスに何か設定されていますか?または、単にリモートで編集してから、保存するたびに転送しますか?
私がやっていることに依存します。マシンの構成ファイルで直接行うほとんどのこと(開発ボックスとテストボックスの場合)、次にファイルを衛星サーバーの構成チャネルにプッシュし、その後、ファイルをすべてのサーバーに直接展開します(生産ボックスの場合) )。本当に、vimは宝物です。つまり、適切に使用する方法を見つけたときです。
サーバーとローカル環境の間でファイルをどのように移動しますか? FTP? VPN経由でマップされたドライブのようなものですか?
すべての方法でscpを実行し、おそらくいくつかのsftpを実行することをお勧めします。 FTPを使用して、機密ファイル(構成ファイルなど)をパブリックネットワーク経由で移動しないでください。必要なのはサーバー上だけなので、マップされたネットワークは使用しません。ここで設定ファイルではなくcファイルを意味する場合、通常はsvnやgitなどを使用してから、変更をボックスにプッシュします。
これらのボックスを管理するには、いくつかのベストプラクティスを用意する必要があります。痛みのいくつかを取り除くための提案は大歓迎です!
すでに使用しています:ssh、scp、wget、vim。それらは痛みではありません。あなたはそれらがどれほど強力であるかを理解している間、いくつかの歯が生える痛みがあるかもしれません。しかし、Windowsのアナロジーを元に戻すために、Windowsボックスを使用する必要がある場合、私は非常に困惑しました。あなたにとってそれは逆です。慣れているだけです。少し時間をかけてください。
あなたはすでにssh、vim、wgetについて述べましたが、これは不可欠で完璧です。生活を楽にするいくつかの追加ツール:
1。 GNU Screen/byobu
「GNU Screenは、ユーザーが単一のターミナルウィンドウまたはリモートターミナルセッション内の複数の個別のターミナルセッションにアクセスできる無料のターミナルマルチプレクサです。コマンドラインから複数のプログラムを処理したり、起動したシェルからプログラムを分離したりするのに役立ちます。プログラム。" (ウィキペディアのGNU_Screenページから)
主な利点は、戻ってきたとき(つまり、ssh経由で再ログインしたとき)に残した状態とまったく同じ状態の仮想端末を1つまたは複数持つことができることです。これは、何らかの理由で接続が切断された場合にも役立ちます。
画面は、ボックスへの接続に使用するソフトウェア(サーバー上にあります)から独立して機能するため、PuTTYまたは他のほとんどのターミナルソフトウェアとうまく組み合わせられます。
この記事では、それを使用して実行できるいくつかの優れた点を示します。 http://www.pastacode.de/extending-gnu-screen-adding-a-taskbar/en/
良い代替案はbyobuで、これはいくつかのディストリビューションでうまく構成されています: http://byobu.co/
2。真夜中の司令官
ファイルとディレクトリを表示および操作するための、コンソールベースのグラフィカルなブラウジングツール。
安全なリモート転送もできます。組み込みのFISHおよびFTPクライアントがあります。
つまり、コマンドラインコンソールに2つのテキストウィンドウが並んでいて、1つはリモートボックスを表示し、もう1つは接続先(ローカルシステムでもかまいません)を表示します。次に、両方のファイルシステムを並べてナビゲートできます。個々のファイルまたはファイルツリーをマークまたは調査し、場所間でそれらをコピーまたは移動します。 FISHは安全ですが、FTPは安全ではありません。初心者にとって非常に強力でシンプルです。
3。 rsync
高速で安全かつ信頼性の高いファイル転送と異なる場所間の同期
4。 VCS
Bazaar、Mercurial、gitなどの分散バージョン管理システムを使用してコードを更新する。 GithubまたはBitbucketは商用のコードホスティングを提供しますが、必須ではありません。自分のマシンで効率的に使用することもできます。
ジョセフ・カーン:リモート構成組織でgitをどのように使用するかを詳しく説明できますか?
5。ターミナルクライアント
Unixライクなシステムではすでに搭載されており、WindowsではPuTTY、Tera Term、Mind Term、またはPandoraを使用できます。または、cygwinのインストールを作成し、cygwinのターミナルウィンドウからリモートボックスにsshを実行します(これにはより多くの利点がありますが、これは何を好むかという問題です)。
6。トンネリングとポート転送
特定のポートをローカルマシンに安全に転送すると役立つ場合があります。たとえば、mysqlポートTCP 3306またはpostgres TCP 5432を転送し、データベース管理ツールをローカルにインストールできます。
CygwinとMindtermでポート転送を行うこともでき、PuTTY(またはその弟のplinkに基づくコマンドライン)を使用してWindwosマシンからトンネルを構築できます。 UNIXのようなマシンでローカルにいる場合は、ssh odr plinkを使用してそのようなトンネリングを作成できます。
さまざまなポートに対してより安定した永続的なトンネリングを作成するには、OpenVPNをお勧めします。ポイントからポイントへの「事前共有キー」トンネル方式は、インストールがそれほど難しくありません。
7。ローカルのUNIXライクなシステムを持っている
ローカルマシンがすでにMacである場合、ローカルシェルを開くことができます。ワークステーションがWindowsベースの場合、同じローカルネットワークにあるローカルのUNIXライクなサーバーを作成すると便利です。これは、同じルーターまたはスイッチに接続された別の部屋にある別のマシンにすることができます。または、1台のマシンのみが必要な場合は、無料のvmwareサーバーをインストールして、できればリモートマシンと同じオペレーティングシステムである仮想マシンを作成できます。その上にsambaサーバーをインストールすると、デスクトップからsamba共有を「ネット使用」できます。
ローカルサーバーにsshサーバーがあり、ルーターのポート22を開いている場合は、外にいるときにローカルシステムにsshで接続できます。
リモートマシンへのトンネルを構築したり、rsyncを使用してファイルやファイルツリー全体を転送および同期したりできます。テスト、VSC、ローカル開発、トレーニング目的のローカルウェブサーバーとして使用できます。
リモートマシンからバックアップをプルできます。自動でバックアップを実行するローカルcronジョブを作成できます(例:ローカルに定期的に保存するデータベース)
8。 XリモートGUI
Linuxのようなシステムで物理的に作業している場合は、ローカルマシンでGUIを描画するLinuxサーバーでGUIアプリケーションを実行することもできます。これは、グラフィカルなファイル比較ツールなど、ほとんどすべてのものです。
あまり一般的ではありませんが、msotの場合、Linuxボックスの管理にGUIソフトウェアを使用する必要はありませんが、できれば便利な場合があります。
リモートマシンで、/ etc/ssh/sshd_configに次の行が存在することを確認します。
X11Forwarding Yes
でsshサーバーを再起動します
/etc/init.d/sshd restart
次に次回ログインするとき
ssh -X me@remote-box
Xトンネルが作成され、テスト目的でリモートサーバーにxclockをインストールして、前述のsshセッションでxclock
iを実行してみます。テスト目的の単純なxクロックがLinux GUIに表示されます。
これは、ローカルX環境をインストールした場合、Macでも可能です。
9。同様のボックスやタスクがたくさんある場合:システム構成ツールを使用します
サーバーファームがある場合、または多くの冗長なマシン、または同等のマシン、または同様のマシンを備えた大規模なクラウド展開を行う場合は、これを使用できます。
ほとんどのボックスが個別であるか、異なるオペレーティングシステムまたは異なるバージョンが実行されている場合は、おそらく意味がありません。
いくつかのツールがあります:
chef
http://www.getchef.com/chef/ 以下のEvan Andersonsのすばらしい回答をご覧ください: https://serverfault.com/a/28789/45819
puppet
他の大きなプレーヤー http://puppetlabs.com/
salt
は有望に見えます http://www.saltstack.com/
10。 docker
を使用してアプリケーションコンテナーをデプロイする
これはさらに一歩進んだものです。 Dockerは、ソフトウェアコンテナー内のアプリケーションの展開を自動化するオープンソースプロジェクトです。 https://www.docker.io
11。自動デプロイ管理でGoogle Compute Engineを使用する
https://cloud.google.com/products/compute-engine/
Googleは非常にエキサイティングな可能性を持つLinux VMを提供しています。 RESTful API、コマンドラインインターフェイス、Webベースのコンソールなどのツールを使用して、仮想マシンの大規模なクラスターをすばやく展開できます。また、RightScaleやScalrなどのツールを使用して展開を自動的に管理することもできます。
WindowsボックスからSSH経由でファイル管理を行うための素晴らしいGUIを探している場合は、WinSCPを確認してください。 http://winscp.net
私はEC2インスタンスを管理していませんが、一般的に、ロールを実行する複数のマシンがある場合は、ボックスごとの変更を行う代わりに、すべての同様のボックスで作業を実行するためのスクリプトを作成します。
Puppet( http://reductivelabs.com/products/puppet/ )の使用を開始したいと思います。これは、システム管理を構成管理のようにするためです。まだ詳細を確認できる予備のサイクルはありませんが、非常に良いことは聞いています。
Chefのようなシステム構成管理ツールを検討する必要があります。
SSHセッションを介して手動でシステムを管理することはもうありません。 EC2のWebサイトなど、Webアプリケーションとプロジェクトのすべてのコードを、それらを実行するシステムからアクセスできるソースコードリポジトリに保持しています。クラウドで作業する場合、インフラストラクチャを自動化することが不可欠です。
基本的なワークフローはこんな感じです。まず、アプリケーションコードと構成データについて:
構成については、以下を追加します。
システムは、パッケージのインストール、ユーザーの作成、テンプレートから生成された構成ファイルなどのように構成されます。
私は[ほとんど]手動で設定ファイル、アプリケーションデータ、またはリモートシステム上の他のものを直接編集することはありません。変更はローカルリポジトリを通じて行われ、マスターにプッシュされます。インスタンスを強制終了して再起動する必要があるかどうかに関係なく、システムは毎回正しく構成されます。
構成に必要なファイルは、単なるWebアプリケーション(merb、Apache + Passengerで実行)であるChefサーバーから直接提供されます。クライアントのアクセスは、openid承認によって制御されます。
私の構成にはNagiosとMuninへのフックが含まれているので、それらを設定するために手動で何もする必要なく、監視と傾向を取得することもできます。
最近のベストプラクティスは、自動構成管理に頼っています。それでも手動で作業している場合は、働きすぎです。
Ssh、vim、wgetの何が問題になっていますか?私の意見では、ほとんどのWindowsユーザーには知られていない宝石です。 :-)
FTPまたはSFTPを介してリモートでgVimを使用することがあります。
LinuxマシンでGUIを使用したい場合は、ローカルホストでXサーバー(Cygwinを参照)を実行し、ssh接続を介してディスプレイを転送できます。
Linuxの管理に費用や手間がかかるVPNソリューションを検討したことはありません。
開発を行っており、サーバーで開発ジョブを実行する必要がある場合は、サーバーにリビジョン管理クライアントを設定し、リモートでログインし、クライアントを同期して、プロセスを実行するだけです。
リモートのWindowsボックスを管理することは、ネットワーク経由でデスクトップをリモートで転送してファイルを転送するだけなので簡単です。 Linuxの世界でこれに相当するものはありますか?
このトローリングは意図されていますか?
Windowsボックスのリモート管理は簡単ではありません。 UNIXボックスのリモート管理は、それらがリモートで管理され、ネットワーク上にあるように設計されているためです。 Windowsの場合、ネットワーク上で動作するようにゼロから設計されていないシステムへのボルトでした。
これは逸話ですが、さまざまな企業での経験から、Linuxボックスのサーバーとシステム管理者の比率はWindowsよりもはるかに高くなっています。 Windowsでの自動化は簡単ではなく、GUIはスクリプトよりも常に遅いためです。とは言っても、管理しやすいようにWindowsインフラストラクチャを愛撫できるWindows管理者はいますが、これらの管理者は非常にまれです。
必要なすべてのツールは、すべてのLinuxディストリビューションでデフォルトで使用できます。グラフィカルログインが必要な場合は、先に進んでください。CPUとメモリを浪費するだけで、Windowsと同じ問題が発生します。そして、すでに述べたように、少数のボックスよりも、puppet、chef、cfengine、または1つの利用可能な他の多くのツールを検討する必要があります。
「いくつかの」ボックスを管理するためにSSHを使用していると言います。それらすべてに同じコマンドを一度に書き込むためにClusterSSHを強くお勧めします(同じような目的がある場合)。
http://www.linux.com/learn/tutorials/413853:managing-multiple-linux-servers-with-clusterssh
使用方法は「cssh -l username clustername」と同じくらい簡単で、一度にまたは個別に管理できる多数のuxtermウィンドウが開きます。クラスターは、構成ファイル内のIPのリストによって定義されます。私が知る限り、足りないのはXサポートだけです。
編集:マルチターミナルレイアウトは簡単に保存および復元できるため、ターミネーターに移行しました。必要に応じて、同時に10個のXトンネルを取得します。サーバーコンピューターとクライアントコンピューターの両方を同時に簡単に構成できます。
また、Fabricは、クライアントでソフトウェアを更新するときに便利です。基本的には、すべてのZip/scp/unzip/cpを置き換えます。
私が使う:
私の設定をバージョン管理下に置くことは、おそらく私が行った中で最も賢いことでした。 SSHベースのツールをできるだけ頻繁に使用して、管理上のフットプリントと攻撃対象領域を削減しています。
現在、私のgitリポジトリはすべてローカルです。将来的には、リモートリポジトリに構成を移動する予定です。
Unix/Linuxのシステム管理用のWebベースのインターフェースである Webmin の使用を忘れないでください。
SSHは常に私にとって十分でした。 X11は本質的にリモートデスクトップですが、それだけでは暗号化されないため本質的に安全ではありませんが、他のオプションもあります。ただし、SSH接続を介してトンネルすることができます(追加のポートを開く必要がないという利点があります)。もちろん、これはサーバーにX環境がインストールされていることを前提としています。
SFTP(SSH経由のftpなので、追加のポートを開く必要はありません)を使用して、サーバーにファイルをプルするのではなく、サーバーにファイルを置くことができます http:// filezilla- project.org/
私はボックスにsshし、コマンドラインで変更を加えます。変更が簡単な場合は、vi/nanoなどのエディターを使用します。複数のソースコードを同時に編集するなど、ファイルをより複雑に変更するには、Mac OS XでBBEditを使用します。SCPを使用してファイルシステムにアクセスできます。 WindowsとLinuxのようなエディターがあると確信しています。 sshfs は、sshを使用してリモートからファイルシステムにアクセスする方法です。
SSHがほとんどの場合この仕事をします。利用可能なコマンドラインツールについて学ぶことは、時間をかける価値があります。使用したいGUIツールがある場合は [〜#〜] vnc [〜#〜] を使用します。
ファイルを移動するには、通常、CFIS/SAMBA共有をローカルマシンにマウントします。
間違いなくPuTTY。 sshクライアントだけでなく、WindowsベースのSCPクライアントもあります。
Linuxではsshを使用するコマンドライン(X11もインストールされていないため)、およびmy AppleマシンではsshとARDを組み合わせたもの。
Appleリモートデスクトップを使用してファイルを転送することはありません。AFPはTCPは途方もなく遅いなので、scp
。
リモートのグラフィカルアクセスが必要な場合は、ほとんどの場合、VNCをセットアップする必要があります。
SSHを介してリモートでファイルを編集する場合は、いくつかのオプションがあります。
mc
)を使用して、ファイルを前後に移動しますファイルを編集したら、SSHを使用して、たとえばコンパイルを開始します。
考慮すべきもう1つのことは、バージョン管理システムの使用です。 bzr は本当に素晴らしいです。セットアップが簡単で、使いやすいように設計されています。 1台のコンピューターで作業し、更新をプッシュし、サーバーで更新をプルし、コマンドを実行し、問題が発生した場合は元に戻すことができます。
単純な変更の場合は、SSHとSCPでうまくいきます。多数のマシンで変更を加える必要がある場合は、構成管理システムを調べる必要があります。サービスを開始/停止し、構成ファイルの内容を変更し、システムが既知の状態であることを確認できます。
私は Bcfg2 を使用することを好みますが、 Puppet と CFEngine も人気があります。
すべてのサーバーでBcfg2を毎時間実行していますが、手動で実行することもできます。すべてのシステム構成ファイルのバージョン管理された中央リポジトリーがあるため、行われた変更を追跡できます。システムは非常にうまく機能し、手動でサーバーにログインして調整することからの大きなステップです。
私はよく [〜#〜] sftp [〜#〜] リンクよりも Komodo を使用します。
Windowsシステムの管理は常に「負荷の高い」ものでした。つまり、完全なウィンドウ環境が必要であり、オンサイトまたはリモートデスクトップやVNCなどのネットワーク負荷の高いアプリケーションである必要があります。
UNIXはネットワーキングを念頭に置いて設計されたので、ツールは見栄えを良くするためではなく、ネットワーク上で動作するように設計されています。 UNIXサーバーでは、そのウィンドウ環境(通常はX11)をセットアップしないでください。
SSH、wget、およびvimのシンプルなインターフェースは、ネットワークをはるかに助長します-viは実際には300ボーのモデム回線で動作するように設計されました。
実際、リモートのUNIXおよびLinuxシステムでの作業を支援するグラフィカルツールがあります(wspは1つでしたが、gvimは別の可能性があります)。
UNIXシステムを管理する通常の方法は、マシンにログインしてマシン自体で作業することです。ファイルを編集するためだけにファイルを移動する必要はありません。覚えておかなければならない唯一のことは、構成が適切であることを確認し、可能な場合はそれをテストすることです。
アクセスするSSH、限られた量のファイルを転送する必要がある場合はscp。本当に必要な場合は、SMBFS/SAMBAを介した共有ディレクトリ。通常、それは時間の無駄です。 * nix能力の低い従業員の一部は、HTTPS経由でローカルサブネットアクセスにロックされたwebminを使用しています。
Shell In A Box (shellinaboxと発音)は、Markus Gutschkeによって作成されたWebベースのターミナルエミュレーターです。指定されたポートでWebベースのSSHクライアントとして実行される組み込みのWebサーバーがあり、AJAX/JavaScriptおよびCSS対応のブラウザーを使用せずにリモートでLinuxサーバーのSSHシェルにアクセスして制御するようにWebターミナルエミュレーターに指示します。 FireSSHなどの追加のブラウザプラグイン。 — http://www.tecmint.com/Shell-in-a-box-a-web-based-ssh-terminal-to-access-remote-linux-servers/
AjaxTerm は、Pythonで書かれた、Antony Lesuisseによる Anyterm に類似したプログラムです。 Shell In A Box は、Cで記述されたMarkus GutschkeによるAnytermに似たプログラムです。AnytermやAjaxtermとは異なり、サーバーではなくブラウザでターミナルエミュレーションを実行します— http:/ /anyterm.org/demos.html#secid2249226
Butterfly は、フル機能のクライアント側のエミュレートされたWeb端末を強化する(Pythonで記述された)Webサーバーでもあります。