加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

EpiiServer便捷的php+nginx环境定制化方案

发布时间:2022-06-19 15:08:18 所属栏目:PHP教程 来源:互联网
导读:本篇文章将和大家一起认识一个软件名叫EpiiServer,他可以更快捷更方便的为php+nginx多应用部署环境,非常适合开发者使用,感兴趣的朋友可以了解一下。 EpiiServer是什么 更快捷更方便的php+nginx多应用部署环境。 github仓库首页 https://github.com/epai
  本篇文章将和大家一起认识一个软件名叫EpiiServer,他可以更快捷更方便的为php+nginx多应用部署环境,非常适合开发者使用,感兴趣的朋友可以了解一下。
 
  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:workplaceapp6",只需在config.ini的[app_dir]下设置
 
  [app_dir]
  
  app6=c:workplaceapp6
  
  app7=/path/to/app7
  目录为绝对路径,不包含中文。
 
  这种情况下域名 app6.loc.com ,app7.loc.com 将指向你设置的路径。同样支持子目录转化为域名 ,如 app6 的入口文件为 c:workplaceapp6publicindex.php,则访问
 
  http://public.app6.loc.com
 
  其实上述设置是不科学的,直接把app6的目录指向public更好
 
  [app_dir]
  
  app6=c:workplaceapp6public
  这样你的域名将简化为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:pathtophp5.6php-cgi.exe
  
  port[0] = 9000
  
  php_cgi[1] = c:pathtophp7.1php-cgi.exe
  
  port[1] = 9001
  
  php_cgi[2] = c:pathtophp7.3php-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 停止服务
 
  配置文件修改后记得 先关闭服务,再启动。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读