web-dev-qa-db-ja.com

Web開発の役割のサーバーについて知っておくべきことは何ですか?

少し曖昧に聞こえるかもしれませんので、もう少し説明してみましょう...

長年自営業の開発者でしたが、今では商用のWeb開発者の役割を探しています。サーバーとホスティングに関する私の唯一の経験は、FTPを介してアップロードし、CPanel/WHMで少し遊んだことです。私が目指している役割は、Web開発のPHP、MySQL、HTML、CSSタイプの役割ですが、最近のインタビューでは、サーバーでの設定について質問されました。これは理想的ではありませんでした!

私が何をしているのかを知らなければ、何を学びたいのか正確に説明することは困難ですが、それは基本的に、Web開発者として知っておくべきサーバー要素だけなのでしょうか。あなたがWeb開発者であれば、ファイルのアップロード以外にサーバーとのやり取りはありますか? Subversion(SVN)やバージョン管理システムのようなものがWeb開発チームによってセットアップされることがよくありますか、それが彼らが話していたことでしょうか?

12
john

これは一連の大きな質問ですが、多くの人が、特にフロントエンドに重点を置いて始まったキャリアで前進し始めたときに、対処する必要があると思います。

あなたは、PHPとMySQL開発を含む役割を担当するつもりです。これらはサーバー上で実行する必要があるものです。開発者が適切な技術的判断を下せるようになるには、これらのものがサーバーでどのように機能するか、およびWebフロントエンドとどのように相互作用するかを理解しているため、サーバーについて理解を深める必要があります。

サーバーについて必要な知識を正確に把握しようとするのではなく、サーバー側のすべてのソフトウェアを自分でインストールするなど、何かを調べて構築することをお勧めします。 足を濡らす優れた方法は、コンピュータにLinuxをインストールすることです。VirtualBoxのようなものを使用して、現在のOSと一緒に実行させることができます。 MySQLをインストールし、PHPのサーバーをインストールして設定し、すべてを一緒に動作させるようにします。素晴らしいのは、最近、適度に設備の整ったラップトップです。これはすべて実行でき、「サーバー」になることができます。これは、特にLinuxとコマンドラインの使用経験がない場合、最初は難しいかもしれません。開発者として、少なくとも、この演習を完了するのに十分な知識があれば、知識をさらに深める方法を理解するためのジャンプスタートになります。

速度を上げる必要のある分野は3つあります。

  1. Linuxオペレーティングシステムの基本。 Ubuntuのような簡単にインストールできるディストリビューションから始めましょう。
  2. WebサーバーとPHPのセットアップ。最初に、Apacheのインストールが適しています。他にも選択肢がありますが、ほとんどの人がここから始めます。
  3. MySQLのインストールと実行の基本を学びます。少なくとも、開発者として、データベースにテーブルやその他の構造を作成するためにDDLを作成できる必要があり、サーバー上のデータベースにクエリを実行してデータを探索し、データを確認できる必要があります。アプリケーションは、データベースにあるものと一致します。

Ubuntuを使用する場合は、基本的な手順ここを実行して実行できます。 Linuxサーバーの基本をかなり強化してから、Webサーバー/データベースコンポーネントのインストールと操作を開始する必要があることに注意してください。

開発者がファイルをアップロードするだけでなく、サーバーと対話する方法についても、これは組織によって大きく異なると思います。

  1. 多くの場合、開発者は少なくとも開発環境の管理を担当しています。場合によっては、リビジョンコントロールシステム(SVNなど)と展開プロセス(環境間でコードを移動)をセットアップするのは開発者です。
  2. 少なくとも、開発者はサーバー上にあるリビジョン管理システムを使用する必要があります。
  3. また、問題の診断と解決に役立つメッセージが生成されているかどうかを確認するには、サーバーのログを調べるなどの作業も必要です。
  4. サーバーのネットワーク構成やストレージ構成などを決定するには、インフラストラクチャチームと協力する必要がある場合があります。多くの場合、アプリケーションの問題は、構成とコードの組み合わせです。

ポイントは、サーバーにどのように触れる必要があるかについて正確な答えは1つではないということですが、キャリアの中で、FTPのようなものを介してファイルをアップロードするだけでは不十分です。今すぐ基本を学ぶことから始めましょう。

10
DemetriKots

私の最初のアドバイスは、自分を特定の役割に限定することではありません。スペシャリストになり、特定のスキルセット(PHPなど)について深い知識を持つことは素晴らしいことです。ただし、ドメインの他の部分にまたがる幅広い知識を持つことも同様に重要です。

私の経験では、ほとんどのチームは、PHPのコア機能を書き換える知識のある人を雇うのではなく、投げかけられた問題を処理できる人を雇うことを望んでいます(そのレベルの知識があっても確かに害はありません)。または、少なくともチームが遭遇する問題の解決を助けることができる誰か。たとえば、アプリケーションがダウンし、顧客が影響を受けている状況を想像してみてください。手を挙げて「何をすべきかわからない」と言うか、サーバーにSSHでログインしてログのスキャンを開始し、特定のファイルシステムのディスク領域がいっぱいになっていることを確認して、それをクリーンアップします。これはマイナーな例ですが、ポイントは明らかだと思います。その基本的な知識があれば、開発者は特定のファイルシステムを監視し、特定のしきい値に達したときにそれを消去するスクリプトを作成できます。あなたは今、あなたのマネージャーにとってはるかに貴重な存在となっています。

私のキャリアの中で私が学んだもう1つのことは、物事が速く動くことです。もし追いつかなければ、あなたは取り残されることになります。環境全体(ビジネス面を含む)についての知識が多ければ多いほど、より良い状態になります。それはあなたがあなたがするすべてのことの専門家である必要があると言っているわけではありませんが、少なくとも無知であると分類されないための知識を持っています。身近になればなるほど、順応性が高まり、会社にとって資産の価値が高まります。

特にあなたの質問に答えるために...

  • 開発者として知っておくべきサーバー要素は何ですか?

アプリケーションスタック全体に精通してください。使用されているWebサーバー、データベース、キャッシングメカニズムなどを把握します。そして、どのバージョンも。自分のサーバーで環境を再作成できる十分な知識があります。これは、それ自体、非常に重要です。サプライズが減るので、開発と本番環境で多かれ少なかれ同じ環境を持つように努力する必要があります( http://12factor.net/dev-prod-parity )。

  • 開発者として、サーバーとどのようなやり取りがありますか?

これは本当にチームに依存します。私の特定のケースでは、開発者は環境のステージングで大きな役割を果たします。私たちはアプリケーションの内部動作に最も精通しているので、アプリケーションを実行するためにどのサーバーテクノロジーが配置されているかを判断するのに最適な立場にあります。すべてのチームがそのような実践的なアプローチを持っているわけではないと思いますが、ディスカッションに参加できるように十分な親しみがあることは大きな利点です。具体的には、バージョン管理に関して、開発者としてのあなたは、選択されたテクノロジー(Git、Subversion、Mercurialなど)に大きく影響を受けるため、意思決定プロセスに関与するよう努めるべきです。

んで、どうする?

このすべてを学ぶのにどのようにアプローチするのが最善かについての私の提案については? 足を動かす 。テーマについてできる限りすべてを読み込もうとすることを心配しないでください。ほとんどの場合、終了するまでに脳から漏れるだけです。代わりに、ゼロから何かを開発し始めます。 Vagrant ;で始めます。新しい遊び場として使用できる仮想マシンを簡単に作成および管理できます。次に、Webサーバーとデータベースをインストールし、作成を開始します。アプリのアイデアがある場合は、完璧です。それがない場合は、チュートリアルを見つけるか、既存のアプリを再作成してください。プロセス全体に慣れることがポイントです。また、PHP開発者として、ぜひチェックしてください PHP:The Right Way ...本当にすばらしい情報がたくさん含まれています。そして最も重要なのは、それはあなたが楽しんでいて情熱的であるので、あなたは開発者の道をたどったと思います...それを見失わないでください!

2
J.C. Yamokoski

Web開発者になるためにサーバーについて知っておくべきことは何ですか? ...

実際には驚くほど少ない。主な知識分野は、プログラミング、html、phpなどです。

知っておくべきことは、物事をローカルで実行する方法であり、これを実行するときは、ボックスを「サーバー」として使用しています。したがって、ローカルで実行するときは、インターネットサイトと同じように、Webブラウザを使用してページを表示します。ただし、あなたのサイトはhttp://localhostまたはhttp://127.0.0.1になります。

Cgiやhttpなどの設定に関しては、あなたがそれを知っている必要はないと思います。作業しているOS用のWebサーバーの設定については、いつでも一般的な本を読むことができます。これは、一般的な用語を知るのに十分な範囲です。

全体像としては、Linuxにアクセスして、Webサーバーなどのマシンをセットアップおよび構成する方法を学ぶことをお勧めします。しかし、あなたが実際にものに興味を持っている場合のみ。インタビューで印象づけるだけではありません。

最後に、面接時に十分に知らない領域についてメモを取ることを検討することをお勧めします。あなたの質問が、あなたが知らなかった用語などについてより具体的である場合に役立ちます。

1
Michael Durrant

Web開発サイクルを完了するには、以下のことを知る必要があります。

1)IDE(NetbeansおよびEclipseなど)

2)コーディング用のプログラミング言語。 (PHP、Javaなど)

3)ページデザインのフロントテクノロジー(HTML、CSSなど)

4)データを格納および取得するためのバックアップされたデータベース。 (MySQLなど)

3)コードフォームリポジトリをチェックおよび取得するためのバージョン管理システム。

4)依存ファイルを使用してコードをコンパイルするためのビルドツール。 (アリ、メイベン)

6)コードをデプロイして実行するWebサーバー。

7)Webおよびejbコンポーネントを実行およびテストするには、サーバーを介した基本的な展開プロセスを知る必要があります。 (Tomcat、Web-Logicサーバー)

0
Ratnesh Dubey

DemetriKotsの回答に加えて、自動展開と継続的統合のソリューションについても見ていきます。サーバーの初期設定は1つのステップにすぎず、FTPを介したデプロイは面倒でエラーが発生しやすく、不適切なデプロイをロールバックするための適切なソリューションがありません。

  • Hudson -継続的インテグレーションサーバー
  • Phing -Antに基づく自動ビルドツール、特にPHP用
  • Ant -自動ビルドツール
  • Capistrano -Webアプリケーションの展開を自動化して容易にする展開スクリプトを作成します。
0
Kikimac