28.Linux :通过源代码编译安装lamp

Linux :通过源代码编译安装lamp

区别

特性 源代码编译安装 yum 安装
安装方式 从源代码编译构建 预编译的二进制包
自定义程度 高度可定制 有限定制
性能优化 可针对特定硬件优化 通用优化
依赖管理 手动解决依赖关系 自动解决依赖
安装复杂度 复杂,需技术经验 简单,一键安装
维护更新 手动更新 自动更新
安全性 需自行关注安全补丁 官方提供安全更新
版本控制 可选择任意版本 受仓库版本限制
适用场景 高性能需求/特殊定制/学习环境 快速部署/生产环境/新手友好

lamp分别指linux,apache,MySQL(mariadb),php

php环境一般最后安装,用于沟通web服务器和数据库进行协同工作

源代码安装有四个步骤,分别为解包,配置,编译,编译安装

安装之前关闭防火墙和selinux,使用yum网络源进行配置(wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo)

复制代码
yum -y install epel-release

安装需要的工具包

复制代码
yum -y install bzip2  vim make wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel

首先去官网找到需要的软件包(一般为tar包,可以用tar命令解压)

复制代码
本次使用apr-1.7.0.tar.gz,
apr-util-1.6.1.tar.gz,
httpd-2.4.54.tar.gz,
mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz,
php-7.1.10.tar.bz2

使用xshell(或者其他软件)将软件包传输到linux系统中

首先解压并安装apr,apr-util包

复制代码
apr
[root@xieyuhui2 ~]# tar -xzvf apr-1.7.0.tar.gz
[root@xieyuhui2 ~]# cd apr-1.7.0/
[root@xieyuhui2 apr-1.7.0]# sed -i '/$RM "$cfgfile"/d' configure   #删除configure里面的$RM "$cfgfile,使用`-i`选项时,`sed`会直接更改源文件
配置
[root@xieyuhui2 apr-1.7.0]# ./configure --prefix=/usr/local/apr    #prefix为路径
[root@xieyuhui2 apr-1.7.0]# make  #编译
[root@xieyuhui2 apr-1.7.0]# make install #编译安装

apr-util
[root@xieyuhui2 ~]# tar -xzvf apr-util-1.6.1.tar.gz
[root@xieyuhui2 ~]# cd apr-util-1.6.1/
[root@xieyuhui2 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr      #with表示包含apr依赖组件
[root@xieyuhui2 apr-util-1.6.1]# make
[root@xieyuhui2 apr-util-1.6.1]# make install

httpd的依赖组件安装完成后开始安装httpd

复制代码
[root@xieyuhui2 ~]# tar -xzvf httpd-2.4.54.tar.gz
[root@xieyuhui2 ~]# cd httpd-2.4.54/
[root@xieyuhui2 httpd-2.4.54]# ./configure --prefix=/usr/local/apache \
> --sysconfdir=/etc/httpd24 \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --with-zlib \
> --with-pcre \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util/ \
> --enable-modules=most \
> --enable-mpms-shared=all \
> --with-mpm=prefork
[root@xieyuhui2 httpd-2.4.54]# make
[root@xieyuhui2 httpd-2.4.54]# make install

启动apache服务

复制代码
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl start

安装依赖包

复制代码
yum -y install libncurses*     #centos7系统自带,因此不用安装

创建mysql用户

复制代码
[root@xieyuhui2 ~]# useradd -r -M -s /sbin/nologin mysql        #-r 表示创建一个系统用户,uid小于1000,-M表示不创建家目录

安装mysql

复制代码
[root@xieyuhui2 ~]# tar -xzvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local   #-C表示指定目录

[root@xieyuhui2 local]# ln -sv /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql   #给mysql-5.7.37-linux-glibc2.12-x86_64创建软链接
[root@xieyuhui2 local]# chown -R mysql.mysql /usr/local/mysql     #将mysql的所有者和所属组改为mysql,-R表示递归
[root@xieyuhui2 local]# mkdir -p /opt/data
[root@xieyuhui2 local]# chown -R mysql.mysql /opt/data/
#  yum -y install libaio centos7自带因此不安装,如果没有则安装

数据库初始化

复制代码
[root@xieyuhui2 ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/
[root@xieyuhui2 ~]# ln -sv /usr/local/mysql/include/ /usr/local/include/mysql 
[root@xieyuhui2 ~]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@xieyuhui2 ~]# ldconfig   #查看是否报错

编辑mysql文件

复制代码
[root@xieyuhui2 ~]# vim /etc/my.cnf  #里面的的东西都可以删掉然后自己重写
[mysql]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sockport = 3306
pid-file = /opt/data/mysql.pid
user = mysqlskip-name-resolve

[root@xieyuhui2 ~]# vim /usr/local/mysql/support-files/mysql.server

定义mysql服务使用systemd管理

复制代码
[root@xieyuhui2 ~]# cd /usr/lib/systemd/system
[root@xieyuhui2 system]# vim mysqld.service

重启mysql服务

复制代码
[root@xieyuhui2 system]# systemctl daemon-reload
[root@xieyuhui2 system]# systemctl enable --now mysqld

添加mysql命令的变量到环境变量

复制代码
[root@xieyuhui2 ~]# vim /etc/profile
复制代码
[root@xieyuhui2 ~]# source /etc/profile

设置数据库密码

复制代码
[root@xieyuhui2 ~]# mysql -uroot -p  #首次进入没有密码,直接回车即可
[root@xieyuhui2 ~]# /usr/local/mysql/bin/mysql -uroot -e "set password=password('redhat')"

部署lamp-php

复制代码
安装依赖包,安装GD库和GD库关联程序,用来处理和生成图片
[root@xieyuhui2 ~]# yum -y install \
> libjpeg \
> libjpeg-devel \
> libpng libpng-devel \
> freetype freetype-devel \
> libxml2 \
> libxml2-devel \
> zlib zlib-devel \
> curl curl-devel

[root@xieyuhui2 ~]# tar -xjvf php-7.1.10.tar.bz2
[root@xieyuhui2 php-7.1.10]# ./configure \
> --prefix=/usr/local/php \
> --with-apxs2=/usr/local/apache/bin/apxs \
> --with-mysql-sock=/tmp/mysql.sock \
> --with-mysqli \
> --with-zlib \
> --with-curl \
> --with-gd \
> --with-jpeg-dir \
> --with-png-dir \
> --with-freetype-dir \
> --with-openssl \
> --enable-mbstring \
> --enable-xml \
> --enable-session \
> --enable-ftp \
> --enable-pdo \
> --enable-tokenizer \
> --enable-zip
[root@xieyuhui2 php-7.1.10]# make
[root@xieyuhui2 php-7.1.10]# make install

测试环境时使用php.ini-development文件,生产环境使用php.ini-production文件

复制代码
[root@xieyuhui2 ~]# cp php.ini-development /usr/local/php/lib/php.ini

修改php配置文件

复制代码
1.设置时区
[root@xieyuhui2 ~]# vim /usr/local/php/lib/php.ini
复制代码
2.使apache支持php
[root@xieyuhui2 ~]# vim /etc/httpd24/httpd.conf
复制代码
[root@xieyuhui2 ~]# cd /usr/local/apache/htdocs 
[root@xieyuhui2 htdocs]# rm -f /usr/local/apache/htdocs/index.html   #删除原有的html文件
[root@xieyuhui2 htdocs]# vim index.php  #验证php详细信息测试网页

重启apache服务(先停止再启动)

复制代码
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl stop
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl start
相关推荐
qq_1631357524 分钟前
Linux 【04-more命令超详细教程】
linux
sevencheng7981 小时前
【ADB】adb命令行常用按键模拟代码
linux·adb·模拟按键,返回键,音量键
暗影天帝1 小时前
BPI-R3 Mini 刷 Yuzhii DHCPD U-Boot 教程
linux
小赖同学啊2 小时前
智能连接器集群化高可用生产方案
linux·运维·人工智能
wanghao6664552 小时前
DevOps 从入门到实践:构建高效交付流水线
运维·devops
qq_546937272 小时前
从“能用”到“超神”,DeepSeek++给网页版装上“大脑”和“手脚”,支持长期记忆、MCP工具与自动化任务!
运维·自动化
ZStack开发者社区2 小时前
基于AI Agent的ZCF API文档全链路自动化
运维·人工智能·自动化
Cinema KI2 小时前
Linux第一个系统程序-进度条
linux·服务器
Moshow郑锴3 小时前
Ubuntu 26.04 更换阿里云源镜像
linux·运维·ubuntu
Jason_chen3 小时前
Linux 6.2 串口机制深度解析:AI驱动的自适应通信与零信任串口安全架构
linux