0

0

EpiiServer 简易的php+nginx环境定制化方案

little bottle

little bottle

发布时间:2019-04-26 14:40:29

|

2186人浏览过

|

来源于博客园

转载

本篇文章将和大家一起认识一个软件名叫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等集成环境相比,更加侧重定制化配置,而非环境的安装。

解决了什么问题?

先不说怎么安装,先看看你是否需要本应用。

立即学习PHP免费学习笔记(深入)”;

1、本地多个网站,域名自动生成。


也许你会说直接用 http://localhost/app1http://localhost/app2 来访问两个网站不就行了。
确实可以。但如果各自设定自己的域名呢?比如 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
你需要做的事情(唯一要做的)仅仅是在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.exampleconfig.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]的设置。

为了实现

免费语音克隆
免费语音克隆

这是一个提供免费语音克隆服务的平台,用户只需上传或录制一段 5 秒以上的清晰语音样本,平台即可生成与用户声音高度一致的 AI 语音克隆。

下载
  • 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视频教程

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

作者最新文章

jq是指什么?

2019-05-31 16:04

vue是做什么的

2019-05-31 16:58

mysql能干什么

2019-05-31 17:15

怎么用cmd进入mysql

2019-05-31 17:24

mysql怎么输入

2019-05-31 17:41

mysql免费版好用么

2019-05-31 17:53

mysql慢查询是什么

2019-05-31 18:00

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

246

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

522

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

610

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

693

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3618

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

54

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

71

2026.01.13

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.4万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号