18

Windows開発者である私は、現在LAMPを使用して自分のプロジェクトに取り組んでいます。PHPとMySQLについて知っておくべきことは理解していますが、Linuxは巨大に見え、どこから始めればよいのか、そして私の目標を考えると何が十分なのかが明確ではありません。そして、私の目標は、一般的な概念を把握し、プロジェクトをホスティングプロバイダーに展開し、問題や負荷の問題などを特定するためにサイトのパフォーマンスを監視できるようにすることです。

Linux管理者にそれを実行させるのが最善の解決策ですが、それを実行する前に、自分で実行する必要があります。

4

11 に答える 11

27

問題の 80% はパーミッションです。Windows はそれらを別の方法で行います。root として (または root のような特権で) ログインすると、パーミッションをバイパスできます。Apacheはできませんし、しません。

  • ファイルとディレクトリの所有権を適切に設定する方法を学びます。どの Unix の本もこれを扱っています: 実際にそれを理解するようにしてください -- これは異なるスペルの Windows セキュリティではありません -- セキュリティの異なるモデルです。

残りの問題のうち、80% は PATH の問題です。PHP には、Java や Python ほど大きな PATH の問題はありませんが、いずれも PATH 設定を使用してコンポーネントとライブラリを検索します。あなたは定期的にそれらを間違えます。Windows には PATH がありますが、レジストリもあり、非常に簡単または極秘になります。Unix は秘密を保持しません。

  • PHP と MySQL が使用する環境変数について学びます。それらがどこでどのように設定されるかを知っていることを確認してください。Apache は独自の固有の環境で実行され、 を介してランタイム環境設定を提供するコマンドがありますmod_php。短いecho $PATHシェル スクリプトを記述して、何が起こっているかを明らかにします。

残りの問題のうち、80% はデータベース関連です。データベースのアクセス許可を整理した後も、接続する必要があります。「名前付きパイプ」と「localhost」の違いは、あいまいで紛らわしい方法で間違っています。MySQL は非常に寛容ですが、ここで間違いを犯す可能性があります。

  • それぞれの代替接続を試して、それらがどのように機能するかを理解してください。Windows に似ている、または "より単純" であるため、1 つを選択しないでください。それぞれ実際に運動させます。ユーザー名とパスワードを Web アプリからデータベース サーバーに渡す方法も重要です。Apache は「nobody」として実行されます。また、デフォルトのアクセス権を何も与えたくありません。アプリは、デフォルトを使用せずに意図的にデータベースに接続する必要があります。

残りの問題のうち、80% は Apache 構成です。Apache は非常にシンプルですが、100 万のオプションがあります。すべてを行うには 4 つの方法があります。常に、まったく機能しない 2 つを試して、厄介な 3 つ目の方法で解決します。はるかに単純な 4 番目は、決して思い浮かびません。

  • Apache の設定についてたくさん読んでください。httpd.apache.orgサイトには多くの情報がありますシンプルさを追求してください。既存の例をコピーして使用します。IIS の経験や Windows デスクトップの経験に基づいて、要件や望ましい実装を構成しないでください。動作するものをコピーします。

残りの問題のうち、80% はアプリケーションによるファイル システムの使用です。ローカル ファイルを開いたり、読み書きしたりしようとすると、(a) 使用しようとしているディレクトリのアクセス許可が正しくない [上記を参照] および (b) Unix ファイル パスが異なることがわかります。大きな違いはありませんが、あいまいな方法で何かが壊れるほどの違いがあります。

  • Unix/Linux のすべてのプログラミング本でこれがカバーされています。Windows と大差ありませんが、最初はつまずくだけの違いがあります。「hello world」のような PHP ページを作成して、可能な限り単純なバージョンのアップロードまたはダウンロードを急増させて、すべての要素とパーツが適切に配置されていることを確認します。次に、完全なアプリを修正して正しく実行します。

残りの問題のうち、80% はサブプロセスの作成になります。Windows ではこれが異なります。Unix で最も重要なことの 1 つは、サブプロセスが子プロセスであり、OS がクリーンアップできるように、サブプロセスが終了するまで実際に待つ必要があることを覚えておくことです。サブプロセスを並列の「ファイア アンド フォーゲット」と考えると、ゾンビ プロセスが発生し、定期的な再起動が必要になります。

  • サブプロセス管理をスパイクする非常に単純な PHP ページを作成します。黄金律は、子供たちを管理し、後片付けをすることです。次に、完全なアプリを修正して正しく実行します。

残りの問題は些細なアプリケーション ロジックですが、プラットフォームが異なるため、PHP アプリケーションのバグを突き止める前に Unix のせいにする必要があります。

于 2008-11-17T16:28:52.947 に答える
5

私の頭のてっぺんからあなたはする必要があります:

  1. ファイルシステムの使い方を学びましょう。
  2. 使用しているプロセス(サービス)を開始/停止する方法を学びます。
  3. 基本的なテキストエディタ(VimJOE、またはPico)を検索または学習します
  4. プロセスをチェックして、実行されているかどうかを確認する方法を学びます(pstop
  5. サーバーを保守している場合は、パッケージのインストール方法を学ぶ必要があります。

これらは基本的なことだけです。次のステップは、問題が発生したときにそれを認識し、問題に関する詳細情報を見つけるためにどこに行けばよいかを知ることです。それでも、それは表面を引っかいただけであり、多くのことが意味をなさないかもしれません。しかし、それは良いスタートです。

于 2008-11-17T15:30:12.143 に答える
2

かなり複雑なイントラネット サイトをIIS /Windows からApache /Linuxに移植するよう依頼されたとき、私は Windows と Mac で PHP/MySQL を数年間使用していました。私は、Linux と、OS がまったくない空のサーバーの経験がありませんでした。私と、Linux の経験がほとんどない別の Windows 管理者は、約 2 日で、CentOSのコピーを立ち上げ、PHP/MySQL/Apache とイントラネットを実行しました。

私が学んだ教訓: YUMはサービスをインストールするときの親友であり、sudoはサービスを構成するときの親友であり (パーミッションは面倒な場合があります)、その他のほとんどすべての問題は、大文字と小文字の区別またはスラッシュとバックスラッシュの問題が原因でした。

FTP アクセスのセキュリティに少し問題があったことが判明しましたが、これはファイアウォール ( DMZ ) の背後にあったため、実際のセキュリティ監査を受けて強化する前に損害は発生していませんでした。

最終的な答え: 袖をまくり上げてコマンド ラインを汚すつもりなら、Linux ボックスで基本的な Web サイトを立ち上げて実行することは、(IMO) 誰かに任せたほうがよいセキュリティに到達するまで、大きな仕事ではありません。その分野の専門家。

于 2008-11-17T21:12:27.680 に答える
1

ほとんどの場合、Linuxの使用方法を知っている必要があります(日常の使用と同様)。次に、コマンドラインの処理方法も知っておく必要があります。

最後に、 LAMP固有のものを学ぶ必要があります。いくつかの基本的な(またはそれほど基本的ではない)セキュリティガイドラインを知って適用する必要があります。

于 2008-11-17T19:55:39.487 に答える
1

紹介に基づいて、WAMPオプション(Windows Apache MySQL Python、Perl、およびPHP)を検討することもできます。

Linuxを学ぶのは難しいことではありませんが、それも確かに簡単な作業ではありません。プラットフォーム間を引き継ぐシステム管理タスクはたくさんありますが、あなたの質問に対する本当の答えは、少なくとも趣味のLinux管理者になり、そこから進むことです。

于 2008-11-17T15:29:31.397 に答える
1

私はviBashを学びます。viは軽量で、どこにでも設置できる傾向があります。慣れるまでは大変な苦痛かもしれませんが、Linuxを知りたい場合は、ほとんどの場合いつでも利用できる傾向があり、テキストエディタがたくさん必要になります。Bashもデフォルトのシェルになる傾向があるので、私はBashについても学びます。

vfilbyの提案は良いです。

選択したLinuxのパッケージマネージャーを確実に学びましょう。Apacheには多くの構成オプションがあるという理由だけで少し怪物なので、私はApacheでしばらく時間を過ごします。

私はLinuxのテストベッドをパブリックインターネットから遠ざけようとしています。なぜなら、私はLinuxを安全に保つのに十分なシステム管理者ではないことを知っているからです。少なくともファイアウォールの背後に置いてください。入ってくるものすべてをブロックするiptablesスクリプトを見つけるのは非常に簡単なので、ファイアウォール/アドレス/ポートの適切な操作についてiptablesをチェックすることをお勧めします。

幸運を!

于 2008-11-17T15:36:54.440 に答える
1

率直に言って、あなたが取り組んでいるウェブサイトが非常に小さいか非常に大きい場合は、ほとんどありません.

非常に小さいということは共有ホスティングを意味し、汗をかく必要はありません。非常に大きいということは、おそらくそれを処理するシステム管理者が乗っていることを意味します。

于 2008-11-17T20:41:49.737 に答える
1

あなたがすべき

  • Bashシェルを学ぶ(特に$PATHhistory)
  • 基本コマンド ( cdlsrmtailkillpsおよびtop)
  • 知識/procとその主な用途
  • エディタを学ぶ ( viは常にインストールされています。必要に応じてEmacsも学ぶことができます)
  • 基本的なsedの置き換え ( sed s,orig,repl,g)、および少しのAWK
  • の使用方法iptablesnetstatおよびtraceroute
  • 情報の入手方法 ( maninfoおよび--help)
  • pacman -S <name>パッケージをインストールする方法 ( Arch Linuxの場合apt-get install <name>Debianベースの場合)、システムを削除して更新する方法。
  • ディストリビューションでサービスを開始/停止する方法を知っている ( /etc/init.d/etc/rc.d)
  • 一般に、Unix ファイルシステムはどのように機能するか ( inodes . とはquota?)。理解、例えば/etc/fstab。について知っているdf
  • ユーザーとグループの管理方法を理解する (useraddおよびgroupadd)。/etc/passwdと の形式を知る/etc/group
  • Apachesyslogデーモンのログ ファイルを探す場所。
  • dmesgとのようないくつかの低レベルのものについて知っているhdparm
于 2008-11-17T18:08:51.700 に答える
1

まず、GUI ツール ( GNOMEまたはKDE ) を使用してシステムを管理するか、コマンドラインを使用して主に SSH からアクセスするかを決定する必要があります。(これは通常、サーバーの場所に基づいて決定されます)。GUI と CLI の両方を少し学習することは大いに役立ちます。CLI は非常に強力で、Windows のコマンド プロンプトよりもはるかに優れています ( PowerShellについては知っています...)

GUI の観点から見ると、 Debian / Ubuntuの観点から、ターミナル (CLI) をとにかく実行しています。

  1. プロセスの開始/停止:sudo /etc/init.d/apache stopまたはsudo /etc/init.d/apache start
  2. テキストエディタ: gedit (GUI - GNOME)、Kate (GUI - KDE)、Vim (CLI) またはnano (CLI)
  3. 実行中のプロセス:ps -aux
  4. プロセスを終了するsudo kill -s TERM <process_id>
  5. パッケージを追加します。sudo apt-get install php5-cli
  6. システムのアップグレード/パッチ:sudo apt-get update && sudo apt-get upgrade

ここには非常に多くの情報があり、さまざまなオプションから選択できます。フレンドリーなコミュニティを持つ Linux ディストリビューション (つまり、Ubuntu、CentOS (デブランド/フリーのRed Hat Linux (RHEL))、または RHEL (お金を払って支援してくれます)) を使用することをお勧めします。

自宅/職場の仮想マシンまたは予備のマシンで週末にディストリビューションをいじってみると、間違いなく多くの価値があります。Linux コミュニティは巨大で、探せば優れたサポートを見つけることができます。

于 2008-11-17T16:26:24.900 に答える
1
  • GNU coreutils マニュアルをブックマークまたはダウンロードして、定期的に読んでください

  • Vimを学びます。良いスタートはvimtutorシェルにあります。

  • セキュリティ メカニズムの使用方法を学びます。それらを無効にするだけではありません。Windows のセキュリティは緩いです。これは、利用可能なアプリケーションがこの方法を期待しているためです (そうしないと壊れてしまいます)。Unix ライクな環境では、アプリケーションは常に動作を余儀なくされており、デフォルトでセキュリティが厳重になる可能性があります。

于 2008-11-17T21:43:40.830 に答える
-1

Craigslistで古いボックスを探し出し、そこにGentoo Linuxをインストールします。その...経験...により、Linuxとその考え方について多くの感触が得られるはずです。

また、viEmacsの場合、私はEmacsを支配します。(ただし、新しい OS を学習しながらフル機能のエディターを学習しても意味がないため、Pico / nanoから始めたいと思うでしょう)。

于 2008-11-17T16:36:07.907 に答える