2

安装和配置PHP开发环境

 1 year ago
source link: https://nakeman.cn/blog/php-development-env-configuration/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Post Meta

安装和配置PHP开发环境

1 本文是《安装和运行“Web应用”》系列的第一篇,旨在通过分析不同复杂种类的“Web应用” 的安装,来掌握 Web应用程序的实质,和解释 如何和为何 安装 配置PHP开发环境 2023-2-5

2 本文创见是提出 ,web应用 (或网站)也是一种应用程序 ,像一般桌面应用一样有一个安装的过程 ,只是web app本身的分布式架构 ,安装非常的复杂

3 其次 分析了 “Web应用 ”的一些形式特征,尝试总结理论

首先,本文标题意为“在本地机器安装配置PHP开发环境”。这个表述对于PHP初学者(或PHP开发者)是友好的,但其实这一种安装和运行“Web应用”的过程。

什么是 “Web应用”

“Web应用” 这个概念越来越流行,但其实它是传统网站概念的新发展。Web应用程序 与桌面应用有很多不同点,最大区别在:

  1. 第一,基于http通信的分布式结构;
  2. 第二,在浏览器上交互使用,有一个URL地址,是一种web GUI应用;
  3. 第三,有一个web server 后端;这个后端一般有动态编程生成应用页面;

对于开发者,“Web应用” 还一个不同,在本地机器上安装和运行 Web应用程序很繁琐。如果你有过在不同机器上开发和测试一个PHP 应用就会有体会。

安装和运行 Web应用程

Web应用需要安装?这里需要解释一下。

这里想突出一点,就是配置环境是用来运行程序的,网站(或web应用)也是一种程序,而「开发」和「运行」应用程序 都是需要 相同的环境条件的

其次,强调PHP+WEB,因为PHP可以用来开发非Web应用(例如桌面应用),开发Web应用的也不是只有PHP。

本文介绍手动安装PHP Web开发和运行环境,最终的效果是可以通过 浏览器(或curl)输入一个网站域名访问一个简单的PHP Web程序。

为什么选择手动安装?提起安装PHP开发环境,很多人应该都知道有工具,例如一些什么面板,XXAMP之类的安装包,各个OS平台都有,非常方便。我本人没有怎么用过,不知道可用性如何,但是我认为,除非你是绝对的小白,否则你是想学Web编程,不应知难而退,依赖这些“傻瓜式”配置工具,了解一些基本底层原理——Web应用程序的逻辑构成——那是你的专业所在。

支撑Web应用程序有很多技术可选,本文实验的是用nginx配置 web server ,和用PHP 动态生成页面的简单Web应用程序。

完整的商业web项目

商业web项目是很复杂的,是工程级项目,会引入种开发工具,框架结构和辅助工具,例如前端会有MVVM框架(例如React),后端MVC框架(例如 Laravel),大型关系数据库(Mysql),PHP依赖管理(Composer)等,为了篇幅和渐进学习规律,本系列文将分别介绍这些不同的开发环境条件,从简单到复杂:

  1. 网站:浏览器前端(一般只用到GET),后端只有web server 后端,没有CGI扩展处理,响应HTML等静态资源
  2. 动态网站:浏览器前端(用到FORM POST方法),后端web server, 后端需要CGI扩展处理 POST数据,响应HTML结果页
  3. Web应用:前端后分离,前端浏览器不限于使用FORM,还会用AJAX发出请求;服务器也不限于响应HTPM资源(URL定位),前后端以 JSON等格式交互数据
  4. 分布式系统(Serverless):前端不限于在本域内 请求数据(或功能),后端也不限只为前端提供响应,也可以向其它域发出请求来集成新的功能,也就是说 后端服务器也可以是一个HTTP前端。微服务兴起2022-07-22

目标和任务

本地开发和运行两个静态的简单“网站”:hello web 和 nakeman。

回应前面,要在一台机器运行这两个程序,我们要:

第一,安装和配置web server,本系列实践选择Nginx;

第二,配置Nginx,为两个程序分配不同的标识——一个应用一个服务名;

开发任务比较简单,两个“程序”都是只有一个页面,一个类似helloworld,一个是个人简介信息;

目标是,分别输入 hello.nginx.devl 和 nakeman.nginx.devl 分别访问这两个“程序”。

Nginx与Web服务

先安装配置 Nginx(/etc/nginx/nginx.conf)。在各大OS平台上安装 Nginx 应该是比较简单的,详细看这里。配置Nginx则需要一些知识和脑力,因为 Nginx 有灵活的模块化配置,并且是多功能的,既可以作http server,也有代理服务功能(正向反向都可)。 https://nginx.org/en/linux_packages.html

[radar@fedora ~]$ nginx -v
nginx version: nginx/1.22.0

安装好nginx后,在开始实操之前,先分析设计几个数据:应用程序名,和程序安装的文件目录(也就是网站root目录)。

虚拟主机与应用程序名

任何应用程序 都应该有一个唯一的标识,对于web应用,这个标识就是网站地址(形式如site.com)。如果我们要在本地开发(或测试)Web应用项目,为所有的web应用实例 都分配一个 Nginx 实例和 域名地址是不实际的,幸好 Nginx(其他http 服务器也可以)支持 虚拟主机。

在技术上, Nginx支持三种虚拟主机模式:多IP,多端口和多服务器名。用IP地址,和端口都对用户不太友好,怎么一个应用程序是一串数字呢?所以 服务器名(或自定义域名)是最佳标识 Web应用程序的方法。 https://petermaxdreyer.com/nginx-virtual-hosts/

Web 应用的安装位置,一般web server软件有一默认位置,不过也可以自定义。这里有一个决策要考虑,就是到底安装在系统目录下(例如/var/www),还是在用户HOME目录里。如果有系统的应用,一般安装在系统目录下,但是考虑到我们是开发机器,数据应该属于开发者自己,也应该安装在用户HOME目录。

其实重点考虑不是数据位置,而是==数据的使用和安全==,就是数据是属于谁的(user or root),被谁使用(user edit , guest read),和怎么用(读,写还是执行) 。

与一般应用不同 ,Web应用使用用户不是开发者本人,甚至不在现场,而且同时有大量并发用户。当我们执行nginx时,是那个执行的系统账户(一般是nginx组的nginx)替代远程用户 在使用我们应用的数据,所以要让Web应用正常运行(远程用户打开我们的网站),nginx用户必须有打开(x)和读取(r) 根目录的权限,至于数据属谁都可以,由于需要本地开发,所以要属于开发者本人帐户的数据。关于系统数据权限管理,看这里(https://ryanstutorials.net/linuxtutorial/permissions.php )。

nginx.conf 主要由几个逻辑配置块(block)组成: http, server, location等,Nginx 是通过 server block 配置虚拟主机的,默认一台主机。其中 listen 配置IP和端口,serever_name配置服务器名。三种虚拟主机模式中,本地开发,我们选择最简单的:单一IP(网卡)和端口,只用「服务器逻辑名」对 请求进行区分。

http {
    server {
	listen 			80;
	serever_name 	hello.nginx.dev;
	# a hello app 
	root			/home/kemin/webproj/hello.nginx.dev
    }

    server {
	listen 			80;
	serever_name 	diary.nginx.dev;
	# a diary app 
	root			/home/kemin/webproj/diary.nginx.dev]()
    }
}

为了支持这种模式,我们还必须配置本地DNS数据(/etc/hosts),这样当我们在浏览输入应用的名字(域名地址),浏览器才能解释到 IP 地址,和将名字附在请求报文的头部,Nginx就是通过这个头部数据对不同的虚拟主机进行辨别的。

127.0.0.1 hello.nginx.dev diary.nginx.dev


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK