EpiiServer einfache PHP+Nginx-Umgebungsanpassungslösung
Dieser Artikel stellt Ihnen eine Software namens EpiiServer vor. Sie kann Umgebungen für mehrere PHP+Nginx-Anwendungen schneller und bequemer bereitstellen. Interessierte Freunde können sich darüber informieren.
Was ist EpiiServer?
Eine schnellere und bequemere PHP+Nginx-Umgebung für die Bereitstellung mehrerer Anwendungen.
Github Warehouse-Homepage
https://github.com/epaii/epii-server
Gitee Warehouse
https://gitee.com/ epii/epii-server
Funktionen:
- Schnelle Bereitstellung mehrerer Anwendungen, automatische Generierung von Domänennamen.
- Jede Anwendung kann ihre eigene PHP-Version festlegen.
- Jede Anwendung kann ihre eigenen Umgebungsvariablen festlegen.
- Domänenname und Verzeichnis werden automatisch gebunden und unterstützen die automatische Bindung von Domänennamen auf 5 Ebenen an das Verzeichnis.
- Im Vergleich zu integrierten Umgebungen wie Wamp liegt der Schwerpunkt mehr auf der benutzerdefinierten Konfiguration als auf der Installation der Umgebung.
Welches Problem wurde gelöst?
Lassen Sie uns nicht darüber sprechen, wie Sie es installieren. Lassen Sie uns zunächst prüfen, ob Sie diese Anwendung benötigen.
1. Mehrere lokale Websites, Domainnamen werden automatisch generiert.
Vielleicht werden Sie sagen, dass es nicht ausreicht, http://localhost/app1
und http://localhost/app2
direkt zu verwenden, um auf die beiden Websites zuzugreifen.
Ja, tatsächlich. Was aber, wenn jeder seinen eigenen Domainnamen festlegt? Beispiel: http://app1.loc.com
und http://app2.loc.com
: Wenn Sie eine Idee haben, kann Ihnen diese Software leicht bei der Umsetzung helfen.
Das folgende Verzeichnis
web -- App集合目录 app3 index.php --入口文件 app4 application public index.php --入口文件 app5 dir1 dir2 dir3 index.php --入口文件
Der Domainname lautet automatisch
http://app3.loc.com http://public.app4.loc.com http://dir3.dir2.app5.loc.com
Was Sie tun müssen (das Einzige, was Sie tun müssen), ist einfach
app3.loc.com
hinzuzufügen undpublic.app4.loc.com
,dir3.dir2.app5.loc.com
zeigen auf Ihre IP
Das Verzeichnis web
unter dem Stammverzeichnis von EpiiServer ist das Projektsammlungsverzeichnis der App, sofern Sie Ihre App darin ablegen Verzeichnis, es wird automatisch der obige Domainname generiert.
Frage 1
Wie lautet der Domainname loc.com
oben?
Es ist der Stammdomänenname aller Ihrer app
s. Jede App wandelt das Unterpaar in einen Domänennamen {appname}.loc.com
um und der Verzeichniszugriff erfolgt automatisch dir3.dir2.dir1.{appname}.loc.com
.
Wenn Sie Ihren eigenen Root-Domainnamen festlegen möchten, stellen Sie einfach config.ini
[server] domain_this=you.domain.com
config.ini.example
config.ini
unter [server]
ein (bitte kopieren Sie nach - nach dem Herunterladen). Wenn Sie a Wenn Sie einen DNS-Server verwenden, um eine Pan-Auflösung von Domänennamen zu implementieren, müssen Sie in der
- -Datei keinen Domänennamen festlegen, der darauf verweist.
hosts
Jedes - ist ein mehrstufiger Domänenname, der basierend auf
app
generiert wird. Domänennamen in anderen Formaten werden nicht unterstützt.根域名
- Wenn eine App einen anderen Domänennamen wie
hat, können Sie cname beim DNS-Dienstanbieter verwenden, um den lokalen Domänennamen der App aufzulösen.
Frage 2www.web.com
im Stammverzeichnis von kopiert werden? EpiiServer? Reicht das? Natürlich nicht. web
[server] www_dir=/path/to/your/www
config.ini
[server]
www_dir als absoluten Pfad unter von ein. Achten Sie darauf, kein ChinesischFrage 3< einzuschließen 🎜 >
Ich habe mein App-Sammlungsverzeichnis gemäß der oben genannten Methode eingerichtet, aber es sind noch einige Apps (oder viele) in anderen Verzeichnissen verteilt. Muss ich sie in das App-Sammlungsverzeichnis kopieren? Natürlich nicht.
Wenn sich mein
beispielsweise in einem anderen Verzeichnis befindet, muss ich nur das Verzeichnis app6
[app_dir] app6=c:\workplace\app6 app7=/path/to/app7
"c:workplaceapp6"
config.ini
als absoluten Pfad unter [app_dir]
festlegen . Enthält Chinesisch. In diesem Fall zeigt der Domainname,
auf den von Ihnen festgelegten Pfad. Es unterstützt auch die Konvertierung von Unterverzeichnissen in Domänennamen. Wenn die Eintragsdatei von app6.loc.com
beispielsweise app7.loc.com
http://public.app6.loc.com
lautet, sind die oben genannten Einstellungen tatsächlich unwissenschaftlich Verzeichnis von app6 zu
app6
. Gut c:workplaceapp6publicindex.php
[app_dir] app6=c:\workplace\app6\public
public
在上面web下app5中,为了访问入口文件 我们需要 访问 `http://dir3.dir2.app5.loc.com` 这个域名才可以,如果想简化为 `http://app5.loc.com`, 只需把 dir3的绝对路径设置为`app5`的路径即可。app5=/path/to/app5/dir2/dir3
app6.loc.com
Frage 4vereinfacht Was passiert, wenn Sie direkt auf die IP zugreifen?
Der direkte Zugriff auf IP ist derselbe wie bei anderen Vererbungsumgebungen.
http://127.0.0.1/app1 http://127.0.0.1/app2/dir1/dir2/index.php
Kann ich beim Zugriff auf die IP-Adresse standardmäßig ein
angeben? Um beispielsweise direkt über die IP-Adresse aufzuzugreifen, muss
nur[server] default_app=app1
app
in app1
festlegen. Nach dem Festlegen von wird beim Zugriff auf
config.ini
direkt darauf verwiesen [server]
. http://127.0.0.1/
Die Rolle des IP-Zugriffs besteht darin, dass andere auf Ihren Computer zugreifen können. Natürlich können auch andere app1.loc.com in ihrer app1
-Datei an Ihre IP binden oder direkt auf den Domainnamen zugreifen
Ich arbeite seit vielen Jahren als PHP-Mitarbeiter und arbeite an PHP-Technologie-Updates und PHP-Versions-Updates. Für Ihre Projekte sind jeweils unterschiedliche Mindestversionen von PHP festgelegt.2. Mehrere PHP-Versionen existieren nebeneinander.
hosts
例如
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视频教程
Das obige ist der detaillierte Inhalt vonEpiiServer einfache PHP+Nginx-Umgebungsanpassungslösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie fixiere ich Nginx 403 Verbotener Fehler? Überprüfen Sie die Datei- oder Verzeichnisberechtigungen; 2.Htaccess -Datei prüfen; 3. Überprüfen Sie die Konfigurationsdatei der Nginx; 4. Starten Sie Nginx neu. Weitere mögliche Ursachen sind Firewall -Regeln, Selinux -Einstellungen oder Anwendungsprobleme.

Schritte zum Starten von Nginx unter Linux: Überprüfen Sie, ob Nginx installiert ist. Verwenden Sie SystemCTL Start Nginx, um den Nginx -Dienst zu starten. Verwenden Sie SystemCTL aktivieren NGINX, um das automatische Start von NGINX beim Systemstart zu aktivieren. Verwenden Sie den SystemCTL -Status NGINX, um zu überprüfen, ob das Startup erfolgreich ist. Besuchen Sie http: // localhost in einem Webbrowser, um die Standard -Begrüßungsseite anzuzeigen.

Der Server verfügt nicht über die Berechtigung, auf die angeforderte Ressource zuzugreifen, was zu einem NGINX 403 -Fehler führt. Zu den Lösungen gehören: Überprüfung der Dateiberechtigungen. Überprüfen Sie die Konfiguration .htaccess. Überprüfen Sie die Nginx -Konfiguration. Konfigurieren Sie Selinux -Berechtigungen. Überprüfen Sie die Firewall -Regeln. Fehlerbehebung bei anderen Ursachen wie Browserproblemen, Serverausfällen oder anderen möglichen Fehlern.

So bestätigen Sie, ob Nginx gestartet wird: 1. Verwenden Sie die Befehlszeile: SystemCTL Status Nginx (Linux/Unix), Netstat -ano | FindStr 80 (Windows); 2. Überprüfen Sie, ob Port 80 geöffnet ist; 3. Überprüfen Sie die Nginx -Startmeldung im Systemprotokoll. 4. Verwenden Sie Tools von Drittanbietern wie Nagios, Zabbix und Icinga.

Wie konfiguriere ich Nginx in Windows? Installieren Sie NGINX und erstellen Sie eine virtuelle Hostkonfiguration. Ändern Sie die Hauptkonfigurationsdatei und geben Sie die Konfiguration der virtuellen Host ein. Starten oder laden Nginx neu. Testen Sie die Konfiguration und sehen Sie sich die Website an. Aktivieren Sie selektiv SSL und konfigurieren Sie SSL -Zertifikate. Stellen Sie die Firewall selektiv fest, damit Port 80 und 443 Verkehr.

Es gibt zwei Möglichkeiten, das Problem mit dem Cross-Domain-Problem mit dem NGINX-Problem zu lösen: Änderungen der Cross-Domänen-Antwort-Header: Fügen Sie Anweisungen hinzu, um Cross-Domain-Anforderungen zu ermöglichen, zulässigen Methoden und Header anzugeben und die Cache-Zeit festzulegen. Verwenden Sie das CORS-Modul: Aktivieren Sie Module und konfigurieren Sie die CORS-Regeln, um Cross-Domain-Anforderungen, Methoden, Header und Cache-Zeit zu ermöglichen.

Antwort auf die Frage: 304 Nicht geänderter Fehler gibt an, dass der Browser die neueste Ressourcenversion der Client -Anfrage zwischengespeichert hat. Lösung: 1. Löschen Sie den Browser -Cache; 2. Deaktivieren Sie den Browser -Cache; 3. Konfigurieren Sie Nginx, um den Client -Cache zu ermöglichen. 4. Überprüfen Sie die Dateiberechtigungen; 5. Datei Hash prüfen; 6. Deaktivieren Sie CDN oder Reverse Proxy -Cache; 7. Starten Sie Nginx neu.

Verwenden Sie unter Linux den folgenden Befehl, um zu überprüfen, ob Nginx gestartet wird: SystemCTL -Status Nginx Richter basierend auf der Befehlsausgabe: Wenn "aktiv: aktiv (lief) angezeigt wird, wird Nginx gestartet. Wenn "Active: Inactive (Dead)" angezeigt wird, wird Nginx gestoppt.
