源码编译安装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)//关闭数据库连接
?>