目录
PHP语言
PHP语言的基本概念
PHP是一种常用的开源脚本语言,特别适合用于开发动态网页和Web应用程序。PHP的全称是“PHP: Hypertext Preprocessor”,即“超文本预处理器”,它的基本概念包括以下几个方面:
- 脚本语言:PHP是一种脚本语言,不需要进行编译,代码可以直接由解释器执行。这使得PHP的开发过程更加灵活和快速。
- 服务器端语言:PHP通常在服务器上运行,通过Web服务器和客户端的交互来生成动态网页。当客户端发送请求时,PHP解释器会解析PHP代码,并将结果发送给客户端浏览器。
- 弱类型语言:PHP是一种弱类型语言,不需要在变量定义时指定数据类型。PHP会根据变量的值自动推断数据类型,这使得PHP的变量使用更加灵活。
- 支持多种数据库:PHP可以与多种数据库系统进行交互,如MySQL、PostgreSQL、Oracle等。这使得PHP在开发Web应用程序时能够方便地进行数据库操作。
- 支持各种协议和编程范式:PHP支持多种网络协议,如HTTP、FTP、SMTP等,可以进行网络编程。同时,PHP也支持面向对象编程、函数式编程和过程式编程等多种编程范式。
- 内置函数库:PHP内置了丰富的函数库,涵盖了各种常用的操作和功能,如字符串处理、文件操作、图像处理等。这些函数库使得PHP开发更加便捷和高效。
总之,PHP是一种广泛应用的服务器端脚本语言,PHP语言独特的语法混合了C、Java、Perl以及PHP自创的语法,它能够与数据库进行交互、处理Web请求和生成动态网页。PHP具有简单易学、灵活多样的特点,适用于开发各种规模的Web应用程序。
PHP语言的优点
PHP语言有以下几个主要优点:
- 简单易学:PHP语法相对简单,与C语言类似,易于学习和使用。对于初学者来说,上手较快,能够快速开发出简单的Web应用。
- 广泛应用:PHP是一种非常流行的服务器端脚本语言,被广泛应用于Web开发领域。许多著名的网站和应用程序,如Facebook、WordPress等都是使用PHP开发的。
- 跨平台性:PHP能够在多个操作系统上运行,包括Windows、Linux、Unix等。这使得开发人员能够更加灵活地选择开发环境,并且可以轻松迁移和部署应用程序。
- 强大的数据库支持:PHP与多种数据库系统紧密集成,如MySQL、PostgreSQL、Oracle等。开发人员可以方便地进行数据库操作,如连接数据库、执行SQL查询等。
- 大量的资源和社区支持:由于PHP的广泛应用和活跃的社区,有大量的开源代码、库和框架可供使用。这些资源可以节省开发时间,提高开发效率。
- 高性能:PHP经过多年的优化和改进,具有较高的执行速度和性能。PHP7引入了新的引擎和优化策略,进一步提升了性能,使得PHP在处理高负载的Web应用中表现出色。
- 扩展性和灵活性:PHP具有良好的扩展性,可以轻松地集成其他的扩展模块和库。同时,PHP支持多种编程范式,如面向对象编程和函数式编程,使得开发人员能够根据业务需求选择适当的编程风格。
- 可植入性强:PHP语言在补丁漏铜升级过程中,核心部分植入简单易行,且速度快。
综上所述,PHP语言具有简单易学、广泛应用、跨平台性、强大的数据库支持、丰富的资源和社区支持、高性能、扩展性和灵活性等优点,使得它成为一种受欢迎的服务器端脚本语言。
PHP语言的应用前景
与其他常用的语言相比,PHP语言优势明显,凭借较好的可移植性、可靠性以及较高的运行效率等优势在当下行业网站建设中独占鳌头。利用PHP语言进行行业网站设计,能够实现数据库的实时性更新、网站的日常维护和管理简单易行,进而提高用户的使用效率。PHP语言因其本身的优点再加上开源的优势,在Web开发方面有着极大的优势,已经衍生出众多开源系统,如建站方面的DedeCMS、ThinkCMF和WordPress等。
如今,网路技术正以突飞猛进的速度发展,而企业也要与时俱进,只有高度重视并充分利用网络技术,才能在实际运行的过程中,让网络成为切页发展的动力。PHP语言作为网站开发的通用语言,简单易行,可移植性好,应用空间广泛,在行业网站建设方面,具有良好的应用前景。
安装PHP环境
Linux操作系统的单节点规划准备
基础环境部署
(1)修改主机名
使用远程连接工具连接到虚拟机,并对其虚拟机修改主机名
[root@localhost ~]# hostnamectl set-hostname php
[root@localhost ~]# hostnamectl
Static hostname: php
上面修改完后使用“bash”或重连终端实现更名
(2)关闭防火墙及SElinux服务
两个节点都关闭防火墙firewalld及SElinux服务
[root@php ~]# systemctl stop firewalld
[root@php ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@php ~]# setenforce 0
//这个只是临时关闭,永久关闭要编辑配置文件/etc/selinux/config
(3)安装配置基础服务
首先拉取网络YUM源
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
安装基础配置服务
[root@php ~]# yum install gcc gcc-c++ libxml2-devel libcurl-devel openssl-devel bzip2-devel -y
编译安装libmcrypt
libmcrypt是一个库,它为几个对称加密算法提供了统一的接口。它旨在提供一个简单的接口来访问ofb、cbc、cfb和ecb模式下的加密算法。它支持的算法有DES、3DES、RIJNDAEL、Twofish、IDEA、GOST、CAST-256、ARCFOUR、SERPENT、SAFER+等。算法和模式也是模块化的,因此可以动态地添加和删除它们,而无需重新编译库。
libmcrypt-2.5.8.tar.gz包下载:mcrypt - Browse /Libmcrypt/2.5.8 at SourceForge.net
上传libmcrypt-2.5.8.tar.gz压缩包到/usr/local/src目录下
[root@php ~]# cd /usr/local/src/
[root@php src]# ls
libmcrypt-2.5.8.tar.gz
解压压缩包
[root@php src]# tar -zxvf libmcrypt-2.5.8.tar.gz
[root@php src]# ls
libmcrypt-2.5.8 libmcrypt-2.5.8.tar.gz
进入解压目录
[root@php src]# cd libmcrypt-2.5.8
[root@php libmcrypt-2.5.8]# ls
acinclude.m4 autoscan.log config.h config.sub depcomp install-sh libmcrypt.spec Makefile mkinstalldirs src
aclocal.m4 buildconf config.h.in configure doc KNOWN-BUGS libmcrypt.spec.in Makefile.am modules stamp-h1
AUTHORS ChangeLog config.log configure.in include lib libtool Makefile.in NEWS THANKS
autom4te.cache config.guess config.status COPYING.LIB INSTALL libltdl ltmain.sh missing README TODO
编译安装该服务
[root@php libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt && make && make install
# `--prefix=/usr/local/libmcrypt`:指定libmcrypt安装的路径。
![](https://i-blog.csdnimg.cn/blog_migrate/d6cde6c76f394e41677f86841328cbbc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fd18e2ab33df007ff340796962d3368a.png)
(4)安装PHP环境
上传php-5.6.27.tar.gz压缩包至PHP节点
PHP包下载:http://cn2.php.net/distributions/php-5.6.27.tar.gz
上传压缩包到/usr/local/src目录下
[root@php ~]# cd /usr/local/src/
[root@php src]# ls
libmcrypt-2.5.8 libmcrypt-2.5.8.tar.gz php-5.6.27.tar.gz
解压php压缩包
[root@php src]# tar -zvxf php-5.6.27.tar.gz
进入解压后的目录
[root@php src]# ls
libmcrypt-2.5.8 libmcrypt-2.5.8.tar.gz php-5.6.27 php-5.6.27.tar.gz
[root@php src]# cd php-5.6.27
[root@php php-5.6.27]# ls
acinclude.m4 CREDITS ltmain.sh NEWS README.md README.TESTING2 stub.c
aclocal.m4 ext main pear README.namespaces README.UNIX-BUILD-SYSTEM tests
build EXTENSIONS makedist php5.spec.in README.NEW-OUTPUT-API README.WIN32-BUILD-SYSTEM travis
buildconf footer Makefile.frag php.gif README.PARAMETER_PARSING_API run-tests.php TSRM
buildconf.bat generated_lists Makefile.gcov php.ini-development README.REDIST.BINS sapi UPGRADING
CODING_STANDARDS genfiles Makefile.global php.ini-production README.RELEASE_PROCESS scripts UPGRADING.INTERNALS
config.guess header makerpm README.EXT_SKEL README.SELF-CONTAINED-EXTENSIONS server-tests-config.php vcsclean
config.sub INSTALL missing README.GIT-RULES README.STREAMS server-tests.php win32
configure install-sh mkinstalldirs README.input_filter README.SUBMITTING_PATCH snapshot Zend
configure.in LICENSE netware README.MAILINGLIST_RULES README.TESTING stamp-h.in
这是在 Linux 操作系统中使用 PHP 5.6 构建的命令
解释如下:
# `./configure`:运行 PHP 的配置脚本。
# `--prefix=/usr/local/php5.6`:指定 PHP 的安装路径。
# `--with-mysql=mysqlnd`:启用 MySQL 扩展,使用 mysqlnd 驱动。
# `--with-pdo-mysql=mysqlnd`:启用 PDO MySQL 扩展,使用 mysqlnd 驱动。
# `--with-mysqli=mysqlnd`:启用 MySQLi 扩展,使用 mysqlnd 驱动。
# `--with-openssl`:启用 OpenSSL 扩展,支持加密功能。
# `--enable-fpm`:启用 PHP-FPM(FastCGI 进程管理器),用于处理 PHP 脚本的 FastCGI 请求。
# `--enable-sockets`:启用 Sockets 扩展,支持网络通信。
# `--enable-sysvshm`:启用系统 V 共享内存扩展,提供共享内存功能。
# `--enable-mbstring`:启用多字节字符串扩展,支持处理多字节字符集。
# `--with-freetype-dir`:指定 FreeType 库的路径,用于处理 TrueType 字体。
# `--with-jpeg-dir`:指定 JPEG 库的路径,用于处理 JPEG 图片。
# `--with-png-dir`:指定 PNG 库的路径,用于处理 PNG 图片。
# `--with-zlib`:启用 Zlib 扩展,支持数据压缩和解压缩。
# `--with-libxml-dir=/usr`:指定 libxml2 库的路径,用于处理 XML。
# `--enable-xml`:启用 XML 扩展,支持 XML 解析。
# `--with-mhash`:启用 mhash 扩展,支持哈希算法。
# `--with-mcrypt=/usr/local/libmcrypt`:指定 libmcrypt 库的路径,用于处理加密算法。
# `--with-config-file-path=/etc`:指定 PHP 配置文件的路径。
# `--with-config-file-scan-dir=/etc/php.d`:指定 PHP 配置文件扫描的目录。
# `--with-bz2`:启用 Bzip2 扩展,支持数据压缩和解压缩。
# `--enable-maintainer-zts`:启用多线程安全版本的 PHP。
![](https://i-blog.csdnimg.cn/blog_migrate/35a87561d017a520e70b1b18b6bbfed1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/34af78c34e98195abe77f5cabc69a273.png)
上面给我报了一个警告,查看了一下原来是我命令打错了,修改后重新运行一下配置脚本即可,问题不大!
大家如果手动敲上面的命令要注意点,防止敲错,免得后面造成不必要的麻烦!
最后完成截图
![](https://i-blog.csdnimg.cn/blog_migrate/b5bf8e3ee4aa658e19c6e7d8a674ab71.png)
下一步就是编译安装
[root@php php-5.6.27]# make && make install
这个编译安装需要一点时间,不用着急,泡杯茶耐心等待会哦!!!
完成后
![](https://i-blog.csdnimg.cn/blog_migrate/4c4a24038bfb1b095ddf65f3ffd27731.png)
(5)创建用户ID
创建用户ID,注意这个nginx的ID号要和上一篇的nginx主机(192.168.100.50)上的保持一致,之前我上一篇也提到过
[root@php php-5.6.27]# groupadd -g 1001 nginx
[root@php php-5.6.27]# useradd -u 900 nginx -g nginx -s /sbin/nologin
[root@php php-5.6.27]# tail -l /etc/passwd
nginx:x:900:1001::/home/nginx:/sbin/nologin
(6)配置PHP环境
PHP压缩包中提供了PHP环境需要用到的模板文件,需要对文件进行改名后才能使用
复制文件并改名
[root@php php-5.6.27]# cp php.ini-production /etc/php.ini
[root@php php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
赋予文件执行权限
[root@php php-5.6.27]# chmod +x /etc/init.d/php-fpm
添加PHP服务到启动列表,并设置开机启动
[root@php php-5.6.27]# chkconfig --add php-fpm
[root@php php-5.6.27]# chkconfig php-fpm on
修改PHP的主配置文件
[root@php php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@php php-5.6.27]# vi /usr/local/php5.6/etc/php-fpm.conf
编辑文件,将相关参数修改为下面过滤出来的配置
过滤出文件中以字母a-z,A-Z开头的字母,并显示行号,注意冒号后面的才是要修改的,前面的数字为对应的配置所在第几行
[root@php etc]# grep -n '^'[a-Z] /usr/local/php5.6/etc/php-fpm.conf
25:pid = run/php-fpm.pid
149:user = nginx
150:group = nginx
164:listen = 192.168.100.60:9000
224:pm = dynamic
235:pm.max_children = 50
240:pm.start_servers = 5
245:pm.min_spare_servers = 5
250:pm.max_spare_servers = 35
解释一下以上配置的作用:
这几行是在 PHP-FPM (PHP FastCGI 进程管理器) 的配置文件中定义的参数
# 第 25 行:`pid = run/php-fpm.pid` 指定 PHP-FPM 进程的 PID(进程 ID)文件路径。在该文件中,PHP-FPM 进程将写入其进程 ID。
# 第 149 行:`user = nginx` 指定 PHP-FPM 进程执行的用户。在这种情况下,PHP-FPM 进程将以 `nginx` 用户的身份运行。
# 第 150 行:`group = nginx` 指定 PHP-FPM 进程执行的用户组。在这种情况下,PHP-FPM 进程将以 `nginx` 用户组的身份运行。
# 第 164 行:`listen = 192.168.100.60:9000` 指定 PHP-FPM 监听的 IP 地址和端口号。在这种情况下,PHP-FPM 将监听 IP 地址 `192.168.100.60` 的端口 `9000` 上的请求。
# 第 224 行:`pm = dynamic` 指定 PHP-FPM 的进程管理模式为动态模式。在动态模式下,PHP-FPM 进程的数量将根据需求自动调整。
# 第 235 行:`pm.max_children = 50` 指定 PHP-FPM 进程池的最大子进程数。在这种情况下,最多可以创建 50 个 PHP-FPM 子进程。
# 第 240 行:`pm.start_servers = 5` 指定 PHP-FPM 进程池在启动时创建的初始子进程数。在这种情况下,启动时会创建 5 个子进程。
# 第 245 行:`pm.min_spare_servers = 5` 指定 PHP-FPM 进程池中最小空闲子进程的数量。在这种情况下,保持至少 5 个空闲子进程。
# 第 250 行:`pm.max_spare_servers = 35` 指定 PHP-FPM 进程池中最大空闲子进程的数量。在这种情况下,最多允许存在 35 个空闲子进程。
![](https://i-blog.csdnimg.cn/blog_migrate/e4ea24175945b60f7acc44ed89e6a9c2.png)
(7)启动PHP服务
在完成上述配置并保存退出之后,就可以启动PHP服务,并检查是否启动成功(netstat命令无法使用时,那就使用YUM源安装net-tools工具,之前nginx服务中也提到过)
[root@php php-5.6.27]# service php-fpm start
Starting php-fpm done
[root@php php-5.6.27]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.100.60:9000 0.0.0.0:* LISTEN 13143/php-fpm: mast
可以看到9000端口已启动,则说明PHP环境安装完毕!
![](https://i-blog.csdnimg.cn/blog_migrate/30ef30245176b15f268e5178427d36ea.png)
至此,PHP语言环境部署完成!