源码编译安装部署LAMP平台(LAMP平台与编译安装详解,Apache,MySQL与PHP源码编译安装,LAMP平台搭建论坛)

小编:啊南 219阅读 2020.11.30

Linux操作系统之所以能够在十余年的时间里发展壮大以至于风靡全球,其开放源代码的特性是很重要的原因之一,及Linux操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制修改后编译安装。

虽然现代的Linux发行版本大部分采用包管理机制对软件进行打包安装,可以省去软件的编译安装过程,但是还有些情况需要使用源代码编译的方式为系统安装新的应用程序。

L:Linux

A:Apache

M:MySQL

P:PHP

一:LAMP平台与手工编译安装1、LAMP平台概述

LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境

LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言

2、构建LAMP平台顺序

在构建LAMP平台时,各组件的安装顺序依次为Linux,Apache,MySQL,PHP

其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作

3、编译安装的优点

具有较大的自由度,功能可定制 可及时获得最新的软件版本 普遍适用于大多数Linux版本,便于一直使用

二、Apache网站服务源码编译安装1、Apache起源

源于A Patchy Server,著名的开源web服务软件 1955年时,发布Apache服务程序的1.0版本 由Apache软件基金会(ASF)负责维护 最新的名称为“Apache HTTP Server”

2、主要特点

开放源代码,跨平台应用 支持多种网页编程语言 模块化设计,运行稳定,良好的安全性

3、环境准备

VMware软件 centos7操作系统 准备Apache服务的源码包 Apache跨平台组件包准备

4、源码安装 (这里有需要源码包的可以直接私信小编)第一步、解压跨平台组件包和源码包

将跨平台组件包移动到源码包目录下

[root@localhost LAMP-C7]# tar zxvf apr-1.6.2.tar.gz -C /opt
...省略内容
[root@localhost LAMP-C7]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
...省略内容
[root@localhost LAMP-C7]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt
...省略内容
[root@localhost LAMP-C7]# cd /opt
[root@localhost opt]# ls
apr-1.6.2  apr-util-1.6.0  httpd-2.4.29  rh
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/s
server/  srclib/  support/ 
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
[root@localhost opt]# ls httpd-2.4.29/srclib/
apr  apr-util  Makefile.in
第二步、下载环境包
[root@localhost opt]# yum -y install > gcc \			'//编译器'
> gcc-c++ \		'//编译器'
> make \		'//make工具'
> pcre-devel \	 '//支持正则表达式的工具'
> expat-devel \	 '//使网站能解析标签语言的工具'
> perl			'//Perl语言工具'
...省略内容
第三步、configure配置
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ls
...省略内容
ap.d             configure       include         Makefile.in   
...省略内容
[root@localhost httpd-2.4.29]# ./configure > --prefix=/usr/local/httpd \		'//指定路径'
> --enable-so \					   '//开启核心功能模块'
> --enable-rewrite \			    '//开启重写功能,如防盗链保护'
> --enable-charset-lite \			'//开启字符集'
> --enable-cgi					    '//开启通用网关接口'
...省略内容
第四步、make编译和makeinstall
[root@localhost httpd-2.4.29]# make		'//编译'
...省略内容
[root@localhost httpd-2.4.29]# make install  '//安装'
第五步、配置启动脚本
[root@localhost bin]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[root@localhost httpd]# cd bin
[root@localhost bin]# ls
ab            apu-1-config  dbmmanage    fcgistarter   htdigest  httxt2dbm
apachectl     apxs          envvars      htcacheclean  htpasswd  logresolve
apr-1-config  checkgid      envvars-std  htdbm         httpd     rotatelogs
[root@localhost bin]# cp apachectl /etc/init.d/httpd	'//将启动脚本复制到/etc/init.d/初始化脚本文件中,并重命名为httpd'
[root@localhost bin]# cd /etc/init.d/
[root@localhost init.d]# ls
functions  httpd  netconsole  network  README
[root@localhost init.d]# vim httpd 
#!/bin/sh	'//在行首插入下两行内容,并保存退出'
# chkconfig: 35 85 21 	 '//35级别自动运行  第85个启动 第21个关闭'
# description: Apache is a World Wide Web server
#
#...省略内容
[root@localhost init.d]# chkconfig --add httpd 	'//将httpd加入到SERVICE管理器'
第六步、编辑配置文件
[root@localhost init.d]# vim /usr/local/httpd/conf/httpd.conf 
'//搜索ServerName,修改#ServerName www.example.com:80,若使用域名,则必须修改'
    ...省略内容
ServerName www.abc.com:80
	...省略内容
'//搜索Listen,修改#Listen 12.34.56.78:80  Listen 80'
    ...省略内容
Listen 192.168.197.139:80	'//开启IPv4并监听自己的IP地址'
#Listen 80		'//关闭IPv6监听'
	...省略内容
第七步、创建配置文件的软链接
[root@localhost init.d]# ln -s /usr/local/httpd/conf/httpd.conf /etc	'//创建httpd.conf配置文件的软链接到/etc下面'
[root@localhost init.d]# vim /etc/httpd.conf 	'//发现可以通过软链接直接编辑配置文件,方便很多'
[root@localhost init.d]# ln -s /usr/local/httpd/bin/* /usr/local/bin	'//将httpd的命令文件都创建软链接到/usr/local/bin下'
[root@localhost init.d]# ls /usr/local/httpd/bin
ab            apu-1-config  dbmmanage    fcgistarter   htdigest  httxt2dbm
apachectl     apxs          envvars      htcacheclean  htpasswd  logresolve
apr-1-config  checkgid      envvars-std  htdbm         httpd     rotatelogs
[root@localhost init.d]# httpd -t	'//发现httpd可以自动补全,-t检查语法错误'
Syntax OK
第八步、关闭防火墙,开启服务
[root@localhost init.d]# systemctl stop firewalld.service 
[root@localhost init.d]# setenforce 0
[root@localhost init.d]# service httpd start 
[root@localhost init.d]# netstat -ntap | grep 80
tcp        0      0 192.168.197.139:80      0.0.0.0:*               LISTEN      69155/httpd         
[root@localhost init.d]# 
第九步 九九归一 !! 一键部署
#!/bin/bash
ip=www.baidu.com
ping -c 2 -w 3 -i 0.3 $ip &>/dev/null
if  [ $? -eq 0 ]
 then
echo " 可以ping的通百度"
 else
 echo "正在更改你的网卡"
sed -i '/^IPADDR=/cIPADDR=192.168.110.132' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '/^GATEWAY=/cGATEWAY=192.168.110.2' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '/^DNS1=/cDNS1=8.8.8.8' /etc/sysconfig/network-scripts/ifcfg-ens33
echo "网卡配置文件已改完  正在重启网络服务"
systemctl restart network
fi

ping -c 2 $ip &>/dev/null
if [ $? -eq 0 ] ;then
 echo "一切准备就绪"
 else
  echo "请检查你绑定的网卡是不是vm8"
fi

cd ~
cd apache
tar zxvf apr-1.6.2.tar.gz
tar zxvf apr-util-1.6.0.tar.gz
tar jxvf httpd-2.4.29.tar.bz2
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
yum -y install gcc gCc-C++ make pcre-devel expat-devel perl
 if [ $? -eq 0 ];then
 echo "正在下载软件包环境"
 fi
cd httpd-2.4.29
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
if [ $? -eq 0 ];then
 echo "./configure 执行成功"
 else
 echo "凉了"
fi
make
make install
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
sed -i '2a#chkconfig: 35 85 21' /etc/init.d/httpd
chkconfig --add httpd
sed -i '/#ServerName www.example.com:80/cServerName www.shang.com:80' /usr/local/httpd/conf/httpd.conf
sed -i '52s/^/#/' /usr/local/httpd/conf/httpd.conf
sed -i '/#Listen 12.34.56.78:80/cListen 192.168.110.133:80' /usr/local/httpd/conf/httpd.conf
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -S /usr/local/httpd/bin/* /usr/local/bin/
systemctl stop firewalld.service
setenforce 0
service httpd start
if [ $? -eq 1 ] ;then
 echo "成功启动apache"
 else
 echo "完犊子了"
 fi
三:MySQL服务源码编译安装1、MySQL概述

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。 MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。 MySQL是一个真正的多线程,多用户的SQL数据库服务,凭借其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

2、源码编译安装过程第一步、环境准备
[root@localhost htdocs]# yum install ncurses-devel autoconf cmake -y
    '//ncurses-devel是字符终端下屏幕控制的基本库'
    '//autoconf生成可以自动配置软件源代码'
    '//cmake跨平台编译安装工具'
    
...省略内容
[root@localhost mnt]# cd /mnt/LAMP-C7/
[root@localhost LAMP-C7]# ls
apr-1.6.2.tar.gz       Discuz_X2.5_SC_UTF8.zip  LAMP-php5.6.txt      php-5.6.11.tar.bz2
apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2     mysql-5.6.26.tar.gz
[root@localhost LAMP-C7]# tar zxvf mysql-5.6.26.tar.gz -C /opt
[root@localhost LAMP-C7]# cd /opt
[root@localhost opt]# ls
httpd-2.4.29  mysql-5.6.26  rh
[root@localhost opt]# cd mysql-5.6.26/
[root@localhost mysql-5.6.26]# ls
'//发现 cmake 安装成功'
    ...省略内容
第二步cmake配置
[root@localhost mysql-5.6.26]# cmake  > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \		'//指定路径'
> -DDEFAULT_CHARSET=utf8 \		'//指定字符集'
> -DDEFAULT_COLLATION=utf8_general_ci \		'//指定字符集'
> -DEXTRA_CHARSETS=all \	'//指定字符集'
> -DSYSCONFIDIR=/etc \		'//指定配置文件目录'
> -DMYSQL_DATADIR=/home/mysql/ \	'//指定数据文件目录,由mysql用户管理'
> -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock		'//指定通信文件,连接数据库的必要文件'
...省略内容
第三步、make编译和make install
[root@localhost mysql-5.6.26]# make
    ...省略内容
    此处编译,大概需持续一个不到一个小时的时间
[root@localhost mysql-5.6.26]# make install
     ...省略内容
第四步、复制配置文件和脚本文件
[root@localhost mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
[root@localhost mysql-5.6.26]# cp support-files/mysql.server /etc/init.d/mysqld
第五步、配置脚本文件和命令环境
[root@localhost mysql-5.6.26]# cd /etc/init.d/
[root@localhost init.d]# ls
functions  httpd  mysqld  netconsole  network  README
[root@localhost init.d]# ls -l
total 56	'//发现mysqld文件没有执行权限'
-rw-r--r--. 1 root root 17500 May  3  2017 functions
-rwxr-xr-x. 1 root root  3503 Dec 11 19:01 httpd
-rw-r--r--. 1 root root 10870 Dec 11 20:03 mysqld
-rwxr-xr-x. 1 root root  4334 May  3  2017 netconsole
-rwxr-xr-x. 1 root root  7293 May  3  2017 network
-rw-r--r--. 1 root root  1160 Aug  5  2017 README
[root@localhost init.d]# chmod +x mysqld 
[root@localhost init.d]# ls
functions  httpd  mysqld  netconsole  network  README
[root@localhost init.d]# chkconfig --add /etc/init.d/mysqld 	'//将mysqld添加到service服务器中'
[root@localhost init.d]# chkconfig --level 35 mysqld on	'//设置mysqld在运行级别3和5都是开启的'
[root@localhost init.d]# echo "PATH=$PATH:/usr/local/mysql/bin">> /etc/profile	'//设置mysql命令到/etc/profile中寻找'
[root@localhost init.d]# source /etc/profile	'//使命令不需重启立即生效'	
[root@localhost init.d]# echo $PATH	'//查看环境'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
第六步、添加用户
[root@localhost init.d]# useradd -s /sbin/nologin mysql		'//添加用户,指定shell,禁止用户登录系统'
[root@localhost init.d]# id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
[root@localhost init.d]# chown -R mysql.mysql /usr/local/mysql	'//设置属主和数组'
[root@localhost local]# cd /usr/local/mysql/
[root@localhost mysql]# ls -l
total 152
drwxr-xr-x.  2 mysql mysql   4096 Dec 11 20:00 bin
-rw-r--r--.  1 mysql mysql  17987 Jul 15  2015 COPYING
drwxr-xr-x.  3 mysql mysql     18 Dec 11 20:00 data
drwxr-xr-x.  2 mysql mysql     55 Dec 11 20:00 docs
drwxr-xr-x.  3 mysql mysql   4096 Dec 11 20:00 include
-rw-r--r--.  1 mysql mysql 104897 Jul 15  2015 INSTALL-BINARY
drwxr-xr-x.  3 mysql mysql   4096 Dec 11 20:00 lib
drwxr-xr-x.  4 mysql mysql     30 Dec 11 20:00 man
drwxr-xr-x. 10 mysql mysql   4096 Dec 11 20:00 mysql-test
-rw-r--r--.  1 mysql mysql   2496 Jul 15  2015 README
drwxr-xr-x.  2 mysql mysql     30 Dec 11 20:00 scripts
drwxr-xr-x. 28 mysql mysql   4096 Dec 11 20:00 share
drwxr-xr-x.  4 mysql mysql   4096 Dec 11 20:00 sql-bench
drwxr-xr-x.  2 mysql mysql    136 Dec 11 20:00 support-files
[root@localhost mysql]# 
第七步、初始化数据库
[root@localhost mysql]# /usr/local/mysql/scripts/mysql_install_db > --user=mysql > --ldata=/var/lib/mysql > --basedir=/usr/local/mysql > --datadir=/home/mysql
...省略内容
第八步编辑启动脚本
[root@localhost mysql]# vim /etc/init.d/mysqld 
'//搜索basedir'
...省略内容
'//修改这两段内容'
basedir=/usr/local/mysql	'//添加工作路径'
datadir=/home/mysql			'//添加数据路径'
...省略内容
九九归一 搞它!!启动服务并设置用户密码
[root@localhost mysql]# service mysqld start 
Starting MySQL.. SUCCESS! 
[root@localhost mysql]# netstat -ntap|grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      87565/mysqld        
[root@localhost mysql]# mysqladmin -u root -p password "abc123"	'//给root用户设置密码'
'//mysqladmin -u用户名 -p旧密码 password 新密码'
Enter password: 	'//原本密码为空,直接回车即可'
Warning: Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -u root -p
Enter password: 	'//输入刚设置的密码abc123'
...省略内容
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> exit
Bye
! 简易版一键部署脚本
#!/bin/bash
yum install ncurses-devel autoconf cmake -y
tar xzvf mysql-5.6.26.tar.gz

cd mysql-5.6.26
cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DSYSCONFIDIR=/etc -DMYSQL_DATADIR=/home/mysql/ -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
make
make install
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
cd /etc/init.d/
chkconfig mysqld --level 35 on
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
echo $PATH
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
/usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql/ --datadir=/home/mysql/
sed -i '/^basedir/cbasedir=/usr/local/mysql' /etc/init.d/mysqld
sed -i '/^datadir/cdatadir=/home/mysql'  /etc/init.d/mysqld
service mysqld start
if [ $? -eq 0 ];then
 echo "mysql 安装成功"
 else
  echo "完犊子了"
 fi
四:PHP代码源码编译安装1、PHP概述

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域 PHP支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持Unix,Windows,Linux等多种操作系统

2、源码编译过程第一步 安装配置环境
[root@localhost mysql]# yum -y install > gd \	'//安装GD库环境'
> libpng > libpng-devel > pcre > pcre-devel > libxml2-devel > libjpeg-devel
...省略内容
[root@localhost mnt]# cd /mnt/LAMP-C7/
[root@localhost LAMP-C7]# ls
apr-1.6.2.tar.gz       Discuz_X2.5_SC_UTF8.zip  LAMP-php5.6.txt      php-5.6.11.tar.bz2
apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2     mysql-5.6.26.tar.gz
[root@localhost LAMP-C7]# tar jxvf php-5.6.11.tar.bz2 -C /opt
...省略内容
第二步、configure配置
[root@localhost LAMP-C7]# cd /opt
[root@localhost opt]# ls
httpd-2.4.29  mysql-5.6.26  php-5.6.11  rh
[root@localhost opt]# cd php-5.6.11/
[root@localhost php-5.6.11]# ls
...省略内容
[root@localhost php-5.6.11]# ./configure > --prefix=/usr/local/php5 \	'//指定安装路径'
> --with-gd \		'//指定GD库'
> --with-zlib \		'//支持数据压缩函数库'
> --with-apxs2=/usr/local/httpd/bin/apxs \	'//设置Apache服务提供的apxs模块支持程序的文件位置'
> --with-mysql=/usr/local/mysql \	'//设置MySQL数据库服务程序的安装位置'
> --with-config-file-path=/usr/local/php5 \  '//设置PHP配置文件存放的位置'
> --enable-mbstring 	'//启用多字节字符串功能,以便支持中文等代码'
...省略内容
第三步、make编译和make install
[root@localhost php-5.6.11]# make
    ...省略内容
[root@localhost php-5.6.11]# make install
...省略内容
第四步、编辑配置文件
[root@localhost php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini		'移动启动脚本'
[root@localhost php-5.6.11]# ln -s /usr/local/php5/bin/* /usr/local/bin/	'//创建命令软链接'
[root@localhost php-5.6.11]# 
...省略内容		'//编辑php的默认首页'
	
    DirectoryIndex index.html index.php		'//在此段文字后添加index.php'

...省略内容
'//搜索php5,查看是否有下面文字,若没有,之前配置有问题,需要重新配置LAMP'
LoadModule php5_module        modules/libphp5.so
'//搜索AddType,在下段文字后添加两行文字'
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php	'//添加此行'
    AddType application/x-httpd-php-source .phps	'//添加此行'
第五步、重启Apache服务,配置PHP首页
[root@localhost php-5.6.11]# service httpd stop	
[root@localhost php-5.6.11]# service httpd start 
[root@localhost php-5.6.11]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# vim index.html 
    '//原本内容可以删除,添加以下字段'

[root@localhost htdocs]# mv index.html index.php
[root@localhost htdocs]# ls
index.php
[root@localhost htdocs]# 
第六步 、验证五:LAMP架构搭建论坛第一步、创建MySQL数据库并添加用户
[root@localhost htdocs]# mysql -u root -p
...省略内容
mysql> create database bbq;		'//创建数据库'
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bbq                |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)
mysql> grant all on bbq.* to 'bbquser '@'%' identified by 'admin123';	'//给用户bbquser设置密码admin123并设置所有权限,所有终端都可登录'
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;	'//刷新数据库'
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
第二步、解压论坛压缩包,设置权限
[root@localhost LAMP-C7]# unzip Discuz_X2.5_SC_UTF8.zip -d /opt/dis
[root@localhost opt]# ls
dis  httpd-2.4.29  mysql-5.6.26  php-5.6.11  rh
[root@localhost opt]# cd dis
[root@localhost dis]# ls
readme  upload  utility
[root@localhost dis]# cp -r upload/ /usr/local/httpd/htdocs/bbq	'//将upload复制到Apache服务站点中'
[root@localhost dis]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
bbq  index.php
[root@localhost htdocs]# ls bbq
admin.php  config           data         home.php    misc.php    search.php  uc_client
api        connect.php      favicon.ico  index.php   plugin.php  source      uc_server
api.php    cp.php           forum.php    install     portal.php  static      userapp.php
archiver   crossdomain.xml  group.php    member.php  robots.txt  template
[root@localhost htdocs]# cd bbq
[root@localhost bbq]# ls -l
...省略内容
[root@localhost bbq]# chown -R daemon ./config
[root@localhost bbq]# chown -R daemon ./data
[root@localhost bbq]# chown -R daemon ./uc_client/
[root@localhost bbq]# chown -R daemon ./uc_server/data/
第三步、论坛搭建网页设置

1.网址输入bbq后缀,点击我同意

关联标签: