Centos7 源码编译安装LAMP详细操作步骤

前言:

需要准备的安装包以及下载地址(只是一个大概地址,版本和下载方式需要自行选择):
Apache  http://httpd.apache.org/   httpd主程序包(http server)
MySQL  https://dev.mysql.com/downloads/mysql/  mysql主程序包
PHP       https://php.net/downloads.php  php主程序包
apr和apr-util  http://apr.apache.org/  apr和apr-util都是httpd的依赖包
pcre    http://pcre.org/  httpd的依赖包
boost  https://www.boost.org/users/download/  mysql5.7版本必须的依赖包
其中apr和apr-util是对后端服务软件进行优化的。apr-util只是在apr的基础上提供了更多的数据结构和操作系统封装接口而已。而pcre全称Perl Compatible Regular Expressions,是使用C语言编写的正则表达式函数库,被广泛运用到许多开源软件中。
注意:Apache2.4.7及以上版本需要apr1.5.0或以上版本。

(1).准备安装环境
  安装编译工具和开发包(依赖包)

[root@youxi1 ~]# yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel

上传下载好的源代码包。我使用的是如下版本:apr-1.6.3.tar.gz、apr-util-1.6.3.tar.gz、boost_1_59_0.tar.gz、httpd-2.4.57.tar.gz、mysql-5.7.43.tar.gz、pcre-8.0.30.tar.gz、php-8.0.30.tar.gz。

(2).编译安装apr和apr-util
编译安装apr

[root@localhost apr-1.6.3]# cd
[root@localhost ~]# tar zxf apr-1.6.3.tar.gz -C  /usr/local/src/      //解压地址是约定俗成的,并不是必须解压到这个位置
[root@localhost apr-1.6.3]# cd /usr/local/src/apr-1.6.3/
[root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr    //指定程序存放路径,不存在时会自动创建
[root@localhost apr-1.6.3]# make && make install
[root@localhost apr-1.6.3]# echo $?  //如果返回0则正确安装
0

注意:如果没有指定 --prefix,那么可执行文件默认放在 /usr /local/bin,库文件默认放在 /usr/local/lib,配置文件默认放在 /usr/local/etc,其它的资源文件放在 /usr /local/share。

回到上传压缩包的地址,编译安装apr-util

[root@localhost apr-1.6.3]# cd 
[root@localhost ~]# tar zxf apr-util-1.6.3.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/apr-util-1.6.3/
[root@localhost apr-util-1.6.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
[root@localhost apr-util-1.6.3]# make && make install
[root@localhost apr-util-1.6.3]# echo $?
0

注意:apr-util需要指定apr中的一个配置文件bin/apr-1-config。

 (3).编译安装pcre
回到上传压缩包的地址,编译安装pcre

[root@localhost apr-util-1.6.3]#cd
[root@localhost ~]# tar zxf pcre2-10.42.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/pcre2-10.42/
[root@localhost pcre2-10.42]# ./configure --prefix=/usr/local/pcre
[root@localhost pcre2-10.42]# !make  //调用最近一次make开头的命令
[root@localhost pcre2-10.42]# echo $?
0

(4).编译安装Apache
a.回到上传压缩包的地址,编译安装Apache

a.回到上传压缩包的地址,编译安装Apache
[root@localhost pcre2-10.42]# cd
[root@localhost ~]# tar zxf httpd-2.4.37.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/httpd-2.4.37/
[root@localhost httpd-2.4.57]# ./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
[root@localhost httpd-2.4.57]# make && make install
[root@localhost httpd-2.4.57]# echo $?
0

参数说明:
  --prefix=/usr/local/apache  安装路径
  --enable-so  支持动态加载模块
  --enable-rewrite  支持网站地址重写
  --enable-ssl  支持ssl加密
  --with-apr=/usr/local/apr  指定apr路径
  --with-apr-util=/usr/local/apr-util  指定apr-util路径
  --with-pcre=/usr/local/pcre  指定pcre路径
  --enable-modules=most  选择要编译的模块
  --enable-mpms-shared=all  支持当前平台上的动态加载的所有MPM,并将它们构建为DSO模块。
  --with-mpm=event  选择默认的MPM
注意:此时的配置文件是/usr/local/apache/conf/httpd.conf,默认网站根目录是/usr/local/apache/htdocs/。
说明:MPM,中文多处理模块,可以构建为动态加载的DSO或与服务器静态链接。


b.启动apache

[root@localhost httpd-2.4.57]# /usr/local/apache/bin/apachectl start 
//启动时Apache产生警告
//AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
//解决办法:
将 apache 的配置文件httpd.conf中的 ServerName 改成可用域名或如下配置,大概在/usr/local/apache/conf文件199行
ServerName localhost:80
[root@localhost httpd-2.4.57]# ps aux | grep httpd       //使用进程查看命令确认Apache是否启动,是否产生进程
[root@localhost httpd-2.4.57]# netstat -tlun | grep :80  //使用网络进程查看命令确认Apache是否启动,是否开启了80监听端口
c.浏览器输入访问 http://服务器ip,若显示“It works”即表明Apache正常工作
linuxc测试:
[root@localhost conf]# curl 192.168.71.137
<html><body><h1>It works!</h1></body></html>

 (5).编译安装mysql
1)卸载系统自带的mysql和mariadb,还有boost(这是Mysql5.7版本以后必须的)

[root@localhost httpd-2.4.57]# yum -y remove mysql* mariadb* boost-*

2)安装依赖包

[root@localhost httpd-2.4.57]# yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel

3)添加系统用户mysql

[root@localhost httpd-2.4.57]#  useradd -M -s /sbin/nologin -r mysql  //-M不创建主目录,-s /sbin/nologin不允许登录,-r创建系统用户

网上好多都是先groupadd mysql,然后再useradd -M -s /bin/false -r -g mysql mysql,一开始没找到原因,后来发现原来官网是这么写的。
扩展:/bin/false是最严格的禁止登录。而/sbin/nologin只是不允许系统登录,但是可以使用ftp等其他服务登录。mysql官网使用的就是/bin/false。

4)回到上传压缩包的地址,编译安装mysql

[root@localhost httpd-2.4.57]# cd
[root@localhost ~]# tar zxf boost_1_59_0.tar.gz -C /usr/local/src/  //解压boost
[root@localhost ~]# tar zxf mysql-5.7.43.tar.gz -C /usr/local/src/  //解压mysql
[root@localhost ~]# mkdir -p /var/lib/mysql/data  //准备安装目录/var/lib/mysql和数据目录/var/lib/mysql/data
[root@localhost ~]# chown -R mysql.mysql /var/lib/mysql/  //更改目录所属主和所属组
[root@localhost ~]# cd /usr/local/src/mysql-5.7.43/
[root@localhost mysql-5.7.43]# cmake -DCMAKE_INSTALL_PREFIX=/var/lib/mysql \
-DMYSQL_DATADIR=/var/lib/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/boost_1_59_0
[root@localhost mysql-5.7.43]# make -j 4 && make install  //-j [CPU核心数]多线程编译
[root@localhost mysql-5.7.43]# echo $?
0

参数说明:
  DCMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql
  DMYSQL_DATADIR:指定MySQL程序的数据目录
  DSYSCONFDIR:初始化参数文件目录
  DWITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM,MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。
  DWITH_READLINE:使用readline功能
  DMYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock
  DMYSQL_TCP_PORT:服务端口号,默认3306
  DENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF
  DEFAULT_CHARSET:指定服务器默认字符集,默认latin1
  DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci
  DWITH_BOOST:指定boost的地址
  DWITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎
  DWITH_COMMENT:指定编译备注信息

5)创建并编辑一个配置文件my.cnf:

[root@localhost mysql-5.7.43]# cat /etc/my.cnf
[mysqld]
basedir=/var/lib/mysql
datadir=/var/lib/mysql/data
port=3306
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld.pid
explicit_defaults_for_timestamp=true
[mysql]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock

6)配置环境变量,并刷新

[root@localhost mysql-5.7.43]# vim /etc/profile.d/mysql.sh
export PATH=/var/lib/mysql/bin:$PATH
[root@localhost mysql-5.7.43]# . /etc/profile.d/mysql.sh  //两种刷新方式,也可以source /etc/profile.d/mysql.sh

7)生成启动脚本。

[root@localhost mysql-5.7.43]# cp /var/lib/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.7.43]# chmod +x /etc/init.d/mysqld

8)安装完mysql还需要修改安装目录的所属主和所属组

[root@localhost mysql-5.7.43]# chown -R mysql:mysql /var/lib/mysql

9)接着就是初始化数据库,并启动mysql

[root@localhost mysql-5.7.43]# /var/lib/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data
[root@localhost mysql-5.7.43]# /etc/init.d/mysqld start
//报错了,提示没有这个文件 /var/log/mysqld.log 的访问权限,需要新创建mysqld.log文件,并授权
2023-08-24T07:36:15.697849Z 0 [ERROR] Could not open file '/var/log/mysqld.log' for error logging: Permission denied
[root@localhost mysql-5.7.43]# touch /var/log/mysqld.log
[root@localhost mysql-5.7.43]# chown -R mysql:mysql /var/log/mysqld.log
[root@localhost mysql-5.7.43]# /etc/init.d/mysqld start  //重新启动
Starting MySQL. SUCCESS!

10)此时的mysql是没有密码直接可以登录的,使用mysql_secure_installation安全设置初始化
 

[root@localhost mysql-5.7.43]# mysql_secure_installation
Set root password? [Y/n]                      - 为root用户设置密码
Remove anonymous users? [Y/n]                 - 删除匿名账号
Disallow root login remotely? [Y/n]           - 取消root用户远程登录
Remove test database and access to it? [Y/n]  - 删除test库和对test库的访问权限
Reload privilege tables now? [Y/n]            - 刷新授权表使修改生效

11)用root用户的身份进入数据库,输入自己设置的密码 admin123 

[root@localhost mysql-5.7.43]# mysql -uroot -padmin123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.43 Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

(6).编译安装php
1)安装依赖包,需要epel源
 

[root@localhost mysql-5.7.43]# 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 sqlite-devel

2)回到上传压缩包的地址,编译安装php 

[root@localhost mysql-5.7.19]# cd
[root@localhost ~]# tar zxf php-8.0.30.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/php-8.0.30/
[root@localhost php-8.0.30]# ./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
//编译时报oniguruma错,需要下载相关软件包,网址:https://pkgs.org/download/oniguruma5php、https://pkgs.org/download/oniguruma5php-devel
[root@localhost php-8.0.30]# yum -y install https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.8-1.el7.remi.x86_64.rpm
[root@localhost php-8.0.30]# yum -y install https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.8-1.el7.remi.x86_64.rpm

再次编译
[root@localhost php-8.0.30]# ./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
[root@localhost php-8.0.30]# make -j 4 && make install
[root@localhost php-8.0.30]# echo $?
0

编译时报oniguruma错,需要下载相关软件包,如果软件包链接失效,可以通过Oniguruma5phpOniguruma5php-devel获取对应的Binary Package。

 

 参数说明:
  --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

3)生成配置文件

[root@localhost php-8.0.30]# cp php.ini-production /usr/local/php/etc/php.ini

4)修改Apache的配置文件,使其支持php,并重启Apache 

[root@localhost php-8.0.30]# vim /usr/local/apache/conf/httpd.conf
AddType application/x-httpd-php .php  //大概在393行
AddType application/x-httpd-php-source .phps
[root@localhost php-8.0.30]# systemctl restart apache.service

 5)测试
创建测试界面

[root@localhost php-8.0.30]# vim /usr/local/apache/htdocs/index.php
<?php
        phpinfo();
?>

访问成功! 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值