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
相关推荐
我一定会有钱1 小时前
Linux爆音问题解决方法(隔一会会有奇怪噪音)
linux·运维·服务器
Dobby_053 小时前
【Ansible】变量与敏感数据管理:Vault加密与Facts采集详解
linux·运维·云原生·ansible
记忆不曾留3 小时前
unbuntu 20.04 docker 部署wordpress
运维·docker·容器·wordpress·独立站建站
l_tian_tian_4 小时前
SpringClound——网关、服务保护和分布式事务
linux·服务器·前端
zcz16071278214 小时前
服务器与客户端
运维·服务器
准女婿_4 小时前
优考试局域网系统V6.0.0版
linux·windows·用户运营
门思科技4 小时前
LoRaWAN 的网络拓扑全解析:架构、原理与应用实践
服务器·网络·人工智能·科技·物联网·架构
我的收藏手册5 小时前
Linux 网络命令大全
linux·服务器·网络
siriuuus5 小时前
Linux文本三剑客的使用及常见重点操作
linux·文本三剑客