当前位置: 首页 > news >正文

源码编译安装LAMP

一:LAMP概述

LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP网页编程语言。

构建平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。

其中Apache和MySQL的安装并没有严格的顺序;而PHP环境的安装一般放到最后,负责沟通Web服务器和数据库系统以协同工作

(1)客户端发送请求连接web服务器的80端口,由Apache相应并处理用户的静态请求

(2)如果客户端请求的是动态资源,由Apache加载调用libphpX.so模块(安装php程序)进行解析处理

(3)如果处理需要和后台数据库沟通,那么由php程序去完成

(4)PHP程序将处理完后的结果再返回给Apache,由Apache返回给客户端

二:安装httpd服务器

在配置Apache网站服务之前,需要正确安装好httpd服务器软件。httpd服务器的安装可以选用RPM安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。

1.准备工作

安装依赖软件

命令:dnf  install  -y  apr-devel  pcre-devel  gcc  tar  make

2.源码编译及安装

(1)解包

将下载获得的httpd源码包解压并释放到/usr/src目录下,且切换到展开后的源码目录中

命令:tar  zxf  httpd-2..4.48.tar.gz -C /usr/src

           cd  /usr/src/httpd-2.4.48/

(2)配置

根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行“./configure  --help”命令。

命令:./configure  --prefix=/usr/local/httpd  --enable-so  --enable-rewrite  --enable-charset-lite  --  enable-cgi

上述选项含义如下:

--prefix:指定将httpd服务程序安装到哪个目录下,如/usr/local/httpd.

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

--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。

--enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页。

--enable-cgi:启用CGI脚本程序支持,便于扩展网站的应用访问能力。

(3)编译及安装

完成配置以后,执行“make”命令进行编译,将源代码转换为可执行的程序:然后执行“makeinstall”命令完成最后的安装过程;将编译完的httpd程序及相关目录、文件自动复制到预设的安装目录(由配置时的“-prefix”选项指定)。其中“make”的过程可能会需要较长的时间

命令:make && make install

3.确认安装结果

由于指定的安装目录为/usr/local/httpd,因此httpd 服务的各种程序、模块、帮助文件等都将复制到此目录下。

命令:ls /usr/local/httpd

在安装后的/usr/local/httpd目录下包含httpd服务相关的各种子目录,主要子目录的用途如下:

/usr/llocal/httpd/bin:存放htipd 服务的各种可执行程序文件,包把主程序httpd、服务控制工具apachectl 等。

/usr/local/httpd/conf:存放httpd 服务的各种配置文件,包括主配置文件httpd.conf、增强配置子目录extra 等。

/usr/local/httpd/htdocs:存放网页文档,包括默认首页文件index.html 等。

/usr/local/httpd/logs:存放httpd 服务的日志文件。

/usr/local/httpd/modules:存放httpd 服务的各种模块文件。

/usr/local/httpd/cgi-bin:存放各种CGI程序文件

4.优化执行路径

通过源码编译安装的httpd服务,程路径并不在系统默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接

命令:ln -s /usr/local/httpd/bin/*  /usr/local/bin

这样,在执行相关命令时就不用输入冗长的路径了。例如,当执行“httpd -v命令(用于查看程序版本)时,即相当于执行“/úsr/local/httpd/bin/httpd-v”命令。

5.添加httpd系统服务

在/lib/systemd/system/目录下,建立一个以,service 结尾的单元(unit)配置文件,用于控制由Systemd管理或监控的httpd 服务。

命令:cd /lib/systemd/system/

          vim httpd. service

[Unit]
Description=The Apache HTTP Server
After=network. target

[Service]

Type-forking

PIDFile=/usr/local/httpd/logs/httpd. pid

ExecStart= /usr/local/bin/apachectl $OPTIONS

ExecReload= /bin/kill  -HUP $MAINPID
[Install]
WantedBy=multi-user,.target

             systemctl enable httpd,.service

             systemctl is-enabled httpd. service 

6.Web站点部署

编辑httpd服务的主配置文件httpd.conf,查找配置项“ServerName”,在附近添加一行内容“ServiceName  www.kgc.com”,用于设置网站名称。

命令: vim /usr/local/httpd/conf/httpd. conf

ServerName www.kgc.com

           /usr/local/httpd/bin/apachectl -t

           systemctl  start httpd

三:源码编译安装MySQL

MySQL是一个真正的多线程、多用户的SQL数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。本节将介绍MySQL的编译安装过程、服务控制方法。
为了确保MySQL数据库功能完整性、可定制性,本小节将以mysql-8.0.36.tar.gz为例使用源代码编译的方式安装MySQL数据库系统。

1.准备工作

Mysql环境依赖安装(包含了后续php环境的依赖项)

命令:dnf install -y gcc gcc-c++ make cmake autoconf libtool bison re2c openssl-devel libxml2-devel zlib-devel curl-devel libpng-devel libjpeg-turbo-devel freetype-devel libicu-devel oniguruma-devel sqlite-devel libxslt-devel libzip-devel pcre-devel apr-devel apr-util-devel ncurses-devel wget libtirpc-devel rpcgen gcc-c++

2.源码编译及安装

(1)解包

命令: wget https://dev.mysgl.com/get/Downloads/MySQL-8.0/mysgl-8.0.36. tar.gz

            tar -zxf mysql-8.0.36.tar.gz

(2)MySQL8.0源码安装需要cmake编译安装,所以先下载最新稳定版本的cmake 包并安装。官方下载网站:https://cmake.org/download

命令:tar zxf cmake-3.16.2.tar.gz

           cd cmake-3.16.2

           ./configure

            gmake && gmake install

(3)boot安装

Mysgl源码安装依赖boost需要先安装boost,直接解压boost包到mysql源码目录即可

命令:tar -zxf boost_ 1_77_0.tar.gz

           mv boost_1_77_ 0 mysq1-8.0.36/boost

  (4)配置

命令:cd mysql-8.0.36

          mkdir build && cd build 

           cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DSYSCONFDIR=/etc -DMYSQL DATADIR=/usr/local/mysql/data  -DWITH_SSL=system -DENABLED_LOCAL_INFILE=ON -DWITH_BOOST=.. /boost

上面选项含义如下:

..:指定上层源码目录。

-DCMAKE_INSTALL_PREFIX:指定将mysql程序安装到哪个目录下

-DSYSCONFDIR:设置mysql配置文件存储位置。

-DMYSQL_DATADIR:设置mysql数据库的数据文件存储位置

-DWITH_SSL:使用系统提供的SSL/TLS库来支持加密连接

-DENABLED_LOCAL_INFILE:允许从客户端本地文件加载数据

(5)编译及安装

命令:make -j$(nproc)

           make install

3.初始化数据库

(1)添加程序用户mysql

groupadd  msyql

useradd -r -g msyql -s /bin/false msyql

(2)创建数据目录和pid存放目录并赋权

mkdir -p /usr/local/mysql/data/

chown mysql:mysql /usr/local/mysal/data

(3)执行初始化命令(无密码模式)

/usr/local/mysql/bin/mysqld --initialize-insecure  --user=mysql  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

(4)配置mysql配置文件

vim /etc/my.cnf

[client]
#socket=/usr/local/mysql/data/mysql.sock

[mysqld]
#socket=/usr/local/mysql/data/mysql.sock
#绑定监听地址  =0.0.0.0
bind-address =0.0.0.0

skip-name-resolve #设置3306端口

port = 3306

4.配置服务

cp /usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

/ete/init.d/mysqld start

5.设置mysql管理员密码

/usr/local/mysql/bin/mysql -u root  --skip-password

执行如下SQL设置mysql管理员密码:

ALTER USER 'root'@'localhost’  IDENTIFIED BY  ‘YourRootPass123!’;

FLUSH PRIVILEGES ;

EXIT;

四.源码编译安装php

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

1.解包

wget https://www.php.net/distributions/php-8.2. 20. tar. gz

tar -zxvf php-8.2.20.tar.g2

cd php-8.2.20

2.配置

./configure  --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --with-openss --with-zlib --with-curl --enable-mbstring --with-msyqli=msyqlnd --with-pdo-mysql=/mysqld --enable-gd --with-freetype --with-jpeg --with-libxml --enable-intl --with-zip --enable-opcache

选项含义如下:

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

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

--with-mysqli:设置对MySQL数据库的支持

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

3.编译及安装

make -j$ (nproc)

make install

2.配置PHP

(1)php.ini配置调整

php.ini 配置调整安装好PHP软件包以后,服务器并不会自动创建php.ini配置文件,但在源码目录 下提供了两个样例配置文件,分别对应于开发环境、生产环境。

命令:cp php.ini-development/usr/local/php/lib/php.ini

           sed -i ’s/;date. timezone=/date.timezone = Asia\/Shanghai/’  /usr/local/php/lib/php. ini

           sed -i ’s/memory_limit  = 128M/memory_limit =256M/’  /usr/local/php/lib/php.ini

五:测试LAMP协同工作

完成PHP相关软件的安装、调整配置以后,应对其进行必要的功能测试,以验证LAMP平台各组件是否能够协同运作。在网站根目录下创建相应的PHP测试网页,然后通过浏览器进行访问,根据显示结果即可判断LAMP平台是否构建成功。下面分别从PHP网页的解析、通过PHP页面访问MySQL数据库两个方面进行测试。要想测试PHP环境是否能够正常工作,需要建立一个使用PHP语言编写的网页文件,并通过httpd服务器发布,在浏览器中对其进行访问。

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

(1)httpd.conf配置调整

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

命令:vi  /usr/local/httpd/conf/httpd.conf

           systemctl restart httpd

(2)编辑测试php页面

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

命令:vim /usr/local/httpd/htdocs/testl.php

<?php

phpinfo();

?>

通过浏览器访问测试网页(测试前需添加“服务器ip www.kgc.com”的解析记录至windows的地址映射文件C:\Windows\System32\drivers\etc\hosts),加http://ww.kgc.com/test1.php。若能够看到PP程序的版本号、配置命令运行变量等相关信息。

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

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

vim /usr/local/httpd/htdocs/test2.php

<?php

ini_set(’mysqli.default socket’,’/usr/local/mysql/data/mysql. sock'):$link=mysqli connect( localhost',"root',"YourRootPass123!);//连接 MySQL 数据库
If($link)echo"恭喜你,数据库连接成功啦!!";//连接成功时的反馈消息
mysqli close($link)//关闭数据库连接

?>

http://www.xdnf.cn/news/215983.html

相关文章:

  • Python 3.12数据结构与算法革命
  • 实现使用Lucene对某个信息内容进行高频词提取并输出
  • 2025年04月29日Github流行趋势
  • TA学习之路——2.4 图形传统光照模型详解
  • HCIE证书失效?续证流程与影响全解析
  • Java 高级技术之Gradle
  • Ubuntu实现远程文件传输
  • C 语言 static 与 extern 详解
  • 海思SD3403边缘计算AI核心设备概述
  • 2025年欧洲西南部大停电
  • H3C ER3208G3路由实现内网机器通过公网固定IP访问内网服务器
  • 电流探头的消磁与直流偏置校准
  • 深入了解僵尸网络 IP:威胁与防范
  • Redis核心与底层实现场景题深度解析
  • 生物化学笔记:神经生物学概论04 视觉通路简介视网膜视网膜神经细胞大小神经节细胞(视错觉)
  • 故障诊断——复现github代码ClassBD-CNN(BDCNN)
  • BT136-ASEMI无人机专用功率器件BT136
  • 超详细复现—平抑风电波动的电-氢混合储能容量优化配置
  • python入门:找出字典中key和value不相同的部分,并替换成新的value
  • Makefile 在 ARM MCU 开发中的编译与链接参数详解与实践
  • rsync命令详解与实用案例
  • 【Unity】使用Socket建立客户端和服务端并进行通信的例子
  • 学习笔记:Qlib 量化投资平台框架 — MAIN COMPONENTS Part Ⅱ
  • Spring Boot 缓存机制:从原理到实践
  • HTML 表单
  • vue3+Nest.js项目 部署阿里云
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 16)
  • 三轴云台之镜头解码技术篇
  • 如何提升自我价值?
  • 企业为什么选择浙江电信服务器租用?