由于需要lamp环境又要用源码编译安装,找了些资料东拼西凑踩了很多坑,决定自己写一篇加深记忆。

博主用的是CentOS7;centos8也成功但博主并未测试

源码编译大体步骤

  1. 下载源码包、依赖包
  2. 编译依赖包,再编译所需环境参数
  3. make && make install
  4. 请确保安装lamp前系统未安装过lamp环境

安装apache2.4.1

1、下载依赖环境

 apr-1.5.2:http://archive.apache.org/dist/apr/apr-1.5.2.tar.bz2
 apr-util-1.5.4:http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.bz2
 pcre-8.43:https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
 httpd:http://archive.apache.org/dist/httpd/httpd-2.4.1.tar.gz

2、安装apr

 yum install gcc gcc-c++  -y   #安装编译所依赖的开发环境
 tar -xf apr-1.5.2.tar.bz2    #解压文件
 cd apr-1.5.2
 ./configure --prefix=/usr/local/apr   #make(编译之前)先使用comfigure配置下。首选配置就是指定安装目录
 make && make install

3、安装apr-util

tar -xf apr-util-1.5.4.tar.bz2  
cd apr-util-1.5.4
./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr/
yum install expat-devel  #安装编译所依赖的开发环境
make && make install #编译

4、安装pcre

tar -xf pcre-8.43.tar.gz
cd pcre-8.43
./configure --prefix=/usr/local/pcre
make && make install #编译

5、安装httpd

(1)首先创建组、用户

groupadd -r apache
useradd -r -g apache apache

(2)编译安装httpd

tar -xf httpd-2.4.32.tar.gz
cd httpd-2.4.32
./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
若出现**checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not 
be built due to prerequisite failures** 
没有安装openssl-devel
解决方法:yum install openssl-devel -y
make && make install

(3)配置apache

首先我们vi /etc/httpd/httpd.conf 打开apache的配置文件
1、搜索ServerName www.example.com:80 去掉前面的注释
2、修改apache的组别和用户,找到下面两个修改
User daemon    #修改为apache
Group daemon   #修改为apache
3、【网站目录不改则不用敲下面这条命令】这里自由发挥,按需更改。修改DocumentRoot到/www,以及这一行下面的一句中的<Directory到 /www 目录这个是www的根目录设置,可以随意更改你想要的目录。(更改目录后要将目录的所有者设为apache)
退出保存。--- :wq
chown -R apache:apache /www/  #这里将网站根目录权限设置为apache   按需更改!
4、cp /usr/local/apache/bin/apachectl /etc/init.d/httpd   #将apache启动文件copy到系统启动吧……

(4)关闭防火墙,这里将防火墙直接关闭并取消开机自启

systemctl stop firewall.service
systemctl disable firewall.service

httpd安装成功后我们在/usr/local/apache/bin目录下启动apache

此时可以测试httpd服务,测试之前我们在/www目录下创建好index.html文件,然后启动,在浏览器输入127.0.0.1测试
./apachectl stop #停止
./apachectl start #启动
./apachectl restart #重新启动

apache安装完成

安装mysql5.6.25

1、下载和安装

wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.25.tar.gz
yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio
yum install libaio libaio-devel -y
yum install perl-Data-Dumper -y
yum install net-tools -y
安装前请将 /etc/my.cnf文件删除,否则该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
tar -xf mysql-5.6.25.tar.gz
cd mysql-5.6.25

[root@localhost mysql-5.6.25]#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/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

至此mysql编译完成
mysql配置完成.png

make && make install

此时mysql已经安装成功

2、配置mysql

检查系统是否已经有mysql用户,如果没有则创建
[root@localhost mysql-5.6.25]# cat /etc/passwd | grep mysql
[root@localhost mysql-5.6.25]# cat /etc/group | grep mysql
创建mysql用户(但是不能使用mysql账号登陆系统)
[root@localhost mysql-5.6.25]# groupadd mysql
[root@localhost mysql-5.6.25]# useradd mysql -s /sbin/nologin
[root@localhost mysql-5.6.25]# useradd -r -g mysql mysql
修改权限
[root@localhost mysql-5.6.25]# chown -R mysql:mysql /usr/local/mysql

此时mysql安装完毕
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表。

[root@localhost mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!

注意:在CentOS 7版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。

启动mysql

添加服务,拷贝服务脚本到init.d目录,并设置开机启动

[root@localhost mysql] cp support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql] chkconfig mysql on
[root@localhost mysql] service mysql start #启动MySQL

查看mysql是否启动成功

[root@localhost mysql]# netstat -lntp | grep 3306

如果mysql没有启动成功,到目录/usr/local/mysql/data下查看错误日志

[root@localhost data]# tail localhost.localdomain.err (localhost.localdomain是主机名)

如果没有生成日志目录,则mysql安装没有成功(再重新编译安装一次)

重启mysql

首先杀死mysql进程

[root@localhost 3306] pkill mysqld

然后检查是否已经杀死mysql进程

[root@localhost 3306] netstat -lntp | grep 3306

此时shell没有任何输出,表明已经杀死了mysql进程

然后重启mysql并再次检查是否启动成功

[root@localhost 3306] service mysql start
[root@localhost 3306] netstat -lntp | grep 3306

已经启动了,我们登陆mysql,在/usr/local/mysql/bin目录下

[root@localhost bin] ./mysql   #登陆到mysql
mysql>

由于此时的mysql是没有密码的,所以我们现在设置一个root密码,下面的123456就是更改的root密码

mysql>grant all privileges on *.* to root@localhost identified by '123456';  
# 此时设置root账户密码并且全局 *.* 前面的*代表的是数据库名,后面的*代表的是表名,一般创建只需设置数据库名即可。
mysql>Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>flush privileges;  #更新数据库使更改生效
mysql>Query OK, 0 rows affected (0.01 sec)

此时,mysql5.6.25在CentOS7.6上完全安装并配置

安装php5.6.37

1、解决依赖关系

yum -y install bzip2-devel libmcrypt-devel libxml2-devel
安装libmcrypt-devel 需要配置epel源
rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
yum clean all
yum makecache
yum install php-mcrypt libmcrypt libmcrypt-devel libxml2-devel openssl-devel libcurl-devel libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 libjpeg-turbo-devel libmcrypt-devel mysql-devel -y  #安装必要组件

2、安装php

wget https://www.php.net/distributions/php-5.6.37.tar.bz2
tar -xf php-5.6.37.tar.bz2
cd php-5.6.37
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
make && make install

3、修改配置

cp php.ini-production /etc/php.ini
vim /etc/httpd/httpd.conf  #修改apache配置文件,将.php 加入解析。
<IfModule unixd_module>
...
User apache
Group apache
...
</IfModule>
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mime_module>
...    
AddType application/x-httpd-php  .php
...
</IfModule>

重新启动httpd

# service httpd restart

测试php是否解析
(4)编写测试代码在/www下

测试页面index.php示例如下:
<?php
  $link = mysql_connect('127.0.0.1','root','123456');
  if ($link)
    echo "mysql connected success.";
  else
    echo "mysql connected faild.";
  mysql_close();
  phpinfo();
?>

此时数据库连接成功,并且输出phpinfo。
测试成功.png

此时lamp安装结束。

Last modification:August 12th, 2020 at 01:03 am