EpiiServer シンプルな php+nginx 環境カスタマイズ ソリューション
この記事では、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## にコピーするだけです。 #) <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>[server]
domain_this=you.domain.com</pre><div class="contentsignin">ログイン後にコピー</div></div># を設定します
[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]
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>[app_dir]
app6=c:\workplace\app6
app7=/path/to/app7</pre><div class="contentsignin">ログイン後にコピー</div></div>
ディレクトリを絶対パスに設定し、中国語を含まないようにします。
この場合、ドメイン名
、たとえば、app7.loc.com
は、設定したパスを指します。サブディレクトリのドメイン名への変換もサポートしています。
app6 のエントリ ファイルが
c:\workplace\app6\public\index.php の場合、# にアクセスします。 ##<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>http://public.app6.loc.com</pre><div class="contentsignin">ログイン後にコピー</div></div>
実際には、上記の設定は非科学的です。app6 のディレクトリを直接
public
[app_dir] app6=c:\workplace\app6\public
に指定すると、ドメイン名が簡素化されます。
app6.loc.com# へ ##ヒント<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>
質問 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=2ログイン後にコピーapp8无需设置,因为所有的应用默认都使用第一个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=passwordログイン後にコピー2、
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:9000ログイン後にコピー4、linux,unix 用户须知道安装的各个php版本路径及
php-fpm
的位置和php-fpm.conf
的路径,分别修改php-fpm.conf
文件 ,并成功运行/path/to/php-fpmログイン後にコピー
EpiiServer
仓库首页gitee仓库
https://gitee.com/epii/epii-serverログイン後にコピーgithub仓库首页
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

WordPressサイトファイルアクセスが制限されています:最近.txtファイルにアクセスできない理由のトラブルシューティング。一部のユーザーは、ミニプログラムのビジネスドメイン名を構成する際に問題に遭遇しました:�...

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

同じシステムで複数のPHPバージョンを同時に実行することは、特に異なるプロジェクトがPHPの異なるバージョンに依存する場合、一般的な要件です。同じようになる方法...

H5プロジェクトを実行するには、次の手順が必要です。Webサーバー、node.js、開発ツールなどの必要なツールのインストール。開発環境の構築、プロジェクトフォルダーの作成、プロジェクトの初期化、コードの書き込み。開発サーバーを起動し、コマンドラインを使用してコマンドを実行します。ブラウザでプロジェクトをプレビューし、開発サーバーURLを入力します。プロジェクトの公開、コードの最適化、プロジェクトの展開、Webサーバーの構成のセットアップ。

多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する
