何らかの方法で、すべてのWeb開発者は、Webアプリケーションを開発するために何らかのサーバーを必要とします。 誰かが
Denverを使用し、誰かが
OpenServerを使用し、より高度な仮想サーバー(VPS)を使用し、さらに高度な
Vagrantを使用します。 ここでは、VirtualBox、bash、および松葉杖を使用してWeb開発アプリケーションを展開する方法を説明します。 怠け者で猫の下を見たくない人のために:ゲストOSの共有フォルダーをマウントする1つのbashスクリプトと、システムを停止する前に起動してデーモンインターフェースを実装する最初のスクリプトを実行する
ハーフデーモンについて説明します。
ゲストOSとしてCentOS 6.5 Linuxディストリビューションが選択され、WebサーバーとしてApache 2.2.15が選択されました。
すぐに予約します。インターネットには多くのマナがあるため、LAMPサーバーのインストールと構成については説明しません。
スクリプトの最初のバージョンは次のようになりました。
徐々に、次のスクリプトに成長しました。
スクリプト1-主力-/root/scripts/vbox-sf.sh 必要なものとその仕組み
- ゲストマシンにWebサーバーをインストールする必要があります(Apacheを選択しました)。
- ゲストOSで共有フォルダーを正しくマウントするには、 Guest Additionsをインストールする必要があります。
- マウントするフォルダーは短く、一意である必要があります-この名前はサーバーのドメインのサブドメインになります。
- Webサーバーの仮想ホスト構成テンプレートを共有フォルダーのルートに配置する必要があります。
Webサーバーの概算の仮想ホスト構成 <VirtualHost *:80> DocumentRoot /var/www/html/<%domain%> ServerName <%domain%> ServerAlias www.<%domain%> DirectoryIndex index.php <Directory /var/www/html/<%domain%>> AllowOverride All php_admin_value open_basedir /var/www/html/<%domain%>:/tmp:/usr/share:/var/lib </Directory> CustomLog /var/www/html/<%domain%>/httpd_<%domain%>_access.log combined ErrorLog /var/www/html/<%domain%>/httpd_<%domain%>_error.log php_admin_value xdebug.profiler_output_dir /var/www/html/<%domain%>/xd_profile_<%domain%> php_admin_value xdebug.trace_output_dir /var/www/html/<%domain%>/xd_trace_<%domain%> </VirtualHost>
構成自体は変更される可能性がありますが、主なポイントを保存する必要があります:<%domain%>-Webアプリケーションのドメインに置き換えられるマスク、プロファイリングとトレース用のログファイルとフォルダー(必要な場合)。 アプリケーションで必要なものに応じて、味わう他のすべて。
フォルダーは、自動マウントと、できれば書き込み権限で共有する必要があります。このアプリケーションを介して何かをアップロードできるため、ファイルを保存する必要があります。 そして誰かがファイルに何かをキャッシュできます。 書く権利は害を与えません。 自動マウントは重要です-スクリプトは、 / media / sf_ *に既にマウントされているフォルダーのリストから必要なフォルダーを選択します。これが、フォルダーを自動マウントでマウントする必要がある理由です。 スクリーンショットのように見えるはずです。- ゲストマシンでは、SELinuxを無効にする必要があります。 SELinuxを有効にすると、Webサーバーは/ var / www / html /にマッピングされたフォルダーを認識しません-それらはhttpdではなくvboxコンテキストにマウントされます。 私はまだそれを修正する方法を見つけていないので、松葉杖で支えられました-SELinuxを無効にしました。
- ホストマシンホストはドメインの形式である必要があります。 natty.natがあるため、このゲストマシンにダウンロードするすべてのWebアプリケーションは次のようになります:[共有するフォルダーの名前]。[ホスト名]。 例: test.natty.nat 個人的には、そのようなドメインにハングアップするのは便利でした。
- / etc / httpd / conf / sfフォルダーを作成する必要があります。
Webサーバーの仮想ホストの構成が保存される場所。 同時に、 / etc / httpd / conf / httpd.confファイルの最後に、上記のフォルダーに保存するすべての構成を含める必要があります。
include "conf/sf/*.conf"
すべてが順調であれば、仮想マシン上のプロジェクトとフォルダーを共有して実行し、次のコマンドを実行することで、開発の準備が整います。
したがって、すべての共有フォルダーをマウントします。 2番目の引数としてフォルダーの名前を指定すると、そのフォルダーのみをマウントまたは分解できます。
鬼
しかし、今ではこのビジネスを何らかの形で自動化するのがいいでしょう。 デーモンのパスを選択しましたが、/
etc / rc 。
#ファイルを変更するよりも正しいと思います。 次のスクリプトは
/etc/init.d用に作成されました
2番目のスクリプト-デーモン-/etc/init.d/vboxsf このスクリプトは、ディレクトリ
/etc/init.dに配置し、ファイルに
vboxsfという名前を付ける必要があります。 実際、ここではファイル名は重要ではありません。
chkconfigを使用して新しいデーモンを追加するとき、このファイルの名前を指定する必要があります。 次に、
vboxsfを使用し
ます 。
そこで、ファイルを追加しました。 ここで、スクリプトを
/ root / binにリンクする必要があります。
chkconfigに追加します。
すべてが追加されているかどうかを確認します。
すべてが順調であれば、スクリプトを実行するレベルを表示する必要があります。
その結果、次のコマンドを簡単に使用できるようになりました。
そうでない場合は、間違ったことを確認してください。 原則として、この時点ですべてが機能するはずです。起動時にマウントされ、シャットダウンする前に分解されます。
そして今おいしい
フォルダーをマウントした後、アンマウントする前に実行するスクリプトを覚えていますか? したがって、より便利な作業のために、データベースをダンプからMySQLサーバーにデプロイし、マウント解除が発生する前に、データベースをダンプにマージします。 したがって、マシンの電源を切った後に実際のベースダンプがあり、マシンの電源を入れた後に実際のベースがあります。
これらのスクリプトは次のとおりです。
3番目のスクリプト-ダンプからデータベースを復元する-aftermount.sh 重要! 了解! dbAdminUserとdbAdminPassは、データベース管理者のログインとパスワードであり、ユーザーの作成/削除、データベースの作成、ダンプの入力ができます。
ourDbName、ourDbUser、ourDbPassword-データベースの名前と、開発中のマウントされたWebアプリケーションで使用されるMySQLユーザーのユーザー名とパスワード。
このスクリプトの機能:
- ユーザーを作成します。
- データベースを作成します。
- ダンプの内容をこのデータベースに注ぎます
必要なもの:
- DBAがユーザーを追加し、DBを作成し、ダンプを入力できるようにするために(MySQLルートユーザーと短いパスワードを使用します。VirtualBoxでサーバーが破損することはありません)。
- データベースのダンプは、 db.sqlファイルの共有フォルダーのルートにある必要があります。 別の名前を付けて別の場所に配置することもできますが、スクリプトも修正する必要があります。これは、必要であれば問題になりません。
- 清潔さを維持するために、作成されたユーザーもデータベースも、ビジネス全体を展開する前であってはなりません。
2番目のスクリプトは、データベースの内容をファイルに保存し、ユーザーをクリーンアップしてデータベースを削除するだけです。
4番目のスクリプト-データベースをダンプに保存する-beforeumount.sh 前のスクリプトと同じ設定。 この時点で、すべてが透明になっているはずです。
これらすべての操作の後、次のようになります。VirtualBoxの下で実行されている仮想サーバーがあります。 オンにすると、フォルダーが自動的にマウントされ、MySQLにデータベースが作成され、事前に準備されたダンプがアップロードされます-作業できます-ログは実際にマシン上にあり、ファイルとトレースのプロファイリングもマシン上にあります; 作業が完了すると、サーバーの電源をオフにします。ログが削除され、プロファイルファイルとトレースがフォルダーと共に削除され、データベースの内容がファイルにダンプされ、フォルダーが解体され、マシンの電源がオフになります。 実際、サーバーは一種の代理人またはドナーの役割を果たします。最終的には何も保存されず、動き回ることはありませんが、投げたものを再現するだけです。
便利で便利なボーナス:複数のサーバーを異なるソフトウェアバージョンでセットアップし、同時にWebアプリケーションがphp、MySQL、Apacheの各バージョンでどのように機能するかを確認できます。 ログ、トレース、プロファイリングファイルは、ヒープ内のすべてに干渉しないように、ドメイン名に応じて個別のファイルに配置されます。
必要に応じて、他のスイーツやアメニティを掛けることができますが、これは各開発者の好みやニーズに応じて個別に行います。 必要なのは、マウント後にマウント解除する前に実行されるスクリプトに押し込まれます。
はい、別の重要な詳細。 開発に使用できるサブドメインの動物園全体を登録しないようにするには、サーバーマシン(開発中のVirtualBoxがインストールされているマシンにラップトップがあります)にインストールする必要があります
Dnsmasqは軽量のDNS、DHCP、TFTP(BOOTP、PXE )サーバー。 単純に全く厄介なチューニングです。 クリーンな設定は次のようになります(はい、3台のマシンがあります:5.3、5.4、5.5):
$ cat /etc/dnsmasq.conf | egrep -v "(^#.*|^$)" listen-address=127.0.0.1 address=/natty.nat/192.168.191.160 address=/ketty.nat/192.168.191.161 address=/betsy.nat/192.168.191.162
したがって、これらのドメインのすべてのサブドメインは、指定されたIPアドレスに向けられます。
それでも、誰かがXDebugに役立つ
/etc/php.iniを便利だと
感じるかもしれません。
/etc/php.iniからの断片 ; - XDebug zend_extension="xdebug.so" xdebug.cli_color=1 xdebug.remote_enable=true xdebug.remote_host="192.168.191.1" xdebug.remote_port=9000 xdebug.remote_handler="dbgp" xdebug.remote_connect_back=1 ; Profiler xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 1 xdebug.profiler_append = 0 ; Trace options xdebug.collect_includes = 1 xdebug.collect_params = 4 xdebug.collect_vars = 0 xdebug.dump.REQUEST = * xdebug.dump.SESSION = * ;xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD xdebug.dump.SERVER = * xdebug.dump_globals = 1 xdebug.dump_once = 1 xdebug.dump_undefined = 0 xdebug.show_mem_delta = Off ;xdebug.file_link_format = '' xdebug.manual_url = http://www.php.net xdebug.show_exception_trace = 1 xdebug.show_local_vars = 1 xdebug.show_mem_delta = 1 ; Traces xdebug.auto_trace = 0 xdebug.collect_assignments = 1 xdebug.collect_return = 1 xdebug.trace_enable_trigger = 1 ; 0 for parsing ; 1 human readable xdebug.trace_format = 1 xdebug.trace_options = 0 xdebug.trace_output_name = trace.%c
誰も知らない場合、XDebug-
最も簡単なXdebugで作業するための便利な拡張機能があります。これは、ブレークポイントの停止、プロファイリング、およびトレースを有効/無効にすることができます。
ネットワーク192.168.191.0/24にすべてを作成し、次にこのサブネットからIPを作成しました。 別のサブネットがある場合-必要に応じて変更します。