源码编译安装LAMP

一、LAMP是什么

LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具体包括 Linux 操作系统、Apache 网站服务器、MySQL数据库服务器、PHP(或 Perl.Python)网页编程语言。本章将以源码编译的方式搭建 LAMP 环境,能够满足企业定制化的需求。
在构建 LAMP 平台时,各组件的安装顺序依次为 Linux、Apache、MySQL、PHP其中 Apache 和 MySQL 的安装并没有严格的顺序;而 PHP 环境的安装一般放到最后,负责沟通 Web 服务器和数据库系统以协同工作。

二、apache

1.apache简介

“Apache HTTP Server"是开源软件项目的杰出代表,它基于标准的 HTTP 网络协议提供网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运行在 Linux、UNIX、Windows 等多种操作系统平台中。

1.Apache 的起源

Apache 服务器是针对之前出现的若干个 Web 服务器程序进行整合、完善后形成的软件,其名称来源于“A Patchy Server”,意思是“基于原有 Web 服务程序的代码进行修改(补丁)后形成的服务器程序”。
1995 年, Apache 服务程序发布了 1.0 版本,之后一直由“Apache Group”负责该项目的管理和维护;直到 1999年,在“Apache Group”的基础上成立了 Apache 软件基金会(Apache Software Foundation,ASF)。目前 Apache 项目一直由 ASF 负责管理和维护。
ASF 是非盈利性质的组织,最初只负责“Apache Web"服务器项目的管理。随着Web应用需求的不断扩大,ASF 逐渐增加了许多与 Web 技术相关的开源软件项目。因此Apache 现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF 管理的众多开源软件项目。ASF 基金会的官方网站是 http:/www.apache.org/。

“Apache HTTP Server"是 ASF 旗下著名的软件项目之一,其正式名称是“httpd”也就是历史上的 Apache 网站服务器。在后续内容中,若未作特殊说明,使用“Apache或者“httpd”,均指的是“Apache HTTP Server”

2.Apache 的主要特点

Apache 服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地满足 Web 服务器用户的应用需求。其主要特点包括以下几个方面。开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。Apache服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的精神。
跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可以运行在绝大多数软硬件平台上,所有 UNIX操作系统都可以运行 Apache 服务器,甚至Apache 服务器可以良好地运行在大多数 Windows 系统平台中。Apache 服务器的跨平台特性使其具有被广泛应用的条件。
支持各种 Web 编程语言:Apache 服务器可支持的网页编程语言包括 Per、PHP.Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块实现专有的功能,这为Apache 服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加Apache 本身并不具有的其他功能。
运行非常稳定:Apache 服务器可用于构建具有大负载访问量的 Web 站点,很多知名的企业网站都使用 Apache 作为 Web 服务软件。
良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,为Apache的所有使用者提供尽可能安全的服务器程序。

3.安装HTTP服务

1:准备工作

检査是否用rpm 方式安装有 httpd,如果有,卸载使用 RPM 方式安装的 httpd,并且编译安装之前需要先安装依赖软件。

[root@www ~]#t systemctl stop firewalld

[root@www ~]# systemctl disable firewalld

[root@localhost ~]# rpm -ga httpd                #检查是否已经安装有 httpd

[root@localhost ~]# rpm -e httpd --nodeps注意:

如果提示错误,证明没有rpm安装的 nttpd

[root@localhost ~]# yum install -y apr-util-devel pcre-devel gcc* lrzsz        #安装依赖软件包

2:源码编译及安装
(1)解包

官网下载apache开源的tar包,传输至shell

[root@localhost ~]## tar zxvf httpd-2.4.25.tar.g2

[root@localhost~l#cd httpd-2.4.25

(2)配置

[root@localhost httpd-2.4.25]#./configure--prefix=/usr/local/httpd--enable-so--enable-rewrite--enable-charset-lite -enable-cgi

--prefix:制定程序的安装目录

--enable-so:启用动态加载模块 DSO 的支持,使 httpd 具备进一步扩展功能的能力

-enable-rewrite:启用网页地址重写功能,用于网站优化

-enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页-enable-cgi:启用cgi 脚本程序支持,扩展网站的应用访问能力

DSO 是 Dynamic sharedobjects(动态共享目标)的缩写,它是现代 Unix 派生出来的操作系统都存在着的一种动态连接机制。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法。

(3)编译及安装

[root@localhost httpd-2.4.25]# make && make install

3:确认安装结果

[root@localhost httpd-2.4.25]#t ls /usr/local/httpd

4:优化执行路径

[root@localhost ~]# In -s /usr/local/httpd/bin/* /usr/local/bin

[root@localhost ~]# ls -1 /usr/local/bin/httpd /usr/local/bin/apachectl

[root@localhost ~]# httpd -v

Serverversion: Apache/2.4.25 (Unix)

Serverbuilt:Jun 6 2022 20:42:04

5:添加 httpd 系统服务

[root@localhost ~]#t cd /lib/systemd/system[root@localhost system]# vim httpd.service

[Unit]

Description=The Apache HTTP Server                #
After=network.target

[Service]

Type=forking
PiDFile=/usr/local/httpd/logs/httpd.pidExecStart=/usr/local/bin/apachectl SOPTONSExecReload= /bin/kill -HUP SMAINPID

[lnstall]

WantedBy=multi-user.target

注释:
After=network.target

Before/After:要是一个服务 Before 另一个服务,那么在并行启动时(Svstemd 总是用进程 0 并行启动所有东西,然后通过这两个标记来二次等待排序),那另一个服务这时就会等这个服务先启动并返回状态,注意是先启动而不是启动成功,因为失败也是一种状态,一定要成功才启动另一个服务是通过依赖关系定义的。反之 After 亦然。After=network.target 指的是后于 network 服务启动。

Type=forking服务的启动方式,有 fork方式和 simple 方式forking的方式在启动程序后会调用 fork0) 函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。你要是使用的这种方式,最好也指定下 PIDFILE=,不要让 Systemd 去猜,非要猜也可以,设置 GuessMainPlD 为 yes。

ExecReload= /bin/kill -HUP SMAINPID

S MAINPID 是服务的 systemd 变量,它指向主应用程序的 PID

WantedBy=multi-user.target
指定运行级别

[root@localhost system]# systemctl daemon-reload        #重载服务

[root@locahost system]#t systemctl enable httpd.service        #开启HTTPD服务

[root@localhost system]# systemctl start httpd        #启动HTTPD服务

[root@localhost system]#t netstat -anpt  grep httpd        #过滤查看HTTPD服务状态

三、httpd服务的基本配置

1.web站点服务

1:配置并启动httpd服务

(1)配置httpd服务

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf

修改网站名称:

ServerName wwwbenet.com

[root@www~]# httpd -t                #测试语法是否正确

Syntax OK

(2)启动 httpd 服务

[root@www ~]#f systemctl restart httpd[root@www~]#netstat -anpt grep httpd

3:部署网页文档

[root@www ~]#t echo "it works" >/usr/local/httpd/htdocs/index.html

4:在客户机中访问 Web 站点

[root@localhost ~]# vim /etc/hosts

添加域名解析:

192.168.10.101 wwwbenet.com

[root@localhost ~]# curl www.benet.com

5:查看 Web 站点的访问情况

[root@www ~]# tail /usr/local/httpd/logs/access log

2.httpd.conf 配置文件

1:全局配置文件

每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了httpd.conf 文件中最常用的一些全局配置项。

在上述设置行中,各全局配置项的含义如下。

ServerRoot: 设置 httpd 服务器的根目录,该目录下包括了运行 Web 站点必需的子目录和文件。默认的根目录为/usr/local/httpd,与 httpd 的安装目录相同。在httpd.conf配置文件中,如果指定目录或文件位置时不使用绝对路径,则目录或文件位置都认为是在服务器的根目录下。

Listen:设置 httpd 服务器监听的网络端口号,默认为 80。

User:设置运行 httpd 进程时的用户身份,默认为 daemon。

Group:设置运行 httpd 进程时的组身份,默认为daemon。

ServerAdmin:设置 httpd 服务器的管理员 E-mai 地址,可以通过此 E-mai 地址及时联系 Web 站点的管理员。

ServerName:设置 Web 站点的完整主机名(主机名+域名)。

DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置项比较容易和

ServerRoot 混淆,需要格外注意。

DirectoryIndex:设置网站的默认索引页(首页),可以设置多个首页文件,以空格分开,默认的首页文件为index.html。

ErrorLog:设置错误日志文件的路径,默认路径为logs/error_log.

LogLevel:设置记录日志的级别,默认级别为warn(警告)。

CustomLog:设置访问日志文件的路径、日志类型,默认路径为logs/access log,使用的类型为 common(通用格式)。

PidFile: 设置用于保存 httpd 进程号(PID)的文件,默认保存地址为logs/httpd.pid,logs 目录位于 Apache 的服务器根目录下。

AddDefaultCharset: 设置站点中的网页默认使用的字符集编码,如 UTF-8、gb2312等

Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单独的文件中,再使用 Include 配置项将其包含到 httpd.conf文件中,这样便于独立进行配置功能的维护而不影响主配置文件。

以上配置项是 httpd.conf 文件中主要的全局配置项。还有其他很多配置项,在此不全部列举,如果需要使用可以查看 Apache 服务器中的相关帮助手册文档。

2:区域配置文件

除了全局配置项以外,httpd.conf文件中的大多数配置是包括在区域中的。区域配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。

四、构建虚拟 web 主机

1.基于域名的主机

1:为虚拟主机提供域名解析(两个域名)

[root@www ~]# vim /etc/hosts
192.168.10.101 wwwbenet.com
192.168.10.101 www.accp.com
 

2:为虚拟主机准备网页文档(两个网站)

[root@www ~]#t mkdir-p /var/www/html/benetcom

[root@www ~]#t mkdir -p /var/www/html/accpcom

[root@www ~]#techo“<h1>www.benet.com</h1>"'>/var/www/html/benetcom/index.html

[root@www~]#t echo "<h1>www.accp.com</h1>"'>/var/www/html/accpcom/index.html

3:添加虚拟主机配置

[root@www~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/var/www/htm!">
Require all granted
</Directory>

<VirtualHost *:80>

DocumentRoot"/var/www/html/benetcom

ServerName www.benet.com

ErrorLog"logs/www.benet.com.error log"

CustomLog"logs/www.benet.com.access log" common

</VirtualHost>

<VirtualHost *:80>

DocumentRoot "/var/www/html/accpcom”

ServerName wwwaccp.com

ErrorLog"logs/www.accp.com.error log'

CustomLog"logs/www.accp.com.access log"common

</VirtualHost>

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf

去掉注释符号:

Include conf/extra/httpd-vhosts.conf

[root@www ~]#t systemctl restart httpd        #重启httpd服务,每一次更改配置文件想要生效就需要重启服务或者重载服务

4:在客户机中访问虚拟 Web 主机

root@node2~l# cat /etc/hosts
192.168.10.101 wwwbenet.com
192.168.10.101 www.accp.com

[root@node2 ~]# curl www.benet.com

<h1>www.benet.com</h1>

root@node2 ~]# curl www.accp.com

<h1>www.accp.com</h1>

2.基于IP地址、端口的虚拟主机

1:为主机设置多个I 地址

[root@www, ~]## cd /etc/sysconfig/network-scripts/

[root@www network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0

[root@www network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1

[root@www network-scripts]# vim ifcfg-ens33:0IPADDR=192.168.10.210

NETMASK=255.255.255.0

GATEWAY=192.168.10.254

NAME=ens33:0

DEVICE=ens33:0

[root@www, network-scripts]# vim ifcfg-ens33:1

IPADDR=192.168.10.220

NETMASK=255.255.255.0

GATEWAY=192.168.10.254

NAME=ens33:1

DEVICE=ens33:1

[root@www network-scripts]#t systemctl restart network

[root@www network-scripts]#t ip address

2:基于IP 地址的虚拟主机

[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

<Directory"/var/www/htm!">

Require all granted

</Directory>

<VirtualHost 192.168.10.210:80>

DocumentRoot"/var/www/html/benetcom"

ServerName wwwbenet.com

ErrorLog "logs/www.benet.com.error log'

CustomLog"logs/www.benet.com.access log" common

</VirtualHost>

<VirtualHost 192.168.10.220:80>

DocumentRoot"/var/www/html/accpcom'

ServerName www.accp.com

ErrorLog "logs/www.accp.com.error og

CustomLog"logs/www.accp.com.access log" common</VirtualHost>

[root@www ~]#t systemctl restart httpd

客户端测试:

root@node2~]# curl 192.168.10.210

<h1>www.benet.com</h1>

[root@node2~]# curl 192.168.10.220

<h1>www.benet.com</h1>

3:基于端口的虚拟主机

[root@www ~]#t vim /usr/local/httpd/conf/extra/httpd-yhosts.conf

<Directory "/var/www/htm!">

Require all granted

</Directory>

Listen 80

Listen 8080

<VirtualHost 192.168.10.101:80>

DocumentRoot "/var/www/html/benetcom'

ServerName wwwbenet.com

ErrorLog"logs/www.benet.com.error log"

CustomLeg"logs/www.benet.com.access log"common

</VirtualHost>

<VirtualHost 192.168.10.101:8080>
DocumentRoot "/var/www/html/accpcom"

ServerName www.accp.com

ErrorLog"logs/www.accp.com.error log'

CustomLog"logs/www.accp.com.access log" common</VirtualHost>

[root@www ~]#f systemctl restart httpd

[root@www ~]## netstat -anpt  grep httpd

客户端测试

[root@node2 ~]# curl 192.168.10.101:80

<h1>www.benet.com</h1>

[root@node2 ~]# curl 192.168.10.101:8080

<h1>www.accp.com</h1>

五、MySQL的编译安装

1.misql定义及准备工作

MySQL 是一个真正的多线程、多用户的 SQL数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。

为了确保MySQL数据库功能的完整性、可定制性,本次将以mysql-5.6.36.tar.gz 为例使用源代码编译的方式安装 MySQL 数据库系统

为了避免发生端口冲突、程序冲突等现象,建议先查询 MySQL软件的安装情况,确认没有使用以 RPM 方式安装的 mysql-server、mysql、MariaDB 软件包;否则建议将其卸载。

[root@www ~]# rpm -q mysql-server mysql

未安装软件包 mysql-server
未安装软件包 mysql

[root@www ~]#    yum install -y ncurses-devel autoconf   #部署mysql服务需要的准备软件

由于 MySQL 5.5 需要 cmake 编译安装,所以先安装 cmake 包。

[root@www ~]# yum -y install cmak

[root@www ~]# cd cmake-2.8.6

2.源码编译及安装

(1)创建运行用户

为了加强数据库服务的权限控制,建议使用专门的运行用户,如mysql。此用户不需要直接登录到系统,可以不创建宿主文件夹。

[root@www ~]# useradd -M -s /sbin/nologin mysql

(2)解包

将下载的 MySQL 源码包解压,释放到/usr/src目录下,并切换到展开后的源码目录。源码包为开源安装包,可自行去官网下载

[root@www ~]# tar zxf mysql-5.6.36.tar.gz

(3)配置

在内容丰富、结构庞大的企业网站平台中,可能会用到多种字符集的网页,相应地数据库系统也应该支持不同的字符集编码。在配置过程中,可以将默认使用的字符集设置为 utf8,并添加其他字符集的支持。

[root@www ~]# cd mysql-5.6.36

[root@wwwmysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all

上述配置命令中,各选项的含义如下

-DCMAKE_INSTALL_PREFIX:指定将 MySQL 数据库程序安装到某目录下,如目录/usr/local/mysql。

-DSYSCONFDIR:指定初始化参数文件目录。

-DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8.

-DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci是适用于 UTF-8 字

符集的通用规则。

-DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。

(4)编译并安装

[root@www mysql-5.6.36]# make && make install

3.安装后的其他调整

1)对数据库目录进行权限设置

[root@www mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql

(2)建立配置文件

[root@www mysql-5.6.36]# rm -rf /etc/my.cnf

备注:

系统原来已经有这个文件了,该文件是由mariadb-libs包生成的

[root@www mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf

(3)初始化数据库

[root@www mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

(4)设置环境变量

[root@www mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin">> /etc/profile

[root@www mysql-5.6.36]# . /etc/profile

4.启动并访问 MySQL服务

MySQL 源码包中提供的服务控制脚本,使用该脚本即可控制 MySQL 服务。找到support-files 文件夹下的 mysql.server 脚本文件,将其复制到/etc/rc.dinit.d 目录下,并改名为 mysqld,然后再设置执行权限。

[root@www mysql-5.6.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

[root@www mysql-5.6.36]# chmod +x /etc/rc.d/init.d/mysqld

这样,以后就可以直接执行/etc/init.d/mysqld 脚本来控制 MySQL 数据库服务了例如,若要启动 mysqld 服务,并查看其运行状态,可以执行以下操作。

[root@localhost mysql-5.6.36]# chkconfig --add mysqld        #设置为系统应用

[root@localhost mysql-5.6.36]# chkconfig mysqld on        #开启mysql服务

[root@localhost mysql-5.6.36]# systemctl start mysqld        #启动这个服务

[root@www mysql-5.6.36]# netstat -anpt | grep mysqld        #过滤服务以判断是否开启

经过安装后的初始化过程,MySQL数据库的默认管理员用户名为“root”,没有密码。以 root 用户登录本机的 MySQL 数据库,可以执行以下操作。

[root@www ~]# mysql -u root -p

注意:

此时的mysql是空密码

mysql>set password =password('123456');/        #设置登录密码

mysql>exit

[root@www ~]#mysql -u root -p123456        #设置完成后再登录就需要密码了

六、构建PHP运行环境

1.PHP定义及准备工作

PHP 即“Hypertext Preprocessor”(超级文本预处理语言)的缩写,是一种服务器端的 HTML 嵌入式脚本语言。PHP 的语法混合了 C、Java、Perl 及部分自创的新语法拥有更好的网页执行速度,更重要的是PHP 支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持 UNIX、Windows、Linux 等多种操作系统。

PHP 项目最初由 Rasums Lerdorf在 1994年创建,1995 年发布第一个版本 PHP1.0.本小节将以稳定版源码包 php-5.5.38.tar.gz为例。该版本可以从 PHP 官方站点http://www.php.net 下载。

为了避免发生程序冲突等现象,建议先将 RPM 方式安装的 PHP 及相关依赖包(如果已存在)卸载。例如,根据实际安装情况可卸载 php、php-cli、php-ldap、php-common、php-mysql 等。另外,需要从光盘中安装zlib-devel、libxml2-devel 等依赖包。

[root@www ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps

[root@www ~]# yum -y install zlib-devel libxml2 libxml2-devel lxz-devel

2.安装扩展工具库

在实际企业应用中,一部分基于PHP 开发的Web应用系统会需要额外的扩展工具,如数据加密工具 libmcrypt、mhash、mcrypt 等(可以从站点 http://sourceforge.net下载)。安装 php 软件包之前,应先安装好这些扩展工具程序。

[root@www ~] # yum -y install libmcrypt libmcrypt-devel mcrypt mhash

3.编译安装 PHP

 (1)解包

[root@www ~]# tar zxf php-5.5.38.tar.gz

[root@www ~]# cd php-5.5.38

(2)配置

[root@www php-5.5.38]# ./configure --prefix=/usr/local/php5 --with-mcrypt \

--with-apxs2=/usr/local/httpd/bin/apxs \

--with-mysql=/usr/local/mysql \

--with-mysqli=/usr/local/mysql/bin/mysql_config \

--with-config-file-path=/usr/local/php5 \

--enable-mbstring  

上述配置命令中,各选项的含义如下

--prefix:指定将 PHP 程序安装到哪个目录下,如/usr/localphp5.

--with-mcrypt:加载数据加密等扩展工具支持。

--with-apxs2:设置 Apache HTTP Server 提供的 apxs 模块支持程序的文件位置。

--with-mysql:设置 MySQL 数据库服务程序的安装位置。

--with-mysqli:添加 MySQL 扩展支持。

--with-config-file-path:设置 PHP 的配置文件 php.ini 将要存放的位置。

--enable-mbstring:启用多字节字符串功能,以便支持中文等代码。

(3)编译及安装

[root@www php-5.5.38]# make && make install

备注:

这一步时间很长

七、设置lamp组件环境

1.php.ini 配置调整

(1)php.ini 的建立及基本设置

[root@www php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini

[root@www php-5.5.38]# vim /usr/local/php5/php.ini

default_charset = "UTF-8"  #去掉前面的注释

file_uploads = On

upload_max_filesize = 2M

max_file_uploads = 20

post_max_size = 8M

short_open_tag = On ##修改值

extension=php_mysqli.dll ##去掉前面的注释

(2)添加 ZendGuardLoader 优化模块

[root@www~]#tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz

[root@www~]#cd zend-loader-php5.5-linux-x86_64/

[root@www zend-loader-php5.5-linux-x86_64]#cp ZendGuardLoader.so /usr/local/php5/lib/php

[root@www ~]# vim /usr/local/php5/php.ini

在[PHP]下面添加:

[PHP]

zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so

zend_loader.enable=1

2.httpd.conf配置调整

要使 httpd 服务器支持 PHP 页面解析功能,需通过 LoadModule 配置项加载 PHP程序的模块文件,并通过 AddType 配置项添加对".php"类型网页文件的支持。除此以外,还应修改 Directoryindex 配置行,添加 index.php 配置项,以识别常见的 PHP 首页文件。

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf

Listen *:80

…… //省略部分内容

LoadModule php5_module modules/libphp5.so

<IfModule mime_module>

AddType application/x-httpd-php .php

</IfModule>

DirectoryIndex index.html index.php

#Include conf/extra/httpd-vhosts.conf

[root@www ~]# apachectl -t

Syntax OK

[root@www ~]# systemctl restart httpd        #重启以更新服务

八、测试lamp协同工作

1.测试 PHP 网页能否正确显示

编写一个“.php”格式的网页测试文件,使用 PHP 内建的“phpinfo()”函数显示服务器的 PHP 环境信息,PHP 代码应包括在“<?php ..?>”标记之间。将测试网页文件放置到网站根目录下,如/usr/local/httpd/htdocs/test1.php.

[root@www ~]# vim /usr/local/httpd/htdocs/test1.php

<?php

phpinfo( );

?>

通过浏览器访问测试网页,如 http://www.kgc.com/test1.php。若能够看到 PHP 程序的版本号、配置命令、运行变量等相关信息,如图 2.1 所示,则表示此 Web 服务器已经能正常显示 PHP 网页;若还能看到 Zend 引擎相关信息,则表示ZendGuardLoader模块也已成功启用。

2.测试 PHP 网页能否访问 MySQL 数据库
 

编写一个网页测试文件test2.php,添加简单的数据库操作命令,用于验证与 MySQL服务器的连接、查询等操作。其中'mysqli_connect()"函数用于连接 MySQL 数据库,需要指定目标主机地址,以及授权访问的用户名、密码。

[root@www ~]# vim /usr/local/httpd/htdocs/test2.php

<?php

$link=mysqli_connect('localhost','root','123456');

if($link) echo "恭喜你,数据库连接成功啦!!";

mysqli_close($link);

?>

注意:

对数据库的连接授权,授权后可以使用主机名连接

mysql> grant all on *.* to root@'www.benet.com' identified by '123456';

注意:

如果用的是mysqlnd,要用IP地址进行连接,127.0.0.1或192.168.10.101都可以

通过浏览器访问测试网页,如 http://www.kgc.com/test2.php。若能看到成功连接的提示信息,则表示能够通过 PHP 网页访问 MySQL 数据库。当使用了错误的用户名、密码,或者因“mysqld-connect()”函数未运行而导致连接失败时,执行时将会报错。

九、lamp架构实例应用

1.部署 phpMyAdmin 系统

phpMyAdmin 是一个使用 PHP 语言编写,用来管理 MySQL 数据库的 Web 应用系统。通过该套件提供的网页界面,即便是对 SQL语句不太熟悉的人,也能够非常容易地对 MySQL 数据库进行管理和维护。

1.解包并复制到网站目录

对于大部分 PHP 应用系统,只需要解包后复制到网站目录下即可完成部署,之后再根据需要调整配置,或者访问安装页面以完成进一步的安装。例如,若要将phpMyAdmin套件部署到网站根目录下,以便通过站点http://www.kgc.com/phpMyAdmin/访问。

[root@www ~]# tar zxf phpMyAdmin-4.7.2-all-languages.tar.gz

[root@www ~]# mv phpMyAdmin-4.7.2-all-languages/ /usr/local/httpd/htdocs/phpMyAdmin

2.建立配置文件 config.inc.php

将 phpMyAdmin 套件复制到网站目录以后,还需要创建配置文件方可正常使用。默认提供的样例配置文件为 config.sample.inc.php,需参照该文件内容建立configi.inc.php 配置文件。查找配置文件中的“blowfish secret”行,默认已经设置了一个短语密钥(此密钥用于网页 cookie 认证,不需要用户记忆),可以根据需要自行修改。

[root@www ~]# cd /usr/local/httpd/htdocs/phpMyAdmin

[root@www phpMyAdmin]# cp config.sample.inc.php config.inc.php

备注:

用msqlnd,需要修改文件

[root@www phpMyAdmin]# vim config.inc.php

$cfg['Servers'][$i]['host'] = '192.168.10.101';

3.访问 phpMyAdmin 的Web 管理界面

在浏览器中访问 http://www.kgc.com/phpMyAdmin/,如果能够看到 phpMyAdmin系统的登录界面,如图2.3所示,则表示部署成功。使用MySQL数据库的用户(不能是密码为空的用户)登录后,即可在授权范围内对数据库进行管理。

2. 使用 phpMyAdmin 系统

需要使用 phpMyAdmin 系统时,应先通过 MySQL服务器中授权的数据库用户(如root 用户)进行登录,认证成功后可以看到管理界面,如图 2.4 所示。通过 phpMyAdmin套件,用户可以在授权的范围内执行各种数据库管理操作,使界面更加直观、友好,大大降低了远程维护 MySQL 数据库服务器的难度。

管理页面的初始界面是一个典型的分栏结构,左侧部分包括一排导航按钮(主页、退出、查询、帮助、SQL 文档)、库列表;右侧部分是主体窗口,其中显示了若干标签、操作面板、界面控制等组件,以及 MySQL、网站服务器、phpMyAdmin 的版本信息。
下面仅简单介绍 phpMyAdmin 系统中几个常见的数据库操作

1.创建新的库、新的表

若要创建新的库,可以选择右侧的“数据库”标签,然后在下方的“新建数据库”区域进行操作,如图 所示。例如,指定新建的库名称为“kgc”,使用的校对规则选择utf8 general ci,然后单击“创建”按钮即可新建 kgc 库。

返回管理界面主页,选择左侧列表中新建的 kgc库,在右侧的“结构”标签页下方,可以输入新的表名、字段数,单击“执行”按钮:然后根据页面内容设置各字段的名称、类型(对于要包含中文数据的字段,类型应选用“文本"栏下的 CHAR、VCHAR 等)、长度等要素后,单击“保存”按钮即可新建指定的表。

2.表及数据记录的管理

选中指定库中的表,可以分别进行浏览数据、修改表结构、搜索数据、插入数据等操作。
值得注意的是,如果数据库、表中需要记录包含中文的数据,应确保 LAMP 平台各组件使用相同的字符集(如 UTF-8),否则可能会出现乱码的情况。在编码一致的前提下,新建数据库、表,以及插入、浏览记录时,都可以正常使用中文。

3.直接执行 MySQL 查询语句

单击右侧的“SQL”标签 ,可以打开 SQL查询窗口。在该窗口中,可以直接输入MySQL操作语句,并通过单击右下方的“执行”按钮来完成相应的管理任务

相关推荐

  1. 编译安装LAMP

    2024-06-14 04:12:01       5 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-14 04:12:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-14 04:12:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-14 04:12:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-14 04:12:01       20 阅读

热门阅读

  1. 警示:AGI竞赛之未来十年

    2024-06-14 04:12:01       8 阅读
  2. 基于 Vue 3 封装一个 ECharts 图表组件

    2024-06-14 04:12:01       7 阅读
  3. Page的基本使用及其原理

    2024-06-14 04:12:01       7 阅读
  4. 【杂记-浅谈MAC地址】

    2024-06-14 04:12:01       6 阅读
  5. vivado HW_SIO_PLL

    2024-06-14 04:12:01       7 阅读
  6. C++和Python相互调用(1)

    2024-06-14 04:12:01       7 阅读
  7. leetcode hot100 之 编辑距离

    2024-06-14 04:12:01       10 阅读
  8. 115. 素数筛选

    2024-06-14 04:12:01       8 阅读
  9. vue封装全局的防抖节流函数

    2024-06-14 04:12:01       8 阅读
  10. 用Python编写自动发送每日电子邮件报告的脚本

    2024-06-14 04:12:01       6 阅读
  11. SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)

    2024-06-14 04:12:01       8 阅读
  12. trpc快速上手

    2024-06-14 04:12:01       9 阅读