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. 여러 로컬 웹사이트, 도메인 이름이 자동으로 생성됩니다.
어쩌면 http://localhost/app1
및 http://localhost/app2
를 사용하여 직접 액세스하라고 할 수도 있습니다. 두 개의 A 웹 사이트로는 충분하지 않습니다.
그렇습니다. 하지만 각각이 자신의 도메인 이름을 설정하면 어떻게 될까요? 예를 들어 http://app1.loc.com
및 http://app2.loc.com
에 대한 아이디어가 있다면 이 소프트웨어를 통해 쉽게 실현할 수 있습니다. 그것. 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:\workplace\app6 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:\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
[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
도메인 이름은 자동으로
[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
해야 할 일은 호스트 파일에 추가하기만 하면 됩니다.app3.loc.com
및public.app4.loc.com
,dir3.dir2.app5.loc.com< /code>는 귀하의 IP <p></p><h4 id="epiiserver 루트 디렉터리 아래의 웹 디렉터리는 앱의 프로젝트 컬렉션 디렉터리입니다. 앱을 이 디렉터리에 넣는 한, 위의 도메인 이름은 자동으로 생성됩니다.">< EpiiServer 루트 디렉터리 아래에 code>web
디렉터리는 앱의 프로젝트 컬렉션 디렉터리입니다. 앱을 이 디렉터리에 넣으면 위의 도메인 이름이 자동으로 생성됩니다. 자동으로 생성됩니다. #🎜🎜#질문 1#🎜🎜##🎜🎜#위의 도메인 이름
loc.com
이 무엇인가요?
그는 모든앱
의 루트 도메인 이름입니다. 모든 앱은 하위 쌍을 도메인 이름{appname}.loc.com
으로 변환하고 디렉터리 액세스는 자동으로dir3.dir2.dir1.{appname}.loc.com</입니다. 코드>. #🎜🎜##🎜🎜#자신만의 루트 도메인 이름을 설정하려면 <code>config.ini.example
을.ini 다운로드 후 config
)에 복사하세요. code>[서버]#🎜🎜#[app_php_select] app9=1 app0=2로그인 후 복사로그인 후 복사#🎜🎜#DNS 서버를 사용하여 도메인 이름의 팬 해상도를 구현하는 경우 < 도메인 이름 포인팅 설정에서 설정할 필요가 없습니다. 코드>호스트 파일에 있습니다. #🎜🎜##🎜🎜# 모든
#🎜🎜#아마도 내 프로젝트가 모두 다른 디렉토리에 있는데 복사해야 하는지 물어보실 것입니다. ? EpiiServer 루트 디렉터리의앱
은루트 도메인 이름
을 기반으로 생성된 다중 레벨 도메인 이름입니다. 다른 형식의 도메인 이름은 지원되지 않습니다. #🎜🎜##🎜🎜##🎜🎜#앱에www.web.com
과 같은 다른 도메인 이름이 있는 경우 DNS 서비스 제공업체에서 cname을 사용하여 로컬 주소를 확인할 수 있습니다. 앱 도메인 이름의 #🎜🎜#질문 2#🎜🎜##🎜🎜#
web
디렉터리로 이동해 보시는 건 어떨까요? 물론 그렇지 않습니다. #🎜🎜##🎜🎜# #🎜🎜#DB_HOST=192.168.1.100 DB_NAME=ceshi DB_USER=username DB_PWD=password로그인 후 복사로그인 후 복사#🎜🎜#www_dir을config.ini
의[server]
아래 절대 경로로 설정하면 됩니다. must not be Chinese #🎜🎜##🎜🎜#질문 3#🎜🎜##🎜🎜# 위 방법으로 앱 모음 디렉토리를 설정했는데, 여전히 개별 앱이 있네요 (또는 다수)이 다른 디렉터리에 배포됩니다. 앱 컬렉션 디렉터리에 복사해야 합니까? 물론 그렇지 않습니다. #🎜🎜##🎜🎜#예를 들어 내
app6
이 다른 디렉터리"c:workplaceapp6"
에 있는 경우config에서만 설정하면 됩니다. .ini</code > <code>[app_dir]
아래 #🎜🎜#DB_HOST=192.168.1.102 DB_NAME=ceshi2 DB_USER=username2 DB_PWD=password2로그인 후 복사로그인 후 복사#🎜🎜# 디렉토리를 절대 경로로 설정하고 중국어를 포함하지 않습니다. #🎜🎜##🎜🎜##🎜🎜#이 경우 도메인 이름app6.loc.com
및app7.loc.com
은 세트. 또한 하위 디렉터리를 도메인 이름으로 변환하는 기능도 지원합니다.
예를 들어app6
의 항목 파일이c:workplaceapp6publicindex.php
인 경우 #🎜🎜#를 방문하세요. #🎜🎜#사실 위 설정은 app6의 디렉토리를[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로그인 후 복사로그인 후 복사public
으로 직접 지정하는 것이 더 좋습니다.#🎜🎜##🎜🎜#이렇게 하면 도메인 이름이 <로 단순화됩니다. code>app6.loc.com#🎜🎜#/path/to/php-cgi.exe -b 127.0.0.1:9000로그인 후 복사로그인 후 복사팁#🎜🎜#
/path/to/php-fpm로그인 후 복사로그인 후 복사질문 4#🎜🎜##🎜🎜#어떻게 되나요? IP에 직접 접속한다면? #🎜🎜##🎜🎜#IP에 대한 직접 접근은 다른 상속 환경과 동일합니다. #🎜🎜#
#🎜🎜#IP 주소 접속 시 기본으로https://gitee.com/epii/epii-server로그인 후 복사로그인 후 복사앱
을 지정할 수 있나요? 예를 들어, IP에 접근하여app1
에 직접 접근하려면
config의 <code>[server]
아래에 #🎜🎜##을 설정하기만 하면 됩니다. ini 🎜🎜#설정 후https://github.com/epaii/epii-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都生效的。这意味着如果我有多个项目,每一个项目都是共享这些环境变量,这样的结果为:
- 不方便。
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Nginx 403 금지 된 오류를 수정하는 방법은 무엇입니까? 파일 또는 디렉토리 권한을 확인합니다. 2. 확인 파일을 확인하십시오. 3. nginx 구성 파일 확인; 4. nginx를 다시 시작하십시오. 다른 가능한 원인으로는 방화벽 규칙, Selinux 설정 또는 응용 프로그램 문제가 있습니다.

Linux에서 Nginx를 시작하는 단계 : Nginx가 설치되어 있는지 확인하십시오. systemctl start nginx를 사용하여 nginx 서비스를 시작하십시오. SystemCTL을 사용하여 NGINX를 사용하여 시스템 시작시 NGINX의 자동 시작을 활성화하십시오. SystemCTL 상태 nginx를 사용하여 시작이 성공했는지 확인하십시오. 기본 환영 페이지를 보려면 웹 브라우저의 http : // localhost를 방문하십시오.

서버는 요청 된 리소스에 액세스 할 수있는 권한이 없으므로 Nginx 403 오류가 발생합니다. 솔루션에는 다음이 포함됩니다. 파일 권한 확인 권한을 확인하십시오. .htaccess 구성을 확인하십시오. nginx 구성을 확인하십시오. Selinux 권한을 구성하십시오. 방화벽 규칙을 확인하십시오. 브라우저 문제, 서버 장애 또는 기타 가능한 오류와 같은 다른 원인을 해결하십시오.

nginx가 시작되었는지 확인하는 방법 : 1. 명령 줄을 사용하십시오 : SystemCTL 상태 nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. 포트 80이 열려 있는지 확인하십시오. 3. 시스템 로그에서 nginx 시작 메시지를 확인하십시오. 4. Nagios, Zabbix 및 Icinga와 같은 타사 도구를 사용하십시오.

Windows에서 Nginx를 구성하는 방법은 무엇입니까? nginx를 설치하고 가상 호스트 구성을 만듭니다. 기본 구성 파일을 수정하고 가상 호스트 구성을 포함하십시오. 시작 또는 새로 고침 Nginx. 구성을 테스트하고 웹 사이트를보십시오. SSL을 선택적으로 활성화하고 SSL 인증서를 구성하십시오. 포트 80 및 443 트래픽을 허용하도록 방화벽을 선택적으로 설정하십시오.

Nginx 크로스 도메인 문제를 해결하는 두 가지 방법이 있습니다. 크로스 도메인 응답 헤더 수정 : 교차 도메인 요청을 허용하고 허용 된 메소드 및 헤더를 지정하고 캐시 시간을 설정하는 지시문을 추가하십시오. CORS 모듈 사용 : 모듈을 활성화하고 CORS 규칙을 구성하여 크로스 도메인 요청, 메소드, 헤더 및 캐시 시간을 허용합니다.

질문에 대한 답변 : 304 수정되지 않은 오류는 브라우저가 클라이언트 요청의 최신 리소스 버전을 캐시했음을 나타냅니다. 솔루션 : 1. 브라우저 캐시를 지우십시오. 2. 브라우저 캐시를 비활성화합니다. 3. 클라이언트 캐시를 허용하도록 nginx를 구성합니다. 4. 파일 권한을 확인하십시오. 5. 파일 해시를 확인하십시오. 6. CDN 또는 리버스 프록시 캐시를 비활성화합니다. 7. nginx를 다시 시작하십시오.

Linux에서는 다음 명령을 사용하여 nginx가 시작되었는지 확인하십시오. SystemCTL 상태 Nginx 판사 명령 출력에 따라 : "active : running"이 표시되면 Nginx가 시작됩니다. "Active : 비활성 (죽음)"이 표시되면 Nginx가 중지됩니다.
