EpiiServer是什么
更快捷更方便的php+nginx多应用部署环境。
github仓库首页
https://github.com/epaii/epii-server
gitee仓库
https://gitee.com/epii/epii-server
特性:
- 多应用快速部署,域名自动生成。
- 每个应用可设置自己php的版本。
- 每个应用可设置自己的环境变量。
- 域名与目录自动绑定,支持5级域名自动绑定目录。
- 与wamp等集成环境相比,更加侧重定制化配置,而非环境的安装。
解决了什么问题?
先不说怎么安装,先看看你是否需要本应用。
1、本地多个网站,域名自动生成。
也许你会说直接用 http://localhost/app1
和 http://localhost/app2
来访问两个网站不就行了。
确实可以。但如果各自设定自己的域名呢?比如 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
你需要做的事情(唯一要做的)仅仅是在host文件中让
app3.loc.com
和public.app4.loc.com
,dir3.dir2.app5.loc.com
指向你的ip
EpiiServer根目录下的web
目录为app的项目集合目录,只要你把你的app放进这个目录,自动会生成上述的域名。
疑问1
上面中域名loc.com
是什么?
他是你所有app
的根域名。任何一个app将子对转化为域名 {appname}.loc.com
,目录访问自动为 dir3.dir2.dir1.{appname}.loc.com
。
如果想设置自己的根域名只需在config.ini
(下载后请复制config.ini.example
为 config.ini
)在[server]
下设置
[server]
domain_this=you.domain.com
- 如果你用dns服务器来实现域名的泛解析那么您将不需要在
hosts
文件中设置域名指向。 - 任何
app
均以根域名
为基础产生的多级域名。其它格式的域名不支持。 如果某个app有另一个域名如
www.web.com
那么您可以在dns服务商使用cname的方式解析到本app的本地域名。疑问2
也许你会问,我的项目都在另个目录下面,是不是必须复制到EpiiServer根目录下的web
目录下才行呢?当然不是。
只需在config.ini
的[server]
下设置
[server]
www_dir=/path/to/your/www
www_dir为绝对路径,一定不要包含中文
疑问3
按照上述方法设置了我的app集合目录,但仍有个别app(或很多)分布在其它目录,是不是需要复制到app集合目录下?当然不是。
比如我的 app6
放在了另一个目录 "c:\workplace\app6"
,只需在config.ini
的[app_dir]
下设置
[app_dir]
app6=c:\workplace\app6
app7=/path/to/app7
目录为绝对路径,不包含中文。
这种情况下域名 app6.loc.com
,app7.loc.com
将指向你设置的路径。同样支持子目录转化为域名 ,
如 app6
的入口文件为 c:\workplace\app6\public\index.php
,则访问
http://public.app6.loc.com
其实上述设置是不科学的,直接把app6的目录指向public
更好
[app_dir]
app6=c:\workplace\app6\public
这样你的域名将简化为app6.loc.com
技巧
在上面web下app5中,为了访问入口文件 我们需要 访问
`http://dir3.dir2.app5.loc.com` 这个域名才可以,如果想简化为 `http://app5.loc.com`,
只需把 dir3的绝对路径设置为`app5`的路径即可。app5=/path/to/app5/dir2/dir3
疑问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]
下设置
[server]
default_app=app1
设置完后,当访问 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
支持版本