目录
- 一、 LAMP介绍
- 二、Apache 简介
- 三、Apache 的主要特点
- 四、搭建YUM仓库
- 五、编译安装HTTP服务
- 六、站点部署
- 6.1 基于域名主机的
- 6.2 基于IP地址的
- 6.3 基于端口的
- 七、安装mysql
- 八、安装PHP环境
- 九、安装phpMyadmin
一、 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 的主要特点
1、开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。
Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使
用,这充分体现了开源软件的精神。
2、跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可以运
行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务
器,甚至 Apache 服务器可以良好地运行在大多数 Windows 系统平台中。
Apache 服务器的跨平台特性使其具有被广泛应用的条件。
3、支持各种Web 编程语言:Apache服务器可支持的网页编程语言包括Perl、PHP、
Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支
持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。
4、模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是
尽可能地通过标准的模块实现专有的功能,这为 Apache 服务器带来了良好的
扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身
并不具有的其他功能。
5、运行非常稳定:Apache 服务器可用于构建具有大负载访问量的 Web 站点,很
多知名的企业网站都使用 Apache 作为 Web 服务软件。
6、良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具
有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,
为 Apache 的所有使用者提供尽可能安全的服务器程序。
四、搭建YUM仓库
- 先把yum仓库搭建好才能安装LAMP,挂载一下,一般用永久挂载,这里方便用了临时的。
[root@localhost ~]# mount /dev/cdrom /mnt ###临时挂载
[root@localhost ~]# cd /etc/yum.repos.d/ ###进入本地源
[root@localhost yum.repos.d]# ll ###查看一下
- 在/etc/yum.repos.d/目录里创建一个backup目录,再把里面C开头的文件全部移动到backup目录里,复制一个本地源文件到local.repo
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv C* backup/
[root@localhost yum.repos.d]# cp backup/CentOS-Base.repo local.repo
[root@localhost yum.repos.d]# vi local.repo
- 在编辑local.repo,和下面一样就行
[root@localhost yum.repos.d]# vi local.repo
[centos]
name=centos
baseurl=file:///mnt
gpgcheck=0
enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- 清除cache缓存,在缓存一下
yum clean all
yum makecache
五、编译安装HTTP服务
-
安装Apache所需软件
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz -
将上面3个包传到opt目录下
cd /opt ###进入/opt目录下
[root@localhost opt]# ll ###查看一下
- 解压三个包
[root@localhost opt]# tar xf apr-1.6.2.tar.gz
[root@localhost opt]# tar xf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xf httpd-2.4.29.tar.bz2
- 将apr-1.6.2和apr-util-1.6.0移动到httpd-2.4.29/srclib/apr-util 下
[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
- 安装环境依赖包
Apache的配置需要这些软件包的支持,因此应先安装这些软件的开发包,以便提供相应的库和头文件,确保Apache的安装顺利完成
[root@localhost opt]#
yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl
- 安装模块
[root@localhost opt]# cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \ ###--prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
--enable-so \ ###--enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
--enable-rewrite \ ###--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
--enable-charset-lite \ ###--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网
--enable-cgi ###--enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。
- 编译及安装
[root@localhost ]#make -j3 ### make -j3 的j3是你核心数,最大不要超过虚拟机的核心数
[root@localhost ]#make install ###安装
- 优化执行路径
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
httpd -v ###查看下HTTP版本#
- 建立[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
[root@localhost system]# systemctl start httpd.service ###启动httpd
[root@localhost system]# systemctl enable httpd.service ###开机自启http
[root@localhost system]# systemctl is-enabled httpd.service ###检查HTTP单元是否启动
- httpd.conf修改配置文件
vi /usr/local/httpd/conf/httpd.conf ###编辑修改httpd.conf配置文件
ServerName www.zk.top:80 ###把这句更改下,改成自己想要的
- 用真机系统的浏览器验证一下
netstat -anpt | grep 80 ###查看一下80端口启动了没
验证成功!!!(注意,网页默认显示内容文件在:/usr/local/httpd/htdocs/index.html)
六、站点部署
6.1 基于域名主机的
- 创建51xit和52xit目录
- 在往两个文件里单独输入字符
[root@www ~]# mkdir -p /opt/www/html/51xit.top
[root@www ~]# mkdir -p /opt/www/html/52xit.top
[root@www ~]# echo "<h1>www.51xit.top</h1>" > /opt/www/html/51xit.top/index.html
[root@www ~]# echo "<h1>www.52xit.top</h1>" > /opt/www/html/52xit.top/index.html
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
############配置文件#############
<VirtualHost *:80> ####设置 51xit.top 虚拟站点区域
DocumentRoot "/opt/www/html/51xit.top"
ServerName www.51xit.top
ErrorLog "logs/www.51xit.top.error_log"
CustomLog "logs/www.51xit.top.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80> ####设置 52xit.top 虚拟站点区域
DocumentRoot "/opt/www/html/52xit.top"
ServerName www.52xit.top
ErrorLog "logs/www.52xit.top.error_log"
CustomLog "logs/www.52xit.top.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf ####注意啦!全局配置文件ServerName前面要加#
Include conf/extra/httpd-vhosts.conf ####加载独立的配置文件
[root@www ~]# systemctl restart httpd ####重启服务使新配置生效
- 在客户端yum安装一下lynx工具
yum -y install lynx
- 登录客户端访问www.51xit.top ,在访问www.52xit.top验证一下
[root@localhost ~]# lynx www.51xit.top
[root@localhost ~]# lynx www.52xit.top
6.2 基于IP地址的
(使用上面实验的环境下做的)
主机上现在有一块网卡,在添加一块网卡,然后配置一下新网卡
- 查看一下新网卡的UUID ,并把新网卡UUID复制下来
[root@localhost ]# nmcli connection
- 在进入默认网卡目录查看一下,并复制编辑新网卡
[root@localhost ]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ll
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36 ### 复制ens33网卡信息到新网卡ens36
[root@localhost network-scripts]# vi ifcfg-ens36 编辑ens36网卡,改成以下图片所示!
- 重启一下网卡,关闭ens36网卡,在开启ens36网卡
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifdown ens36
[root@localhost network-scripts]# ifup ens36
- 在把配置里修改一下
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
############只把*号改成ip地址就行#############
<VirtualHost 192.168.100.41:80> ###只把*号改成ip地址就行 ####设置 51xit.top 虚拟站点区域
DocumentRoot "/opt/www/html/51xit.top"
ServerName www.51xit.top
......
</VirtualHost>
<VirtualHost 192.168.100.42:80> ###只把*号改成ip地址就行
####设置 52xit.top 虚拟站点区域
DocumentRoot "/opt/www/html/52xit.top"
ServerName www.52xit.top
......
</VirtualHost>
- 把Include conf/extra/httpd-vhosts.conf 前面的#号去掉,没有的话就不用去掉!!!
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf ####加载独立的配置文件
[root@www ~]# systemctl restart httpd ####重启服务使新配置生效
- 在真机访问的话,要把host映射一下
C:\Windows\System32\drivers\etc ###真机host目录
######添加这两条#######
20.0.0.6 www.51xit.top
192.168.30.6 www.52xit.top
- 验证一下,登录客户机访问www.51xit.top 在访问www.52xit.top
6.3 基于端口的
(使用上面实验的环境下做的,和上面两个基本一样,就是把端口改一下就行)
-
一块网卡:20.0.0.6
-
把Include conf/extra/httpd-vhosts.conf 前面的#号去掉,没有的话就不用去掉!!!
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf ####加载独立的配置文件
- 在把配置里修改一下
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 20.0.0.6:80> ###只把端口号改一下就行 ####设置 51xit.top 虚拟站点区域
DocumentRoot "/opt/www/html/51xit.top"
ServerName www.51xit.top
......
</VirtualHost>
<VirtualHost 20.0.0.6:8080> ###只把端口号改一下就行
####设置 52xit.top 虚拟站点区域
DocumentRoot "/opt/www/html/52xit.top"
ServerName www.52xit.top
......
</VirtualHost>
- 把监听端口加上
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf ####省略部分内容
Include conf/extra/httpd-vhosts.conf ####加载独立的配置文件
Listen 192.168.100.41:80 ####监听 80 端口
Listen 192.168.100.41:8080 ####监听 8080 端口
- 重启httpd
[root@www ~]# systemctl restart httpd ####重启服务使新配置生效
- 更改客户端hosts映射关系
[root@localhost ~]# vi /etc/hosts
#############改成这样###############
20.0.0.6 www.51xit.top
20.0.0.6 www.52xit.top
- 登录客户机访问www.51xit.top 在访问www.52xit.top,验证一下就行。
[root@localhost ~]# lynx www.51xit.top
[root@localhost ~]# lynx www.52xit.top
七、安装mysql
- 安装环境
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake
- 添加mysql管理用户
useradd -s /sbin/nologin mysql
- 把mysql包上传解压
###上传mysql-boost-5.7.20.tar.gz到opt目录下###
cd /opt
tar xf mysql-boost-5.7.20.tar.gz
- cmake配置
cd /opt/mysql-5.7.20/
##########cmake配置############
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
- 编译安装
[root@localhost ]# make
[root@localhost ]# make install
- 数据库目录进行权限调整
[root@localhost ]# chown -R mysql:mysql /usr/local/mysql/
- 建立调整配置文件,里面有命令的话就全部删掉复制下面的代码粘贴进去!
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
- 权限调整一下
[root@localhost ]# chown mysql:mysql /etc/my.cnf
- 设置环境变量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile ### 申明全局环境变量
source /etc/profile ### 使加入的数据生效,使mysql的相关命令识别
########进入mysql目录#########
cd /usr/local/mysql/
##########初始化数据库,使用mysql进行初始化#############
bin/mysqld \
--initialize-insecure \ #初始化命令
--user=mysql \ #指定用户
--basedir=/usr/local/mysql \ #指定工作目录
--datadir=/usr/local/mysql/data #指定数据存放位置
############将mysql的服务脚本从软件内复制到/lib/systemd/system中##################
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#######开启服务在设置开机启动#######
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306
cd /usr/local/bin/ ###先进去bin目录下在设置密码
######设置登录数据库密码#######
mysqladmin -u root -p password //回车后在回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的
#######登录数据库#######
[root@localhost mysql]# mysql -u root -p
Enter password: #### 输入刚刚设置的密码
....
mysql> quit
Bye
八、安装PHP环境
[root@localhost mysql]# 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 #身份验证去连接网站
- 解压缩源码包
#######上传php-7.1.10.tar.bz2包到opt目录下#####
cd /opt
tar xjvf php-7.1.10.tar.bz2 ###解压php包
- configure配置属性,make编译
[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
############ make编译 ############## 时间有点长,耐心等待!!!
[root@localhost php-7.1.10]# make
[root@localhost php-7.1.10]# make install
- 配置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服务
- 测试一下,在真机浏览器输入服务器ip地址 20.0.0.6
显示以下页面就是成功了!
- 创建mysql数据库
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.6','myadm','admin123'); ### 需要把ip改成服务器ip地址
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
- 输入20.0.0.6测试下,下图就是成功的!!!
九、安装phpMyadmin
- 上传phpMyAdmin-4.7.6-all-languages.zip到opt下面
cd /opt ### 进入/opt目录
unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/ ### 解压到/opt目录下
mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm ### 将解压的东西移动到myadm目录下
cd /usr/local/httpd/htdocs/myadm ### 进入到myadm目录
cp config.sample.inc.php config.inc.php ### cp一下让其生效
vi config.inc.php ### 然后改一下配置信息
$cfg['Servers'][$i]['host'] = '127.0.0.1'; //把localhost 改成IP ,在31行
- 测试输入20.0.0.6/myadm
使用root 以及前面为root配置的密码登录管理系统。可以对数据库进行管理操作了 。(我自己设置的账户密码root 123456)
出现以下图,测试成功!!!
完成!