この記事では、EpiiServer というソフトウェアを紹介します。これは、php nginx の複数のアプリケーションの環境をより速く、より便利にデプロイできます。開発者に非常に適しています。興味のある友人は、それについて学ぶことができます。
EpiiServer とは
より高速で便利な php nginx マルチアプリケーション展開環境。
github ウェアハウスのホームページ
https://github.com/epaii/epii-server
gitee ウェアハウス
https://gitee.com/ epii/epii-server
機能:
- 複数のアプリケーションの迅速な展開、ドメイン名の自動生成。
- 各アプリケーションは独自のバージョンの php を設定できます。
- 各アプリケーションは独自の環境変数を設定できます。
- ドメイン名とディレクトリは自動的にバインドされ、5 レベルのドメイン名はディレクトリに自動的にバインドされるようにサポートされています。
- wamp などの統合環境と比較すると、環境のインストールよりもカスタマイズされた構成に重点が置かれています。
どのような問題が解決されましたか?
インストール方法については話さないで、まずこのアプリケーションが必要かどうかを確認しましょう。
1. 複数のローカル Web サイト、ドメイン名が自動的に生成されます。
おそらく、http://localhost/app1
と http://localhost/app2
を使用して 2 つの Web サイトにアクセスできると言うでしょう。 . .
はい、確かに。しかし、それぞれが独自のドメイン名を設定したらどうなるでしょうか?たとえば、http://app1.loc.com
と http://app2.loc.com
このアイデアがある場合、このソフトウェアはそれを簡単に実現するのに役立ちます。
次のディレクトリ
web -- App集合目录 app3 index.php --入口文件 app4 application public index.php --入口文件 app5 dir1 dir2 dir3 index.php --入口文件
ドメイン名は自動的に
http://app3.loc.com http://public.app4.loc.com http://dir3.dir2.app5.loc.com
## EpiiServer のルートディレクトリ配下のあなたがしなければならないこと(やるべき唯一のこと)は、
# を指します。をさせることだけです。ホストファイル .loc.com
およびpublic.app4.loc.com
の app3、dir3.dir2.app5.loc.com
は、ip
web ディレクトリがアプリのプロジェクトコレクションディレクトリとなり、このディレクトリにアプリを置くだけで上記のドメイン名が自動生成されます。
質問 1上記のドメイン名 loc.com は何ですか?
彼はすべての
app のルート ドメイン名です。どのアプリもサブペアをドメイン名
{appname}.loc.com に変換し、ディレクトリ アクセスは自動的に
dir3.dir2.dir1.{appname}.loc.com になります。 。
config.ini.example を
config.ini## にコピーするだけです。 #) <pre class='brush:php;toolbar:false;'>[server]
domain_this=you.domain.com</pre># を設定します
[server] の下の
##。DNS サーバーを使用してドメイン名の汎解決を実装する場合、hosts
ファイルで設定する必要はありません。ドメイン名を指します。
- 任意の
- app
は、
ルート ドメイン名 に基づいて生成されたマルチレベル ドメイン名です。他の形式のドメイン名はサポートされていません。 -
アプリに
www.web.com
などの別のドメイン名がある場合は、DNS サービス プロバイダーで cname を使用して、アプリのローカル ドメイン名に解決できます。 。 - 質問 2
おそらく、私のプロジェクトはすべて別のディレクトリにありますが、ルート ディレクトリのweb# にコピーする必要があるのかと尋ねられるかもしれません。 EpiiServer の? ## ディレクトリ内のみ?もちろん違います。
の [server]
の下にある
[server] www_dir=/path/to/your/www
www_dir を絶対パスに設定するだけで、中国語を含めることはできません
質問 3
上記の方法に従ってアプリのコレクション ディレクトリを設定しましたが、まだいくつかのアプリ (または多数) が他のディレクトリに分散されています。コピーする必要がありますか?それらをアプリ コレクション ディレクトリにコピーしますか?もちろん違います。 たとえば、app6
が別のディレクトリ
"c:\workplace\app6"に配置されている場合、
config で設定するだけで済みます。 ini [app_dir]
<pre class='brush:php;toolbar:false;'>[app_dir]
app6=c:\workplace\app6
app7=/path/to/app7</pre>
ディレクトリを絶対パスに設定し、中国語を含まないようにします。
この場合、ドメイン名
、たとえば、app7.loc.com
は、設定したパスを指します。サブディレクトリのドメイン名への変換もサポートしています。
app6 のエントリ ファイルが
c:\workplace\app6\public\index.php の場合、# にアクセスします。 ##<pre class='brush:php;toolbar:false;'>http://public.app6.loc.com</pre>
実際には、上記の設定は非科学的です。app6 のディレクトリを直接
public
[app_dir] app6=c:\workplace\app6\public
に指定すると、ドメイン名が簡素化されます。
app6.loc.com# へ ##ヒント<pre class='brush:php;toolbar:false;'>在上面web下app5中,为了访问入口文件 我们需要 访问
`http://dir3.dir2.app5.loc.com` 这个域名才可以,如果想简化为 `http://app5.loc.com`,
只需把 dir3的绝对路径设置为`app5`的路径即可。app5=/path/to/app5/dir2/dir3</pre>
質問 4
IP に直接アクセスするとどうなりますか? IP への直接アクセスは、他の継承環境と同じです。
http://127.0.0.1/app1 http://127.0.0.1/app2/dir1/dir2/index.php
IP アドレスにアクセスするときに、デフォルトで
appを指定できますか?たとえば、IP にアクセスして
app1に直接アクセスするには、
config.ini[server] default_app=app1# の
[server] に設定するだけです。 ##設定後、
http://127.0.0.1/ にアクセスすると、
app1
が直接参照されるようになります。 IP アクセスの役割は、他人があなたのコンピュータにアクセスすることにあります。もちろん、他の人も
hosts
2. 複数の PHP バージョンが共存できます。
例如
app8
支持版本为php5.6
app9
支持版本为php7.1
app10
支持版本为php7.2
如果这些应用共存,您有什么解决方法。
解决方法很简单。首先下载多个版本的php。然后在
config.ini
的[php]
模块设置。
window
使用的是php-cgi.exe
,所以只需要指定每一个php版本的php-cgi.exe
路径,及端口即可。[php] php_cgi[0] = c:\path\to\php5.6\php-cgi.exe port[0] = 9000 php_cgi[1] = c:\path\to\php7.1\php-cgi.exe port[1] = 9001 php_cgi[2] = c:\path\to\php7.3\php-cgi.exe port[2] = 9002
linux
,unix
下使用的是php-fpm
(php-cgi,fastcgi,php-fpm的区别,大家自己查)[php] php_cgi[0] = /path/to/php5.6/sbin/php-fpm port[0] = 9000 php_cgi[1] =/path/to/php7.1/sbin/php-fpm port[1] = 9001 php_cgi[2] = /path/to/php7.2/sbin/php-fpm port[2] = 9002注意:php-fpm的配置文件
php-fpm.conf
里设置了端口。上面设置的端口一定要和各个版本的php-fpm.conf
中的端口一致。而php-cgi
只需设置端口即可。通过上述设置
php
多版本后,默认的所有应用都设置为第一个php版本,即php_cgi[0]
的设置。为了实现
app8
支持版本为php5.6
app9
支持版本为php7.1
app10
支持版本为php7.2
需在在
config.ini
的[app_php_select]
模块设置各自的php版本id[app_php_select] app9=1 app0=2app8无需设置,因为所有的应用默认都使用第一个php版本
3、环境变量设置。
大家肯定会遇到这些问题
- app的开发和部署使用的数据库参数不一样。如何有效分离。
- 很多人在使用
git
作为团队合作方式。如何让重要的账号和密码不受版本控制。上述问题,有很多解决方案,但更方便更科学的方式为通过
环境变量
设置账号和密码,使得程序和重要账号完全分离
。在不同的环境下(window,linux,iis,apache,nginx)设置
php环境变量
的方式不一样,但
在php获取环境变量的方式是一样的
这样使得我们的应用程序代码无需任何修改,只需在环境中设置了环境变量即可。
php中通过 $_EVN,或者 getenv() 来获取指定的环境变量值。
现有的方式设置的环境变量,往往是针对所有app都生效的。这意味着如果我有多个项目,每一个项目都是共享这些环境变量,这样的结果为:
- 不方便。
app11
,app12
的数据库名称,我们必须设置两个环境变量,如DBNAMA_APP11
,DBNAMA_APP12
。然后分别获取。- 不安全。在
app11
中仍然可以获取到app12
的环境变量。使用
EpiiServer
这些问题将变得很容易解决。我们的需求是:
1、
app11
需要把数据库信息设置为环境变量 分别为DB_HOST=192.168.1.100 DB_NAME=ceshi DB_USER=username DB_PWD=password2、
app12
需要把数据库信息设置为环境变量 分别为DB_HOST=192.168.1.102 DB_NAME=ceshi2 DB_USER=username2 DB_PWD=password2我们只需在
config.ini
的[php_env]
模块设置各自的环境变量[php_env] app11[DB_HOST] = 192.168.1.100 app11[DB_NAME] = ceshi app11[DB_USER] = username app11[DB_PWD] = password app12[DB_HOST] = 192.168.1.102 app12[DB_NAME] = ceshi2 app12[DB_USER] = username2 app12[DB_PWD] = password2在程序中使用 $_ENV['DB_HOST'] 即可获取到相应的 DB_HOST
阿里云和微软云等云平台都有设置环境变量的方法。
如何安装
EpiiServer
侧重的是nginx
php
安装后的灵活配置,而非nginx
php
本身的安装。所以在安装
EpiiServer
之前你需要(必须)1、根据自己的系统下载
nginx
,并且明白安装路径及配置文件路径。2、根据自己的需要下载安装
php
,可下载多个版本。3、window 用户须知道安装的各个php版本路径及
php-cgi
的位置,并且每个版本可以成功运行/path/to/php-cgi.exe -b 127.0.0.1:90004、linux,unix 用户须知道安装的各个php版本路径及
php-fpm
的位置和php-fpm.conf
的路径,分别修改php-fpm.conf
文件 ,并成功运行/path/to/php-fpm
EpiiServer
仓库首页gitee仓库
https://gitee.com/epii/epii-servergithub仓库首页
https://github.com/epaii/epii-server下载或clone到本地后,
1、请复制
config.ini.example
为config.ini
,按照配置文件的提示配置自己的项目。2、请运行项目下
install/install.php
文件进行安装path/to/php ./install/install.php安装只需一次,安装后,会自动生成启动,停止运行文件。
window自动生成的文件为:
- start.bat 启动服务
- stop.bat 停止服务
linux unix 自动生成的文件为:
- start.sh 启动服务
- stop.sh 停止服务
配置文件修改后记得 先关闭服务,再启动。
配置文件
[server] ;本机ip地址和端口 this_ip = 192.169.0.169 this_port = 6688 ;本机域名前缀 domain_this = this.jt ;web项目路径,此路径下每一个文件夹会当做一个应用,如果某一个项目不想放在此目录下,可以再app_dir中单独设置 ;www_dir 为网站根目录,默认为web目录,如果设置请设置绝对路径 ;www_dir = /Users/mrren/Documents/phpworkspace/EpiiWeb/web ;default_app = web1 ;本程序以php为脚本安装和启动服务,指定php命令地址,一般为php.exe的文件路径 php_cmd=php [nginx] ;nginx 文件地址; linux or unix 请指定nginx文件地址即可 cmd = /usr/local/Cellar/nginx/1.15.0/bin/nginx nginx_config_file = /usr/local/etc/nginx/nginx.conf [php] ;window下 php-cgi.exe 的路径,linux 下 php-fpm 路径 php_cgi[0] = /usr/local/Cellar/php\@7.1/7.1.19/sbin/php-fpm ;如果使用php-cgi,设置的端口将被启用。如果是php-fpm 请确保此端口和php-fpm.conf中一致(php-fpm.conf 需手动修改,多个php版本一定要设置不同的端口) port[0] = 9000 php_cgi[1] = php-fpm port[1] = 9001 [app_dir] ;如果你的应用不在www_dir下,请指定项目路径(必须为绝对路径) ;app1 = /Users/mrren/Documents/phpworkspace/jianguan ;epiiadmin=/Users/mrren/Documents/phpworkspace/EpiiWeb/web/epiiadmin/public [app_php_select] ;默认所有的php版本自动为php_cgi[0] 的版本,如果有特殊需求请在这里设置 epiiadmin = 1 [php_env] epiiadmin[db_hostname] = zhengxin大部分参数在上述教程已经涉及到。重点介绍
[server]
下的php_cmd
[server] php_cmd=php
EpiiServer
本身是基于php的(并非你的网站),如果你的php在环境变量PATH下,则直接为默认配置即可。 如果不是。linux,unix 用户 为path/to/php
,window用户为paht/to/php.exe
最后希望
EpiiServer
能给您带来帮助。让您更多的时间去研发产品,而非环境搭建。相关教程:PHP视频教程
以上がEpiiServer シンプルな php+nginx 環境カスタマイズ ソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい
