当前位置: 首页 > 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)//关闭数据库连接

?>

相关文章:

  • 空间权重矩阵
  • 阿里云服务器 篇十三:Web书签(链接共享和迷你导航)
  • 强化学习贝尔曼方程推导
  • MCP协议的起源与发展历史:从基础通信到现代分布式系统的支撑者
  • Spring Boot 集成 ActiveMQ 实现异步消息通信(一)
  • 三格电子——四路CAN转4G网关使用中的常见问题
  • 人工智能和机器学习在包装仿真中的应用与价值
  • computed计算值为什么还可以依赖另外一个computed计算值?
  • 基于开闭原则优化数据库查询语句拼接方法
  • 再学GPIO(三)
  • transform-实现Encoder 编码器模块
  • HHsuite同源序列搜索数据库构建
  • 混淆矩阵(Confusion Matrix)横坐标
  • GrapesJS 终极定制组件设计方案:扁平化对象属性编辑、多区域拖拽、多层嵌套与组件扩展实战
  • 在大数据环境下,使用spingboot为Android APP推送数据方案
  • 【进程与线程】
  • 微信小程序 首页之轮播图和搜索框 代码分享
  • 支付行业的前景如何
  • AimRT 从零到一:官方示例精讲 —— 四、logger示例.md
  • 【Java核心】一文理解Java面向对象(超级详细!)
  • 笔墨如何“构城”?上海美院城市山水晋京展出
  • 一季度全国城镇新增就业308万人
  • 2025上海车展的三个关键词:辅助驾驶、性价比,AI生态
  • 驻美国使馆发言人就美方希就关税问题与中方对话答记者问
  • 夜读丨囿于厨房与爱
  • A股三大股指涨跌互现,工农中三大行股价创新高