基于 CentOS 7.6 源码编译搭建 LAMP 架构

简介 LAMP 源码编译搭建 LAMP 架构
安装和配置 LAMP
安装并配置 MySQL 数据库
源码编译安装 php7.2

简介 LAMP 源码编译搭建 LAMP 架构

为什么要源码编译
一般来说,我们软件的安装方式有 Yum(rpm),和源码编译两种方式,那么为什么我们需要源码编
译安装一部分软件?选择源码编译安装软件有以下几个原因:
1. 满足不同的运行平台,我们 Linux 发行版本众多,但是每个版本采用的软件或者内核版本都不一
样,而我们的二进制包所依赖的环境不一定能够正常运行,所以大部分软件直接提供源码!
2. 方便定制,满足不同的需求,很多时候我们所需要的软件都是可以定制的,我需要什么就安装什
么,大多数二进制代码都是一键装全,所以自由度并不高!
3. 方便运维、开发人员维护,我们的源码是可以打包二进制的,但是对于这个软件的打包都会有一
份代价不小的额外工作,包括维护,所以如果是源码的话,软件产商会直接维护,但是如果是二进制的
话,一般都是 Linux 发行商提供!
可以安装最新的版本

什么是 LAMP
LAMP=Linux Apache Mysql/MariaDB PHP/Perl/Python 这些软件都是开源免费的软件,几个
程序各自是独立的,经常为了达到我们需要的效果而协同工作,组成了我们常见的 LAMP 架构平台!
LAMP 是世界上最流行的组合,当然同时也有 Nginx,也就是 LNMP: LAMP 相对于 Nginx 来说较为
安全,但是 Nginx 处理高并发比 Apache 要强,Nginx 相对于 LAMP 来说安全较为差一点,同样的配
制环境负载远远高于 LAMP 。国内的一些大公司,淘宝、新浪都在使用 Nginx,像那么大的公司网站需
要用到服务器群用 LAMP 搭建环境成本远远大于 Nginx。打个比方本来 1000W 访问量需要 10 台
LAMP 环境服务器才能完成,但是使用 Nginx 也许只需要 5、6 台,这样一来对于这样的公司来说就大
大的节约了成本。
从网站的流量上来说,70%以上的访问流量是 LAMP 来提供的,LAMP 是最强大的网站解决方案,
在以前这句话没有错,但是在现在,这句话有待证实!!!因为在以后的过程中,会发现我们会使用的架构
是 Nginx 和 Apache 结合使用:使用 Nginx 可以做集群等相关配置,可以和 Apache 一起使用,有的
会用 Apache 去跑 php,然后用 Nginx 做反向代理,比如 Apache 运行在 8080 端口,Nginx 在 80
端口,访问 php 文件时,反向代理到 Apache,静态页通过 Nginx 处理。Nginx 支持高并发,Apache
对 php 的运行比较稳定。

https://news.netcraft.com/archives/2020/  每月更新

Apache 工作原理:

Apache 本身只处理 html 静态语言页面,当客户端需要访问 php 页面的时候,Apache 会调用libphp5.so 这个模块去工作,这个模块会把 php 页面转换成 html 静态页面,让 Apache 处理,Apache 处理过,会返回给客户端

LAMP 相关网站
Apache=http://httpd.apache.org/ #httpd 主程序包
MySQL=http://dev.mysql.com/downloads/mysql/ #mysql 主程序包
PHP=http://php.net/downloads.php #php 主程序包
apr= https://mirror.bit.edu.cn/apache/apr/ #apr 是 httpd 的依赖包
apr-util= https://mirror.bit.edu.cn/apache/apr/ #apr-util 是 httpd 的第二个依赖包

apr 和 apr-util 这个两个软件是对后端服务软件进行优化的.
apr-util 只是在 apr 的基础上提供了更多的数据结构和操作系统封装接口而已。
pcre 是 httpd 的第三个依赖包 https://ftp.pcre.org/pub/pcre/
PCRE(Perl Compatible Regular Expressions 中文含义:perl 语言兼容正则表达式)是一个用 C语言编写的正则表达式函数库,PCRE 被广泛使用在许多开源软件之中,最著名的莫过于 Apache HTTP服务器和 PHP 脚本语言、R 脚本语言,此外,正如从其名字所能看到的,PCRE 也是 perl 语言的缺省正则库。

Apache 官网
http://httpd.apache.org/

安装和配置 LAMP

需要源码编译安装的软件包

httpd-2.4.46.tar.gz #Apache 主程序包
apr-1.7.0.tar.gz  #Apache 依赖包
apr-util-1.6.1.tar.gz #Apache 依赖包
pcre-8.44.tar.gz  #Apache 依赖包
php-7.2.31.tar #php 主程序包
mysql-5.7.30.tar.gz #mysql 主程序包

下载源码安装包
https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.46.tar.gz
https://mirror.bit.edu.cn/apache/apr/apr-1.7.0.tar.gz
https://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz

准备环境
yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel

编译安装依赖包 apr
tar xf apr-1.7.0.tar.gz -C /usr/local/src/
cd /usr/local/src/apr-1.7.0/
./configure --prefix=/usr/local/apr
echo $?   结果为0正常,非0不正常
make -j 4 && make install && cd
最后添加&& cd 命令可以自动验证编译是否成功并切换目录。如果未切换目录则编译存在问题。

编译安装依赖包 apr-util
tar xf apr-util-1.6.1.tar.gz -C /usr/local/src/
cd /usr/local/src/apr-util-1.6.1/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
echo $? 
make -j 4 && make install && cd

如果执行 make 报错:
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
解决办法:yum install expat-devel

编译安装依赖包 pcre
tar xf pcre-8.44.tar.gz -C /usr/local/src/
cd /usr/local/src/pcre-8.44/
./configure --prefix=/usr/local/pcre
echo $?
make -j 4 && make install && cd

编译安装 Apache
tar zxvf httpd-2.4.46.tar.gz -C /usr/local/src/
cd /usr/local/src/httpd-2.4.46/
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=event
echo $?
make -j 4 && make install && cd
选项说明:
--prefix=/usr/local/apache #安装路径
--enable-so #支持动态加载模块
--enable-rewrite #支持网站地址重写
--enable-ssl #支持 SSL 加密
--with-pcre=/usr/local/pcre #pcre 路径
--with-apr=/usr/local/apr #apr 路径
--with-apr-util=/usr/local/apr-util #apr-util 路径

/usr/local/apache/bin/apachectl -V 查看版本信息
cat /usr/local/apache/build/config.nice 查看配置信息
配置文件
ls /usr/local/apache/conf/httpd.conf
网站根目录
ls /usr/local/apache/htdocs/
生成启动脚本
cp /usr/local/apache/bin/apachectl /etc/init.d/
chmod +x /etc/init.d/apachectl
写个 Apache 系统服务脚本, 以 754 的权限保存此文件
vim /usr/lib/systemd/system/apache.service

[Unit]
Description=apache
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/apachectl start
ExecReload=/etc/init.d/apachectl restart
ExecStop=/etc/init.d/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /usr/lib/systemd/system/apache.service
参考文章https://www.cnblogs.com/q149072205/p/11541693.html
启动服务
systemctl enable apache
systemctl start apache.service
修改 Apache 的运行用户
默认是 daemon 用户运行的进程

单独创建一个用户来运行服务
useradd -M -s /sbin/nologin -u 1080 apache
vim /usr/local/apache/conf/httpd.conf
改User和Group 默认 daemon 为 apache


systemctl restart apache
chown -R apache:apache /usr/local/apache/
测试访问
curl 192.168.0.60

安装并配置 MySQL 数据库

官方下载 MySQL 数据库
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
选择 5.7.30 版本 Red Hat 64 位操作系统

选择 tar 包存档的二进制版本


卸载系统自带的 mysql
yum -y remove mysql mariadb-*
添加 mysql 用户
useradd -M -s /sbin/nologin -u 3000 mysql
解压 mysql
tar xf mysql-5.7.31-el7-x86_64.tar.gz
mv mysql-5.7.31-el7-x86_64 /usr/local/mysql
创建 mysql 用于存放数据的目录
mkdir -p /data/mysql
创建日志文件
touch /var/log/mysqld.log
在生产环境中,安装数据库之前,需要规划好数据存储的目录
这个目录最好是一块单独的分区或者磁盘,做成 raid 或者 LVM,方便日后磁盘的维护和扩容
对于读写比较频繁的业务,可以采用 SSD 等转速高的磁盘

更改目录权限为 mysql
chown -R mysql:mysql /usr/local/mysql/
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /var/log/mysqld.log
创建 mysql 配置文件
vim /etc/my.cnf

[client]
port = 3306
socket = /data/mysql/mysql.sock
[mysqld]
port = 3306
user = mysql
socket = /data/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql
log-error=/var/log/mysqld.log

[client]
client 配置会被 client 客户端应用读取

添加环境变量
vim /etc/profile.d/mysql.sh

MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

使环境变量生效
source /etc/profile
初始化数据库
cd /usr/local/mysql/
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
出现报错
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决办法:yum install -y libaio
执行完成后 mysql 会生成临时随机密码
grep password /var/log/mysqld.log

配置 mysql 开机自启动
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld

0 系统停机模式,系统默认运行级别不能设置为 0,否则不能正常启劢,机器关的
1 单用户模式,root 权限,用于系统维护,禁止远程登陆,就像 Windows 下的安全模式登录
2 多用户模式,没有 NFS 和网络支持
3 完整的多用户文本模式,有 NFS 和网络,登陆后进入控制台命令行模式
4 系统未使用,保留一般不用
5 图形化模式,登陆后进入图形 GUI 模式。
6 重启模式,默认运行级别不能设为 6,否则不能正常启劢。运行 init 6 机器就会重启

启动 mysql 数据库
/etc/init.d/mysqld start
grep password /var/log/mysqld.log
mysql -uroot -p'URB!Pgyi+3s%'
set password for root@localhost = password('123456');
flush privileges;
exit

运行安全初始化脚本
mysql_secure_installation

安装validate 密码强度检测插件

选择强密码

修改当前密码,强密码需要满足大小写、特殊字符、数字三个要求

继续使用新设置的强密码Test123456!

移除匿名用户

禁止 root 用户远程登录,如果生产环境需要远程登录我们后期可以手动授权。

删除 test 数据库(test 是 mysql 自动安装的测试数据库)

刷新权限表

Success.
All done!

源码编译安装 php7.2

官网地址:http://php.net/
php7.2.31 程序包下载地址wget https://www.php.net/distributions/php-7.2.31.tar.gz
安装 epel 源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
如果扩展源不能用,用本地 yum 源
安装所需依赖包
yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c php-pear
tar xf php-7.2.31.tar.gz -C /usr/local/src/
cd /usr/local/src/php-7.2.31/
./configure --prefix=/usr/local/php/ \
--with-apxs2=/usr/local/apache/bin/apxs \
--enable-mbstring \
--with-curl \
--with-gd \
--enable-fpm \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-config-file-path=/usr/local/php/etc/ \
--with-mysqli=mysqlnd \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--enable-maintainer-zts
echo $?
报错
checking for cURL 7.10.5 or greater... configure: error: cURL version 7.10.5 or later is required to compile php with cURL support
解决办法:yum -y install curl-devel
Php 配置选项中文手册 http://php.net/manual/zh/configure.about.php
参数注释:
--with-apxs2 #将 php 编译为 Apache 的一个模块进行使用
--enable-mbstring #多字节字符串的支持
--with-curl  #支持 cURL
--with-gd #支持 gd 库
--enable-fpm #支持构建 fpm
--enable-mysqlnd #启用 mysqlnd
--with-pdo-mysql #支持 pdo:MySQL 支持
--with-config-file-path #设置配置文件路径
--with-mysqli #支持 MySQLi
--with-mysql-sock #关联 mysql 的 socket 文件
--enable-maintainer-zts #如果 Apache 是 event 模型,那需要指定 zts

编译
make -j 4
echo $?
安装
make install
echo $?
生成配置文件
cp php.ini-production /usr/local/php/etc/php.ini
编辑 Apache 的配置文件,支持 php 的文件
vim /usr/local/apache/conf/httpd.conf

在 393 行这块添加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

重启 httpd 服务使配置生效
systemctl restart apache.service
创建测试页面
cd /usr/local/apache/htdocs/
vim index.php
<?php
phpinfo();
?>
http://192.168.0.60/index.php

测试连接 MySQL 是否成功
vim /usr/local/apache/htdocs/mysql.php
 

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "Test123456!";
// 创建连接
$conn = new mysqli($servername, $username, $password);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A:要在CentOS 7.6编译和安装FFmpeg,可以按照以下步骤进行操作: 1. 安装基本工具 首先,需要安装一些基本的工具和库。使用以下命令在CentOS 7.6上安装这些软件包: ``` yum install -y autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel ``` 2. 下载最新的FFmpeg源码 从官方网站 https://ffmpeg.org/download.html 下载最新版本的FFmpeg源码压缩包,并将其解压缩到某个目录中。例如: ``` cd /usr/local/src wget https://ffmpeg.org/releases/ffmpeg-4.3.1.tar.bz2 tar -xjvf ffmpeg-4.3.1.tar.bz2 cd ffmpeg-4.3.1 ``` 3. 配置和编译FFmpeg 使用以下命令在CentOS 7.6上配置和编译FFmpeg: ``` ./configure --enable-shared --disable-static make make install ``` 这将启用共享库,并禁用静态库。如果需要使用其他选项,可以在“configure”命令中添加相应的参数。 4. 配置库路径 最后,在使用FFmpeg时需要将库路径配置到环境变量中。使用以下命令将其添加到“/etc/ld.so.conf.d”目录下的新文件中: ``` echo "/usr/local/lib/" >> /etc/ld.so.conf.d/ffmpeg.conf ldconfig -v ``` 这将添加“/usr/local/lib/”到ld.so.conf文件中,并重新加载库缓存。现在应该可以成功使用FFmpeg了。 以上是在CentOS 7.6编译和安装FFmpeg的步骤。需要注意的是,具体的操作可能会因为系统环境和其他因素而有所不同。在操作时请认真阅读相关文档,并保证操作安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值