源码编译安装LAMP
一、LAMP介绍
- LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和
相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具
体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或 Perl、
Python)网页编程语言。本章将以源码编译的方式搭建 LAMP 环境,能够满足企业定
制化的需求。 - 在构建 LAMP 平台时,各组件的安装顺序依次为 Linux、Apache、MySQL、PHP。
其中 Apache 和 MySQL 的安装并没有严格的顺序;而 PHP 环境的安装一般放到最后,
负责沟通 Web 服务器和数据库系统以协同工作。
二、Apache 简介
- Apache HTTP Server”是开源软件项目的杰出代表,基于标准的 HTTP 网络协议提供
网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运
行在 Linux、UNIX、Windows 等多种操作系统平台中。 - Apache 服务器是针对之前出现的若干个 Web 服务器程序进行整合、完善后形成的软
件,其名称来源于“A Patchy Server”,意思是“基于原有 Web 服务程序的代码进行修改(补
丁)后形成的服务器程序”。
1995 年, Apache 服务程序发布了 1.0 版本,之后一直由“Apache Group”负责该项目
的管理和维护;直到 1999 年,在“Apache Group”的基础上成立了 Apache 软件基金会
(Apache Software Foundation,ASF)。目前,Apache 项目一直由 ASF 负责管理和维护。 - ASF 是非盈利性质的组织,最初只负责“Apache Web”服务器项目的管理,随着 Web
应用需求的不断扩大,ASF 逐渐增加了许多与 Web 技术相关的开源软件项目,因此 Apache
现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF 管理的众多开源软件项目。ASF 基
金会的官方网站是 http://www.apache.org/。 - “Apache HTTP Server”是 ASF 旗下著名的软件项目之一,其正式名称是“httpd”,也就
是历史上的 Apache 网站服务器。在后续内容中,若未作特殊说明,使用“Apache”或者“httpd”,
均指的是“Apache HTTP Server”。
三、Apache 的主要特点
- 开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。
Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使
用,这充分体现了开源软件的精神。 - 跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可以运
行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务
器,甚至 Apache 服务器可以良好地运行在大多数 Windows 系统平台中。
Apache 服务器的跨平台特性使其具有被广泛应用的条件。 - 支持各种Web 编程语言:Apache服务器可支持的网页编程语言包括Perl、PHP、
Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支
持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。 - 模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是
尽可能地通过标准的模块实现专有的功能,这为 Apache 服务器带来了良好的
扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身
并不具有的其他功能。 - 运行非常稳定:Apache 服务器可用于构建具有大负载访问量的 Web 站点,很
多知名的企业网站都使用 Apache 作为 Web 服务软件。 - 良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具
有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,
为 Apache 的所有使用者提供尽可能安全的服务器程序。
四、LAMP网站服务器部署
4.1、搭建YUM仓库
[root@localhost ~]# mount /dev/cdrom /mnt ##临时挂载
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
总用量 32
## 这里我们搭建YUM本地源仓库
-rw-r--r--. 1 root root 1664 8月 23 21:16 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 8月 23 21:16 CentOS-CR.repo
-rw-r--r--. 1 root root 649 8月 23 21:16 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 8月 23 21:16 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 8月 23 21:16 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 8月 23 21:16 CentOS-Sources.repo
-rw-r--r--. 1 root root 5701 8月 23 21:16 CentOS-Vault.repo
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv C* backup/ ##把本地源放进创建的backup目录
[root@localhost yum.repos.d]# cp backup/CentOS-Base.repo local.repo ## 复制一个本地源文件
[root@localhost yum.repos.d]# vi local.repo ## 对复制的本地源文件进行编辑。进去之后 36dd 删除原来的配置,然后再改下面的配置
[centos]
name=centos
baseurl=file:///mnt
gpgcheck=0
enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@localhost ~]# systemctl stop firewalld ## 关闭防火墙
[root@localhost ~]# systemctl disable firewalld ## 开机自动关闭防火墙
[root@localhost ~]# vi /etc/selinux/config ##关闭核心防护
SELINUX=disabled ## 这句前面的#号去掉
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
4.2、编译安装HTTP服务
1、将下列三个软件包传到opt目录下
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz
2、对压缩包进行解压
cd /opt
ll
总用量 8020
-rw-r--r-- 1 root root 1071074 8月 4 17:33 apr-1.6.2.tar.gz
-rw-r--r-- 1 root root 565507 8月 4 17:33 apr-util-1.6.0.tar.gz
-rw-r--r-- 1 root root 6567926 8月 4 17:33 httpd-2.4.29.tar.bz2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
tar zxvf apr-1.6.2.tar.gz
tar zxvf apr-util-1.6.0.tar.gz
yum -y install bzip2 ## 如果是最小化安装需要安装bzip2
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
3、安装环境编译HTTP的环境
yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl
4、安装配置模块
[root@localhost opt]# cd /opt/httpd-2.4.29/ ## 安装模块
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
####配置模块解释####
--prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
--enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网
--enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。
5、编译安装
make && make install
6、优化执行路径
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
httpd -v ###查看下HTTP版本
Server version: Apache/2.4.29 (Unix)
Server built: Aug 31 2020 02:01:04
7、建立[service].service 配置文件添加系统给服务。在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,用于控制由 systemd 管理或监控的 httpd 服务
建立[service].service 配置文件添加系统给服务
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,
用于控制由 systemd 管理或监控的 httpd 服务
[root@localhost ~]# cd /lib/systemd/system/
[root@localhost system]# vim httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
8、设置启动http和开机自启http,并且查看http的运行状态
systemctl start httpd.service
systemctl enable httpd.service ###开机自启http
systemctl is-enabled httpd.service ###检查HTTP单元是否启动
9、httpd.conf修改配置文件
[root@localhost~]# vi /usr/local/httpd/conf/httpd.conf
ServerName www.51xit.com:80 ###这里面的网址可以自己任意改。
[root@localhost~]# systemctl restart httpd ####重启httpd服务
10、现在我们在浏览器进行试验
netstat -anpt | grep 80 ###查看一下80端口启动了没
在浏览器里面输入该虚拟机的IP地址;
这里我们验证成功!!!
4.3、MySQL 的编译安装
1、环境准备
[root@localhost system]# yum -y install \
> ncurses \
> ncurses-devel \
> bison \
> cmake
[root@localhost system]# useradd -s /sbin/nologin mysql
2、上传mysql-boost-5.7.20.tar.gz到opt目录下并进行解压
cd /opt
tar zxf mysql-boost-5.7.20.tar.gz
cd /optv/mysql-5.7.20/
3、cmake 配置
[root@localhost mysql-5.7.20]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
配置选项含义
DCMAKE_INSTALL_PREFIX:指定将 mysql 数据库程序安装到某目录下,如目录/usr/local/ mysql。
DSYSCONFDIR:指定初始化参数文件目录。
DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8。
DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci,是适用于 UTF-8 字符集的通用规则。
DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。
4、编译安装
make && make install
5、数据库目录进行权限调整
chown -R mysql:mysql /usr/local/mysql/
6、建立调整配置文件
[root@localhost ~]# vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,
NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
7、设置环境变量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile ## 声明全局变量
source /etc/profile ### 使加入的数据生效,使mysql的相关命令识别
8、初始化数据库
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \ ###初始化命令
--user=mysql \ ###指定用户
--basedir=/usr/local/mysql \ ###指定工作目录
--datadir=/usr/local/mysql/data ###指定数据存放位置
9、编辑启动脚本
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#######开启服务在设置开机启动#######
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# systemctl status mysqld
10、设置用户密码
[root@localhost mysql]# mysqladmin -u root -p password "123456" '//给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: '//输入刚设置的密码123456'
...省略内容
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
4.4、安装PHP环境
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域
PHP支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持Unix,Windows,Linux等多种操作系统
4.4.1、环境准备并配置
1、
[root@localhost ~]# yum -y install \
libjpeg \ #jpeg图片识别
libjpeg-devel \ #jpeg开发包
libpng libpng-devel \ #png图片识别还有开发包
freetype freetype-devel \ #freetype 识别字体
libxml2 \ #xml文件格式识别
libxml2-devel \
zlib zlib-devel \ #zlib压缩
curl curl-devel \ #curl 支持文件上传下载,网页端的下载
openssl openssl-devel #身份验证去连接网站
2、上传 php-7.1.10至opt目录下解压
cd /opt
tar xjvf php-7.1.10.tar.bz2 ###解压php包
3、configure配置属性
[root@localhost php-7.1.10]#./configure \
--prefix=/usr/local/php \ #指定安装目录
--with-mysql-sock=/usr/local/mysql/mysql.sock \ #指向mysql的sock文件,用以后台程序去连接数据库
--with-mysqli \ #客户终端工具,可以直接去访问mysql服务器,去找它进行定义存储过程,事务的处理一些功能
--with-zlib \
--with-curl \
--with-gd \ #gd是一个图像化的处理
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \ #字体
--with-openssl \
--enable-fpm \ #fpm 是指动态请求的模块
--enable-mbstring \ #mbstring 多节点字符串
--enable-xml \ #xml 启用xml格式支持
--enable-session \ #支持session会话
--enable-ftp \ #网页可以ftp的功能
--enable-pdo \ #pdo 类似一个通用的接口一样,下面的不同的数据库的数据,会统一接口接收
--enable-tokenizer \ #tokenizer 是一个函数库
--enable-zip
4、编译安装
[root@localhost php-7.1.10]# make && make install
5、配置PHP的两个配置文件
cp php.ini-development /usr/local/php/lib/php.ini ###
vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock # 搜索到mysqli.default_socket
date.timezone = Asia/Shanghai # 搜索到date.timezone # 添加市区
/usr/local/php/bin/php -m //验证安装的模块
vi /etc/httpd.conf
#######搜索AddType,然后在合适位置新增下面两句######
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#########搜索DirectoryIndex,然后找到这行后把下面这行代码补齐#########
DirectoryIndex index.php index.html
rm -f /usr/local/httpd/htdocs/index.html ### 删除index.html文件
vi /usr/local/httpd/htdocs/index.php ### 编辑新的index.php
#######添加下面代码###########
<?php
phpinfo();
?>
[root@localhost php-7.1.10]# vi /etc/httpd.conf
#Include conf/extra/httpd-vhosts.conf ### 关闭这个
Listen 80 ### 找到监听端口,监听端口改成这样
systemctl restart httpd ### 重启一下httpd服务
6、测试一下,在真机浏览器输入服务器ip地址 20.0.0.16
显示以下页面就是成功了!
4.4.2、测试数据库是否可以正常工作
mysql -u root -p #### 输入密码进入,然后把下面四条命令一条一条复制进去
CREATE DATABASE myadm; ### 创建数据库
GRANT all ON myadm.* TO 'myadm'@'%' IDENTIFIED BY 'admin123';
# 授权给myadm账户,密码是admin123,可以访问myadm数据库,*代表所有的表
GRANT all ON myadm.* TO 'myadm'@'localhost' IDENTIFIED BY 'admin123';
flush privileges; ### 刷新后台
vi /usr/local/httpd/htdocs/index.php ### 更改首页信息,把下面命令复制进去
<?php
$link=mysqli_connect('20.0.0.16','myadm','admin123'); ### 需要把ip改成服务器ip地址
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
在浏览器上输入ip测试下
4.4.3、安装phpMyadmin
cd /opt
unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
cd /usr/local/httpd/htdocs/myadm
cp config.sample.inc.php config.inc.php
[root@localhost myadm]# vi config.inc.php
$cfg['Servers'][$i]['host'] = 'localhost '; ###将第31行的“localhost”更改为IP地址