-
ID:Mq2PEG さんの質問

サーバーサイドの方を勉強したいのですが、そもそも、サーバー周りの知識が疎いので、そこら辺の基礎的な勉強をしたいと思っています。今までphpのWebフレームワークなどを使ってサイト構築をレンタルサーバーでしたことはあるのですが、いろんな知識が抜け落ちてる実感があります!

ローカルで開発するときはphpの場合、Macだとmampというソフトウェアをインストールして、ローカルサーバー環境を作って、そちらでプログラムを作ったりしてました。

また、python2だとsimpleHttpServerみたいな名前のモジュールクラスをインポートして使ってました。

ただ、いまいち、それらが何なのかもよく理解しておらずに使っている状態でした。

これから自分がやりたいことの一つにvpsサーバーやクラウドサーバーでサイト運営をしてみたいというのがあるのですが、どういった知識が必要となりますでしょうか?

何を学ぶ必要があるのかを細かく学習対象を教えて頂けませんでしょうか?

httpの意味、役割
サーバーの意味、役割
Webサーバーの意味、役割
CGIの意味、役割
apache/ngixの意味、役割

などなど。

どういったことを理解しておく必要があるのかを教えて頂けると助かります!

学習対象を教えて頂ければ、あとは独学しますので、どうぞお力をお貸し下さいませ。

優先順位や重要度、必須かオプションかなどのふまえて教えて頂けると嬉しいです。

みんなの回答 6 件

ID:x67VUm さんの回答

VPSやるならLinuxの知識も必要ですよ。
基本的にはCentOSでいいとおもうけどMac持ってるなら日頃からターミナルで操作する事になれといた方がいいと思う。あとVimとかEmacsとかのエディタ。
SSH接続でサーバーに接続して設定ファイルの編集とかは基本Viとかになると思うので。
その他に関しては質問で挙げてる項目勉強すればいいとおもう。
1個つっこみを入れるとしたらApache/NginxはWebサーバーですよ。

ID:Mq2PEG

apacheやnginxはWebサーバーですか?それとも、サーバーとして使うlinux環境のマシーンに入れて使うソフトウェアでしょうか?こういった細かいところがネットだとあやふやなので、よく混乱してしまいます。

ID:Mq2PEG

linuxというosの一つのブランドがcentOSという認識であってますでしょうか?

ID:Mq2PEG

SSH接続ですね。よく聞く言葉なのによくわかってないので、そちらも勉強してみます!

ID:Mq2PEG

viエディタは何度か触ったことはあります^ ^

ID:aveoLT さんの回答

中古のPC買ってきてLinuxインストールするところから始めたら? 嫌でも知識が身につく。まぁでも rpm だとあんまりかな…昔はソース取って来て Makefile いじってコンパイル&インストールだったからなぁ。

ID:Mq2PEG

仮想マシンでインストールしたり触ったりしたことはあります^ ^

ID:w9mZb2 さんの回答

今どきのVPSやクラウドは、非公開・停止状態の場合は課金されないサービスもあるので、それを利用して、OSインストールするところから始めるのが一番手軽でコストが安くて手っ取り早いね。理屈は後からついてくる部分もあるので、まずは触って慣れろってとこかな。あと、AWSだと1年無料キャンペーンも定期的にやってるよ。

ID:w9mZb2

あと、一口にサーバーサイドといっても幅は広いので、最終的に何をしたいのかを決めておいたほうがいいよ。それがないと、いつまでたっても終わらないよ。単に仕組みを学びたいだけなのか、インフラを構築できるようになりたいのか、可用性・セキュリティの知識を深めたいのか、チューニングできるようになりたいのか。仮にトピ主が、ただサーバーサイドプログラムをやりたいだけなのであれば、無駄にはならないとしても、かなり遠回りな学習方法だよ。

ID:Mq2PEG

ありがとうございます!

vpsとかクラウド以前にレンサバでのサイト運営で良いので、ちゃんと理解したいです。

wsgiとか出て来たときにもうよくわからなくなってしまいます。アプリケーションサーバー?

ID:Mq2PEG

わからないところを切り分けて整理した方が良さそうですね。。まだ、linuxのところは先延ばしにしておいて大丈夫だと思いました。

自分でサーバープログラムを作るとかが出来るようになるといいのかな。。

ID:ndD0ku さんの回答

ローカルマシンに、VirtualBox+Vagrantで環境作ってCentOSあたりを立ちあげてみましょう。

そこにyumコマンドでapache/PHP/MySQLをインストールしてみる。次に、それぞれのconfigファイルを設定して、ブラウザから見れる状態にする。

四苦八苦していくうちにVi(Vim)の操作も覚えられるし、AWSやVPSでの構築もある程度できるようになると思います。がんばってください。

ID:ndD0ku

↑これをやっているうちに、ChefとかDockerなどが気になりだすが、それは上記ができるようになってからの方がよいでしょう。

ID:Mq2PEG

質問した後に気づいたのですが、自分が今の時点で知りたいことは別のところにあったようでした。。。ご回答ありがとうございました。

ID:ndD0ku

そうでしたか。失礼しました!

ID:Mq2PEG さんの回答

例えば、node.jsサーバーを起動するってのは、どういう意味になるんでしょうか?アパッチとかのWEBサーバーにnodeで書いたプログラムがアップロードされてると思うのですが、その上でnode.jsサーバーを起動ってどういうことなのですか?

ID:Mq2PEG

サーバーの中にサーバーがあるのですか?

ID:x67VUm

違います。
node.jsでApacheと同じような機能を実装するという事です。
ものすごく簡単にいうとURLにアクセスがあれば、該当するファイルを返してやればいいだけです。

ID:Mq2PEG

では、apache無しで使えてるということでしょうか?

ID:/bkqDa

醤油うこと!

ID:aveoLT

node.jsもWebサーバとして機能する。Apacheの代わりになるという事。ちなみにポート番号変えれば両方の共存も可能。

ID:Mq2PEG

こういうところをよく理解出来るようになりたいのですが、何を勉強すればよいでしょうか?ポート番号も勉強してみます。

ID:w9mZb2 さんの回答

OSの上にWebサーバーソフトが動いている。
linuxの上にapacheやnginxやnodeが動いているということ。
ちなみに、webサーバーとは、一般的にhttp経由で公開するためのサーバーのことね。他にもsmtpサーバーとかftpサーバーとか、その種類と役割はいろいろあるよ。

ID:Mq2PEG

WEBサーバーはhttpプロトコールを実装してるサーバーのことということですね。cgiはまた別の話ですか?

ID:w9mZb2

厳密に言えば全然違うけど、phpやrubyやjavascript(node)など、サーバーからクライアントへの応答用プログラムの総称という解釈で問題ないと思う。厳密に知りたいのなら、ググった方が早い。

ID:ZxZf6B

あとでCGIのwikiを読んでみます!

ID:ggIz.3

CGI=応答用プログラム
は、間違いです。
CGI(Common Gateway Interface)はその名の通り、webサーバーに入ってくる情報とその後ろで動作させるプログラムとを接続する為の汎用規格です。

ID:ZxZf6B

トピ主です。HTTPがクライアントとサーバーとの間の通信規格のように、CGIというのはWebサーバーに入って来る情報と実行させるプログラムを接続させるための規格ということですかね。

Webサーバーに入って来る情報というのは例えば、どんなものなのでしょうか?普通にHTTP通信のリクエストヘッダーで送られて来る情報と捉えておけば良いでしょうか?

また、「その後ろで動作させるプログラム」というのは、クライアントによってリクエストされたURI(例えば、phpファイル)というふうに、捉えておけば良いでしょうか?

ID:aveoLT

CGIは簡単に言えばWebサーバ(Apacheとか)がホスト内にある別プログラムを実行するための仕組み。初期は文字列処理が得意なPerlを動かすことが多かった。フォームなどからPOSTまたGETで送られて来る変数をPerlに渡して、Perlは処理後の内容をHTMLにして返すという感じ。

最終更新日:2014-09-03 (12,460 views)

関連するトピックス

ページ上部に戻る