百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

使用Nginx部署Thinkphp运行环境_nginx+php

off999 2025-02-17 13:28 38 浏览 0 评论

在如今这个时代,互联网可谓是大行其道,由互联网带动的各行各业蓬勃发展,也正是由于及时抓住的互联网带来的发展机遇,成就了一大批科技巨头,他们利用互联网技术推出了一大批科技产品,这些科技产品在给人们带来方便、快捷的生活的同时,也在慢慢改变着世界。

在这科技大繁荣的背景之下,有着无数的技术在提供支持,更有众多的科技人才在不断发展和完善技术;在IT这个大圈儿中,有着各式各样的从业者,他们在用自己的实力在不断推进各种技术,使之不断完善,也正因为如此,他们活跃在各个技术社区、论坛不断讨论着遇到的坑、争论着哪个语言才是最好的开发语言。

所以便有了这样的梗,“如果你想引发一场大型争论,那就去Java 社区讨论 PHP是世界上最好的语言”。引发这个梗不是别人,正是php语言2001年的官方文档:

PHP is the best language for web programming, but what about other languages?

Because PHP is the best language ever, ever. It's fast, very powerful, and free.

所以,跟我绝对没关系,说真的。


今天要分享的内容也和“世界最好的语言 PHP”有关:是关于thinphp的,

提到thinkphp这个词,很多从事开发的小伙伴都不会陌生,特别php语言领域的开发者们;这是一款国人开发的php集成开发环境,目前在中国的php语言领域有着不小的影响力,我自己也有不少的接触,经过一段时间的使用下来,感觉还不错。如果有感兴趣的的同好们,可以去官网下载来尝试一番。

类似这样的集成开发环境还有也有很多优秀的案例,比如:Laravel 、Yii、CodeIgniter等,都是值得一试的。


事情的缘起

那么,我作为一个Java 程序员,为什么会来分享PHP的内容呢?原因其实很简单,公司需要,这个理由足矣。项目也不是很大,功能也比较简单,所以前期的开发、测试都比较顺利;但当我把项目开发完成并部署完毕后,我意识到了问题,由于开发和部署都是使用的成熟的php集成环境,所以我对于PHP 的整个运行过程并不了解,总有一种飘在空中的感觉;所以,我决定,抛开集成环境,独自手动部署一个thinkphp的运行环境。


前期准备

Web Server 和 Web Application

web开发中,会经常提到web serverweb appliction这两个词,很多时候都容易因为定义不当产生歧义,下面就来简单做个介绍:

  • Web Server :即web服务器,通常指的是Apache、Nginx、IIS、Lighttpd、Tomcat、Wildfly等软件;
  • Web Appliction :即web应用程序,通常指的是使用编程语言开发的项目程序;

项目(web application)开发完成后,需要经过编译,然后交由web服务器运行。


技术方案的选择

在正式开始环境部署前,需要做一些准备工作,正所谓借东风之前,不得先万事俱备嘛。通常php的运行环境有多种成熟稳定的方案可供选择,下面是较为成熟的两种:

  • PHP + Apache :以 ISAPI 方式运行PHP项目,PHP版本选择为TS(即线程安全版);该种方式配置较为负责,配置过程很容易因人为配置而出错,但这种方案的稳定性要更高;
  • PHP + Nginx :以FAST-CGI/PHP-FPM 方式运行PHP项目,PHP版本选择为NTS(即线程不安全版);这种方式配置较少,对高并发、高负载有良好的表现,但稳定性却不如Apache;


方案细节的敲定

我们这里选择的是后一种,即:PHP + Nginx ,所以php的版本就要选择nts版,以下是需要的软件:

  1. 能正常运行的电脑一台,windows操作系统;
  2. nginx 1.13+;提供php项目运行环境支持;
  3. thinkphp 5+;php项目;
  4. php-nts-5.6;php 语言支持,php作为解释型语言,需要安装官方提供的语言解释器,方能解释执行php代码;之所以选择nts版,是因为选择了Nginx作为服务器;
  5. 正经程序员一枚,这个尤为重要;

然后将2、3、4中的软件下载、解压,等待使用。


PHP 安装配置

这里我们选择的版本是php 5.6,在下载php的时候,会发现有不同的版本可选择,如下图所示:


PHP 提供了nts版和ts版,分别是线程安全不版本和线程安全版本,两个版本有着很大的不同:

  • ts版:即线程安全版,其在多线程访问时,采用了加锁机制,能够保证同一个数据或者操作同一个时间点只能被一个线程访问操作,从而避免多个线程同时操作一个数据导致的脏数据问题;但其在性能上要比nts版差一些,适用于对数据安全要求比较高的场景。
  • nts版:即线程不安全版,在多线程访问时不提供数据访问保护,有可能出现多个线程先后或同时操作同一数据的情况,从而可能造成数据错乱;但nts版却有着更好的性能,适用于不太注重数据安全,需要更好性能的场景。


本文选择nts版,点击Zip下载PHP程序包,然后解压,得到如下的目录:


php.exe:PHP执行工具,可以在CMD命令执行命令php.exe xxx.php来运行PHP文件。

php-cgi.exe:PHP解释器,为CGI提供的执行工具,在web项目总会经常使用。

php-win.exe:也可以执行PHP文件,区别是会打开控制台,但不显示输出内容。可以用来编写无需显示界面的文件处理、网路服务等程序。

phpdbg.exe:php开发的调试工具。

php.ini:php的配置文件,包括php扩展的安装、session路径、文件大小等诸多配置,如需修改php的配置,打开文件修改即可。


运行php-cgi

接下来,便是将php-cgi运行起来以待后续使用:

  1. 在php根目录下打开cmd命令;
  2. 输入命令:php-cgi.exe -b 127.0.0.1:9000 -c "php.ini";
  3. php-cgi便以127.0.0.1:9000运行起来了;


php-cgi运行问题

若是在运行php-cgi命令时出现以下的问题,则说明系统缺少Visual C++ Redistributable Package,需要下载安装;

问题的解决

1. 下载Visual C++ Redistributable Package(下载链接会在评论区给出);


2. 选择64位的安装包;



3. 下载完成后点击安装即可;

4. 重新回到cmd中运行php-cgi,问题已解决;


FastCGI

在网站的整体架构中,Web Server软件(如nginx、apache、httpd等)执行的是内容的分发者,对客户端的请求进行响应。对于静态资源请求,他们会去设置的路径下寻找,然后返回,如果没找到,则会返回错误信息;对于动态请求,他们会把数据传递给对应的程序来处理,然后把程序处理结果返回。


CGI

CGI是 Web Server 与 Web Application 之间数据交换的一种协议,全称是公共网关接口(Common Gateway Interface,CGI),能够实现浏览器和服务器之间的数据交互。CGI 不是一门编程语言,其也不属于任何一门语言,但是大多数语言都提供了对CGI的支持。

CGI是一种通信协议,它会把用户提交的数据转换成一个k-v的字典。CGI本身并不负责传输数据,数据传输是依靠socket完成的。用户每次发送CGI请求的时候,Web Server软件都会生成一个新的CGI解释器进程(如php-cgi.exe),当CGI脚本处理完请求后,CGI解释器进程就会被Web Server释放;这个过程被称为fork-and-execute模式。

fork-and-execute模式在高并发的场景下会因为重复创建、销毁CGI解释进程而耗费大量的服务器资源,使得服务器的运行性能低下。为了解决这个问题,FastCGI应运而生。


FastCGI

FastCGI也是 Web Server 与 Web Application 之间数据交换的一种协议,其是CGI 的扩展版本,在执行效率上要比CGI高很多。FastCGI就像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次。

FastCGI同样是与语言无关的、可伸缩架构的CGI开放扩展,CGI性能低下的主要原因是CGI解释器的反复加载,而FastCGI主要行为就是将CGI解释器进程保持在内存中,并由FastCGI进程管理器进行调度,因此来提高运行性能。


PHP-CGI

PHP-CGI是PHP官方实现的FastCGI管理器,但他只是个CGI程序,他自己本身只能解析请求,返回结果,不会管理进程。


PHP-FPM

PHP-FPM 是PHP语言对于 FastCGI 协议的具体实现,他负责管理一个进程池,来处理来自Web服务器的请求,不仅如此,PHP-FPM也是用于调度管理PHP解析器php-cgi的管理程序。PHP5.3版本之后,PHP-FPM是内置于PHP内核的,不需要单独下载。

对于php.ini文件的修改,php-cgi进程是没办法平滑重启的,每次修改php.ini都需要重启php-cgi进程;但有了php-fpm后,对于php.ini的修改就能实现平滑重启。但php-fpm在windows下并没有获得支持,如果想要体验,可以选择Linux环境。

Nginx 配置

Nginx是一款轻量级的Web 服务器、反向代理服务器、电子邮件(IMAP/POP3/SMTP)代理服务器,运行时占有内存少,并发能力强;是由俄罗斯程序员伊戈尔·赛索耶夫开发的,自2004年开源公开。


目录介绍


模块介绍

文件conf/nginx.conf是nginx的服务配置文件,在配置文件中可以对nginx做网络基础配置、虚拟主机绑定、反向代理,负载均衡等众多灵活、强大的配置,以下是一些主要的模块:


1. 全局块

  全局块是配置文件从开始到events块之间的一部份内容,主要设置一些影响nginx服务器整体运行的配置指令,因此这些指令作用域是整个nginx服务器全局。这些配置指令包括:用户(组)、worker process数、pid路径、日志路径等。


2. events块

  events块涉及的设置指令包括是否开启对多worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型处理连接请求,每个worker process可以同时支持的最大连接数。


3. http块

 http块在nginx配置中尤为重要,代理、缓存、日志定义、文件类型,网络基础配置等绝大多数的功能和第三方模块的配置都可以放在这个模块中。具体包括文件引入、mime-type定义、日志自定义、是否使用sendfile转输文件、连接超时时间、单连接请求数上限等。

4.server块

  每个server块就是一个绑定的虚拟主机,都是一组服务(或网站)。一个http中可以有多个server。每个server块可以包含多个location块。

  每个绑定的网站的域名和端口都是配置在server块中的,其他还包括有路由配置,访问设备判断等一个所需要的全部数据。

5. location块

  用于配置请求的路由,以及各种页面的处理情况。每个server块中可以包含多个location块,location是server块的一个指令,基于nginx服务器接收到的请求字符串(例如:server_name 或 url_string),对除虚拟主机名称(或ip) 之外的字符串如url_stirng进行匹配,对特定的请求进行处理。地址定向、数据缓存、和应答控制等功能都是在这部分实现。

这里的配置多与应用程序相关。


运行命令

在cmd中打开nginx根目录,即可对nginx执行运行命令;

  • 运行nginx:start nginx
  • 停止nginx:nginx -s reload
  • 配置检查:nginx -t


php 运行配置

nginx 运行php项目需要fastcgi的支持,因此需要在nginx中引入fastcgi的配置;由于项目是使用thinkphp的,因此需要定位到项目中的public目录下;所以,完整的配置如下:

1.在http模块中,server块之前加入如下的配置:

2.server块完整配置如下:


3.nginx配置完成,即可通过配置的域名和端口访问项目;至此配置完成。

?

小结

主动出击,不是语言选择人,是人选择语言。坚持学习才是王道。如果有小伙伴需要以上完整配置的,可以私信我获取。


完结。老夫虽不正经,但老夫一身的才华

相关推荐

windowsxp下载网站(windows xp download)

目前无法下载因为红色警戒XP电脑版是一款已经停止开发的游戏,官方已经停止了对其的支持和更新。虽然网上有一些模拟器可以运行该游戏,但是安装和使用相对困难,而且可能存在版权问题。建议玩家选择其他同类型的游...

没人用过的激活码没过期(没人用过的激活码没过期可以用吗)

迷你世界并不存在什么激活码的。《迷你世界》是一款高度自由的休闲类3D沙盒游戏,有着非常方便快捷的多人联机模式,只要有网络就能和各个地方的小伙伴们一起玩。这里没有等级和规则限制,没有规定的玩法,只有随心...

2017年联想笔记本电脑有几款

17年的笔记本电脑可以勉强安装一下win10系统试试。关键看你的内存有多少,内存大于4个G的话可以安装win10速度不会太慢。最好是安装win7系统,这样能发挥你这台电脑的所有的性能,你用起来也会感觉...

当前显卡排名(当下显卡排行)

101、Irispro5802、Iris62002、Iris52004、UHD630/6205、HD6306、HD5307、HD46008、HD44009、HD420010、HD40...

win10专业版激活变成企业版(win10专业版激活变成企业版怎么办)

win10永久激活密钥很少,一旦网上有分享,等你拿到时就超过期限了,一般是要购买。激活win10系统可以使用激活工具:win10激活工具下载一、win10专业版产品密钥NXRQM-CXV6P-PBGV...

ghostwinxp下载纯净版(ghost win7纯净版下载)

可以下载的,现在官网和其他网站上都可以下载xp原版的。可以通过以下步骤下载我的世界游戏到xp系统中:1.首先打开你的浏览器软件,搜索关键字“我的世界xp版下载”,找到可靠下载地址;2.从下载页面下...

惠普完整版驱动(惠普最新驱动)

惠普官方的标准操作:HP1050安装驱动步骤:一:准备:拿出驱动光盘放入光驱或到HP官网下载完整版驱动。二:不要插USB数据线或插上线打印机电源不要开,安装完整版驱动,当程序提示插入USB数据线时,插...

浏览器最好用的(浏览器最好用的插件)

一、谷歌浏览器谷歌浏览器是公认最好用的,这个可以从市场占有率看出端倪,超过三分之二的用户使用谷歌浏览器。Chrome浏览器以简洁快速著称,不管是普通用户还是开发人员,chrome浏览器都是首选。Chr...

fast路由器6位初始密码(fast路由器的密码)

答:fast路由器初始密码是admin;新款的迅捷无线路由器,管理界面没有初始密码。查看迅捷无线路由器底部标签,标签上标注了admin,说明初始密码就是admin;如果没有,说明该路由器没有初始密码。...

硬盘恢复软件哪个好(硬盘 恢复软件)

迷你兔数据恢复工具:支持恢复硬盘丢失的数据Pc3000数据恢复软件是一款非常专业的硬盘修复工具,能够对电脑硬盘资料数据进行修复,通过使用这个软件可以解决硬盘数据丢失故障,是一个用户进行硬盘资料修复好帮...

十大品牌监控摄像头排名(十大品牌监控摄像头排名第一)

答:1、华为/HUAWEI9.92、小米/MI9.63、罗技/Logitech9.64、海康威视/HIKVISION9.25、乔安/Jooan9.26、普联/TP-LINK9.27、乐橙8.98、萤石...

360手机助手老旧版本大全(360手机助手 老版本)

在设置里面找到历史记录就可能查看360手机助手·换机神器是安卓系统的换机软件,因为苹果的换机软件是爱思。1、打开360手机卫士,登陆账号,点击账号。2、进入个人中心,点击账户安全,在密保工具中,点击解...

系统应用工程师(系统工程的应用)

信息软件系统工程师有前途,毕业以后可以从事软件开发,软件系统的维护,运营等等,和计算机有关的工作内容,因为计算机专业可以说是一个非常热门的专业,很多的大型企业公司基本上都是以计算机研发为主的,薪资福利...

qq恢复系统常见问题(qq恢复系统常见问题及答案)

QQ好友恢复系统一直显示服务器频繁有可能是系统的问题,你的qq重新更新一下,或者你卸载了重新下载一下就有可能好了。您好,很高兴为您解答:您可以试试清空下IE内存,然后关掉不必要的程序,尽量在电脑运...

win10自带的office不见了(win10自带的office在哪个文件夹)

win10系统的office在电脑硬盘office的安装目录里,具体打开安装目录的操作如下:1、首先我们右键点击word,打开方式,选择默认程序打开。2、在默认框打钩,点击【浏览】。3、打开你安装of...

取消回复欢迎 发表评论: