LAMP环境中php是作为apache的模块安装的,所以安装顺序是php放在apache的后面安装,这样便于安装php时可以在apache的模块目录生成对应的php模块。

apache版本:2.4.37

mysql版本:5.7.24

php版本:7.3.0

nginx版本:nginx-1.14.2

注意:这里是使用的root用户安装,如果是其他用户,相应的操作前需要加上sudo。

1、安装apache

需要安装的依赖 apr、apt-util、pcre,pcre是一个正则表达式库,apache在路由匹配和路由重写时需要用到。

注意:这里不要使用pcre2,否则编译apache时会报错。

下载软件源码压缩包并解压

cd /usr/local/src
wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.37.tar.gz
wget http://mirrors.hust.edu.cn/apache/apr/apr-1.6.5.tar.gz
wget http://mirrors.hust.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar -zxvf httpd-2.4..tar.gz
tar -zxvf apr-1.6..tar.gz
tar -zxvf apr-util-1.6..tar.gz
tar -zxvf pcre-8.42.tar.gz

将apr-1.6.5重命名为apr并移动到apache的源码包的srclib目录中

将apr-1.6.5重命名为apr并移动到apache的源码包的srclib目录中

mv apr-1.6. httpd-2.4./srclib/apr
mv apr-util-1.6. httpd-2.4./srclib/apr-util

编译安装pcre

cd pcre-8.42
./configure --prefix=/usr/local/pcre-8.42
make && make install

编译安装apache

cd /usr/local/src/httpd-2.4.
./configure --prefix=/usr/local/apache --with-pcre=/usr/local/pcre-8.42 --with-included-apr
make && make install

注:如果make过程报 fatal error: expat.h: No such file or directory,运行 yum install -y expat-devel 安装expat,然后重新执行以上操作,如果还报错,先执行make distclean后重新执行以上操作。

启动apache

/usr/local/apache/bin/apachectl start

这里会出现错误提示信息,是因为没有配置虚拟主机的缘故,这里忽略它。

在浏览器中访问本机ip,如果是虚拟机则需要使用虚拟机的ip地址

显示It works! 代表启动成功,apache安装完成。

2、安装mysql

准备工作(安装依赖、新建用户和目录)

yum install -y cmake gcc-c++ ncurses-devel perl-Data-Dumper
groupadd mysql
useradd -s /sbin/nologin -g mysql mysql
mkdir -p /home/mysql/{data,log}
mkdir /home/mysql/log/error.log
chown -R mysql:mysql /home/mysql

下载并解压mysql源码压缩包

cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24.tar.gz
tar -zxvf mysql-5.7..tar.gz

进入mysql源码包目录

cd /usr/local/src/mysql-5.7.

执行cmake

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql/data \
-DSYSCONFDIR=/etc \
-DENABLED_LOCAL_INFILE= \
-DENABLE_DOWNLOADS= \
-DWITH_ARCHIVE_STORAGE_ENGINE= \
-DWITH_PARTITION_STORAGE_ENGINE= \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST= \
-DWITH_BOOST=/usr/local/boost

执行make

make

这里需要等待很长的时间,可能由于电脑性能和在虚拟机里面的原因,我这里等了将近三个小时,然后安装

make install

安装完成后将mysql的bin目录加入环境变量

echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

接下来初始化数据库数据目录

mysqld --initialize --user=mysql

注意:这里终端会输出root的初始密码,把它记录下来。

接下来配置一下/etc/my.cnf

[client]
port=
socket=/tmp/mysql.sock [mysqld]
port=
basedir=/usr/local/mysql
datadir=/home/mysql/data
log_error=/home/mysql/log/error.log
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M [mysqldump]
quick

上面只列出了基本的配置项,更多配置项请查看官方文档。配置项根据自己的机器做好调整。

然后将启动脚本添加到服务中,实现开机自启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld

接下来启动mysqld

service mysqld start

mysqld服务启动起来以后,连接mysqld服务,修改root初始密码

mysql -uroot -p
输入密码进入mysql命令行
alter user 'root'@'localhost' identified by '新密码';

mysql安装配置完成。

3、安装php

安装libxml2

yum install -y libxml2 libxml2-dev

下载源码压缩包并解压

cd /usr/local/src
wget http://www.zlib.net/zlib-1.2.11.tar.gz
wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz
wget https://download.sourceforge.net/libpng/libpng-1.6.36.tar.gz
wget https://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.gz
wget http://cn2.php.net/get/php-7.3.0.tar.gz/from/this/mirror

安装zlib

tar -zxf zlib-1.2..tar.gz
cd zlib-1.2.
./configure #这里不要加安装路径,否则后面安装libpng时会找不到zlib
make && make install

安装libpng

tar -zxf libpng-1.6..tar.gz
cd libpng-1.6.
./configure --prefix=/usr/local/libpng
make && make install

安装jpeg

tar -zxf jpegsrc.v9c.tar.gz
cd jpeg-9c
./configure --prefix=/usr/local/jpeg --enable-shared
make && make install

安装freetype

tar -zxf freetype-2.4..tar.gz
cd freetype-2.4.
./configure --prefix=/usr/local/freetype2
make && make install

接下来进入php源码目录编译安装

tar -zxvf mirror
cd php-7.3.0
./configure --prefix=/usr/local/php --enable-fpm --with-apxs2=/usr/local/apache/bin/apxs --with-mysqli --with-pdo-mysql --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype2 --with-gd --with-config-file-path=/usr/local/etc/php --with-config-file-scan-dir=/usr/local/etc/php/conf.d
make && make install

注:配置文件位置编译选项说明

--with-config-file-path=/usr/local/etc/php               将php.ini文件的读取目录设为/usr/local/etc/php
--with-config-file-scan-dir=/usr/local/etc/php/conf.d    设置额外的ini配置文件读取目录,此目录一般存放扩展的开启配置文件,如文件swoole.ini内容为extension=swoole

安装成功后会在/usr/local/apache/modules目录下生成一个libphp7.so的模块文件

编辑 httpd.conf 文件以调用 PHP 模块

vi /usr/local/apache/conf/httpd.conf

LoadModule php7_module modules/libphp7.so

先检查是否已经自动生成,没有则手动加入

让apache将扩展名.php解析成php

<FilesMatch \.php$>

  SetHandler application/x-httpd-php

</FilesMatch>

这里我们指定的php的配置文件目录为/usr/local/etc/php,也可以在httpd.conf文件中用PHPIniDir指令指定,如:PHPIniDir /etc/php.ini

从php源码包复制配置文件到我们指定的配置文件目录

cp /usr/local/src/php-7.3./php.ini-development /usr/local/etc/php/php.ini

新建php文件测试

rm -rf /usr/local/apache/htdocs/index.html
echo "<?php phpinfo(); ?>" > /usr/local/apache/htdocs/index.php

重启apache

/usr/local/apache/bin/apachectl restart

在浏览器中访问http://主机ip/index.php,显示phpinfo()的内容代表配置正确。

LAMP环境到此搭建完成。

4、安装nginx

下载源码压缩包并解压

cd /usr/local/src
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zxvf nginx-1.14..tar.gz

进入源码包目录进行编译前的准备工作

cd nginx-1.14.
./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/src/pcre-8.42

注意:pcre的路径为源码包的路径

编译和安装

make && make install

完成以后,先检查apache是否在启动状态

ps aux | grep httpd

如果apache在启动状态则先将其退出

/usr/local/apache/bin/apachectl stop

启动php-fpm

新建用户用于启动php-fpm

groupadd www-data
useradd -s /sbin/nologin -g www-data www-data

修改php-fpm配置文件

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp /usr/local/php/sbin/php-fpm /usr/local/bin
vi /usr/local/php/etc/php-fpm.d/www.conf

找到以下内容并修改

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data

然后启动php-fpm

php-fpm

配置nginx使其支持php应用

vi /usr/local/nginx/conf/nginx.conf

修改默认的 location 块,使其支持 .php 文件

location / {
root html;
index index.php index.html index.htm;
}

下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块,取消默认的 PHP 配置块的注释,并修改为下面的内容:

location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}

启动nginx

/usr/local/nginx/sbin/nginx 

创建测试文件

rm -rf /usr/local/nginx/html/index.html
echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php

在浏览器中访问http://主机ip,显示phpinfo()的内容代表配置成功。

到这里LA(N)MP环境搭建完成。

Centos7.2源码编译安装LA(N)MP的更多相关文章

  1. CentOS7.6源码编译安装PHP 7.3.8

    安装步骤 PHP官网下载链接:https://www.php.net/downloads.php 1. 使用wget命令下载源码安装包 wget https://www.php.net/distrib ...

  2. Centos7.X 源码编译安装subversion svn1.8.x

    说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...

  3. CentOS7.5源码编译安装mysql5.7.29

    #查看系统版本 [root@ctos3 ~]# cat /etc/redhat-release CentOS Linux release (Core) #下载源码包,需要注意的是mysql5.7 编译 ...

  4. Centos7下源码编译安装python3.6

    测试环境: 操作步骤: 1. 下载Python源码包(python3.6.0) 官网下载地址:https://www.python.org/downloads/ 搜狐下载地址:http://mirro ...

  5. centos7.2 源码编译安装php7.2.4 apache2.4.37 https证书安装

    一.php7.2.11源码安装 1.下载php7.2.11 wget http://cn2.php.net/downloads.php/php-7.2.11.tar.gz#### 2.安装依赖 yum ...

  6. Centos7.5 源码编译安装PHP

    安装依赖 yum -y install epel-release yum -y install  gcc gcc-c++ make pcre pcre-devel zlib zlib-devel op ...

  7. Centos7下源码编译安装与配置redis5.0

    1.下载redis5.0源码包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2.检查是否安装过之前的历史版本 rpm -qa|g ...

  8. centos7 源码编译安装TensorFlow CPU 版本

    一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...

  9. Centos7源码编译安装PHP7.2(生产环境)

    安装PHP依赖包,否则在编译的过程中可能会出现各种报错 # Centos 安装epel-release源并将系统包更新到最新版本 $ yum install epel-release-y $ yum ...

随机推荐

  1. js如何往数组Array中添加元素 (2013-09-04 10

    unshift:将参数添加到原数组开头,并返回数组的长度 pop:删除原数组最后一项,并返回删除元素的值:如果数组为空则返回undefined push:将参数添加到原数组末尾,并返回数组的长度 co ...

  2. mysql下突然丢失权限

    mysql  Can't read dir of  今天打开mysql数据库突然报了这个错误 查后发现是表没权限,进行了mysql的data目录权限修改 1.show global variables ...

  3. [TJOI2017]城市 【树的直径+暴力+优化】

    Online Judge:Luogu P3761 Label:树的直径,暴力 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有n座城市,n-1条高速公路,保证了 ...

  4. day66作业

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 初识类(class&struct)及C/C++封装的差异

    初识类(class&struct) 面向对象三大特性:封装.继承和多态.其中不得不谈的就是类,通过类创建一个对象的过程叫实例化,实例化后使用对象可以调用类成员函数和成员变量,其中类成员函数称为 ...

  6. Neo4j Desktop 管理工具的安装和应用

    安装和启动Neo4j桌面 如果您还没有,请下载 Neo4j.使用提供的说明(下载时显示),按照步骤1安装并启动Neo4j Desktop应用程序.下载页面上的步骤2说明向您展示了如何设置您的第一个项目 ...

  7. 嘴巴题1 LA2531 足球联赛

    LA2531 足球联赛 题目: 有n只队伍打比赛,给出每只队目前获胜和失败的场数,再给出两两队伍接下来的比赛场次,问你哪些队伍可能的冠军 (题面摘自http://blog.csdn.net/s_h_r ...

  8. Luogu P2486 [SDOI2011]染色(树链剖分+线段树合并)

    Luogu P2486 [SDOI2011]染色 题面 题目描述 输入输出格式 输入格式: 输出格式: 对于每个询问操作,输出一行答案. 输入输出样例 输入样例: 6 5 2 2 1 2 1 1 1 ...

  9. Leetcode551.Student Attendance Record I学生出勤记录1

    给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个学生的出勤纪录中不超过一个' ...

  10. 跟我一起做一个vue的小项目(APPvue2.5完结篇)

    先放一下这个完结项目的整体效果 下面跟我我一起进行下面项目的进行吧~~~ 接下来我们进行的是实现header的渐隐渐显效果,并且点击返回要回到首页 我们先看效果 在处理详情页向下移动过程中,heade ...