0

https://django-cms.org/en/demo/のようなデモを生成するWebページを作成する必要があります。デモを生成するには、クリックするだけですGet your demo!

フリーでオープンソースである限り、言語やPHPなどは気にしません。

ボタンがクリックされると、実行されます/var/testing/makesite.sh

内部makesite.shには、コードがありますurlnya="$thegeneratedurl"

を実行するecho http://$urlnya/と、のような完全なURLが表示されますhttp://site1045.demosite.com/

デモウェブサイトが生成された後、リンクを表示する必要があります

これを実現するためのPHPの例がいくつかありますがshell_exec、それが本当に安全でない場合は怖く、DjangoCMSサイトのように進行状況を表示してデモURLを返す方法がわかりません。

4

2 に答える 2

0

shell_exec() で起こりうる問題は、それを使用することとは何の関係もありません。恐ろしく危険なことは、ユーザーが入力する文字列を指定できるようにすることです。文字列には、システムを「だまして」ハッキングしようとするあらゆる種類の奇妙な試みが非常にまれに含まれる可能性があります。しかし、あなたはそれをする必要はありません。独自のコードで入力される文字列を作成する限り、問題はありません。

この文字列は、Linux シェル プロンプトで入力するものとまったく同じでなければなりません。スクリプトが必要とする内容の詳細に応じて、スクリプトを開始する文字列は単に「/usr/local/bin/makesite.sh」のようなものになる場合があります。または、「/usr/local/bin/makesite.sh --ownername clientname」などのパラメーターが含まれている場合もあります。パラメーターがある場合は、ユーザーに代わりにパラメーターを代入してもらうのではなく、記述したコードで自分自身で代用してください。そうすれば、セキュリティ リスクは最小限に抑えられます。

makesite.sh の「echo $urlnya」の結果 {および shell_exec() コマンドの他のすべての出力} は、shell_exec() によってテキストのチャンクとして渡され、任意の操作を実行できます。コードは、それを解析し、独自の Web ページでその一部を使用し、内部で一部を追跡し、ある種の一意の ID を抽出することができます。たとえば、作成中の Web ページの {See Created Web Page} などのラベルの付いたボタンの後ろに、その URL へのハイパーリンクを配置したい場合があります。

プログレスバーについては、機能を提供するウィジェットまたはライブラリを入手してください (ただし、さらにいくつかの段落を参照してください:-)。それを行う方法は少し奇妙で、クロスブラウザーの問題がかなりの量になる可能性があるため、プログレスバーは、他の誰かのカプセル化と機能のテストを利用することが本当に良いアイデアの1つです. ライブラリは Yahoo! から入手できると思いますし、JQuery にはその機能が含まれていると思います。

ローカルのブラウザ/クライアントは進行状況バーを何度も操作しますが、数秒間選択してから、サーバーと「再同期」して正確な情報を表示します。たとえば、移動する縞模様が時々見られます。その動きはおそらく純粋に局所的であり、純粋に「推測」です。ただし、ページは数秒でサーバーと「再同期」して長さを再調整するため (または、何か問題が発生した場合はストライプを完全に停止することさえあります)、それで十分です。

ただし、進行状況バーを表示することは問題の一部にすぎません。問題の大きな部分は、を表示するかです。システム上の何かが、「55% 完了しました」などと言うことができる必要があります。しかし、makesite.sh がそれをどのように行うか (あるいは行うかどうか) はわかりません。そのような情報を生成するのに役立つ機能が Linux に組み込まれていることは知りません。コマンドを数回実行して、所要時間とマイルストーンを確認し、それらのマイルストーンをチェックする独自のトラッカー プログラムを作成する必要がある場合があります。それは価値があるよりも面倒かもしれません。代わりに、もっと単純なものを作成したい場合があります。たとえば、「セットアップ完了までのおおよその推定時間はあと 2 分です」や「セットアップに失敗しました。もう一度お試しください」など、ほとんど脳死状態のテキストです。

于 2012-05-22T17:02:45.190 に答える
0

Pythonでは、コマンドを実行する必要がsubprocessあります。を使用してこれを行うこともできます。envoyGNU/Linuxfabric

これを達成するためには、使い方を学ぶ必要があり、アプリケーションごとにvirtualenv独自のものを作成する必要があります。port no

これは別の間違った書き込みに値します。面白いけどソースコード全部書けません。

URL 部分は、ランダムsubdomainまたは別のアイデアを使用することをお勧めします。競合を避けるために、以前に生成されたすべての値のリストを DB に保存するか、現在実行中のデモ サイトを確認する必要がある場合があります。

References

http://docs.python.org/library/subprocess.html
https://github.com/kennethreitz/envoy
http://pypi.python.org/pypi/virtualenv
http://docs.fabfile.org/en /1.4.2/index.html

于 2012-05-20T08:14:21.987 に答える