EpiiServer シンプルな php+nginx 環境カスタマイズ ソリューション

little bottle
リリース: 2023-04-06 11:50:01
転載
1976 人が閲覧しました

この記事では、EpiiServer というソフトウェアを紹介します。これは、php nginx の複数のアプリケーションの環境をより速く、より便利にデプロイできます。開発者に非常に適しています。興味のある友人は、それについて学ぶことができます。

EpiiServer とは

より高速で便利な php nginx マルチアプリケーション展開環境。

github ウェアハウスのホームページ

https://github.com/epaii/epii-server

gitee ウェアハウス

https://gitee.com/ epii/epii-server

機能:

  1. 複数のアプリケーションの迅速な展開、ドメイン名の自動生成。
  2. 各アプリケーションは独自のバージョンの php を設定できます。
  3. 各アプリケーションは独自の環境変数を設定できます。
  4. ドメイン名とディレクトリは自動的にバインドされ、5 レベルのドメイン名はディレクトリに自動的にバインドされるようにサポートされています。
  5. wamp などの統合環境と比較すると、環境のインストールよりもカスタマイズされた構成に重点が置かれています。

どのような問題が解決されましたか?

インストール方法については話さないで、まずこのアプリケーションが必要かどうかを確認しましょう。

1. 複数のローカル Web サイト、ドメイン名が自動的に生成されます。


おそらく、http://localhost/app1http://localhost/app2 を使用して 2 つの Web サイトにアクセスできると言うでしょう。 . .
はい、確かに。しかし、それぞれが独自のドメイン名を設定したらどうなるでしょうか?たとえば、http://app1.loc.comhttp://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
ログイン後にコピー

あなたがしなければならないこと(やるべき唯一のこと)は、をさせることだけです。ホストファイル .loc.com および public.app4.loc.com の app3、dir3.dir2.app5.loc.com は、ip

# を指します。
## EpiiServer のルートディレクトリ配下の

web ディレクトリがアプリのプロジェクトコレクションディレクトリとなり、このディレクトリにアプリを置くだけで上記のドメイン名が自動生成されます。

質問 1

上記のドメイン名

loc.com は何ですか? 彼はすべての
app のルート ドメイン名です。どのアプリもサブペアをドメイン名 {appname}.loc.com に変換し、ディレクトリ アクセスは自動的に dir3.dir2.dir1.{appname}.loc.com になります。 。

独自のルート ドメイン名を設定したい場合は、ダウンロード後に

config.ini.exampleconfig.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 の? ## ディレクトリ内のみ?もちろん違います。

config.ini

[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> ディレクトリを絶対パスに設定し、中国語を含まないようにします。 この場合、ドメイン名

app6.loc.com

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="php">在上面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

ファイルで app1.loc.com をあなたの IP にバインドしたり、ドメイン名に直接アクセスしたりすることもできます。

2. 複数の PHP バージョンが共存できます。

私は長年 PHP ワーカーとして働いており、PHP テクノロジーの更新と PHP バージョンの更新に直面しています。プロジェクトにはそれぞれ異なる最小バージョンの 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都生效的。这意味着如果我有多个项目,每一个项目都是共享这些环境变量,这样的结果为:

  • 不方便。app11app12 的数据库名称,我们必须设置两个环境变量,如 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.exampleconfig.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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート