LAMP项目部署
课程目标
-
掌握LAMP项目的特点
-
完成Discuz!论坛系统部署(yum安装)
-
完成wordpress博客系统部署(源码安装)
课程实验
-
LAMP系统概述
-
Discuz!论坛系统部署
-
wordpress博客系统部署
课堂引入
运维最本质的工作就是将开发好项目部署到服务器上面,并保证服务器的正常运行。
授课进程
一、LAMP概述
1、概述

LAMP架构是目前应用最为成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP这个词是一个缩写,具体包括:Linux操作系统、Apache网站服务器、MySOL数据库服务器,PHP (或PerI、Python)网页编程语言。
2、组件作用
-
(平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也支持Windows、UNIX等平台) 。
-
(前台)Apache:作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容。
-
(后台)MySQL:作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息。
-
(中间连接)PHP/Perl/Python:作为三种开发动态网页的编程语言,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发。
3、构建顺序
-
在构建LAMP平台时,各组件的安装顺序依次为Linux,Apache,MySQL,PHP
-
其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作
4、其它形式
除了LAMP架构之外,目前还存在一些其它形式的架构,比如:
LNMP:Linux + Nginx + MySQL + php-fpm (目前比较主流的架构方式)
LNTMJ: Linux + Nginx + Tomcat + Mysql + JDK + JAVA
LNMPA:Linux + Nginx + MySQL + PHP + Apache
二、Discuz!论坛系统部署
1、环境准备
1)准备一台新的服务,最小化安装,配置好网络及设置好IP
systemctl stop NetworkManager
systemctl disable NetworkManager
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="dhcp" dhcp - static
ONBOOT="no" no - yes
# 在下面手动绑定IP地址
IPADDR=192.168.217.132
GATEWAY=192.168.217.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
systemctl restart network # 重启网络
ping www.baidu.com
2)设置主机名
hostnamectl set-hostname server01.com # 修改主机名
su - root # 切换用户
3)关闭防火墙
# 关闭firewalld防火墙
systemctl stop firewalld # 关闭firewalld防火墙
systemctl disable firewalld # 关闭开机自启动
# 关闭selinux防火墙
setenforce 0 # 临时关闭selinux
vim /etc/selinux/config # 修改配置文件,永久关闭selinux
# 修改的内容:SELINUX=disabled

4)配置yum源
备份文件
cd /etc/yum.repos.d/
tar -zcvf repo.tar.gz *.repo # 将所有的.repo文件打包压缩成repo.tar.gz
rm -rf *.repo # 删除所有的repo文件
配置阿里云镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 下载文件
yum clean all # 清除缓存
yum makecache # 重新建立缓存索引
配置扩展镜像源
yum install epel-release -y
2、安装Apache
1)检查Apache是否安装
使用rpm命令检查Apache是否安装
命令:rpm
作用:查询软件的安装情况
语法:rpm [选项] | grep 软件名称
参数选项:
-q:查询,query
-a:全部,all
-e:卸载
-i:install,安装
-v:显示进度条
-h:表示以"#"形式显示进度条
-U:upgrade,升级
rpm -qa | grep httpd
2)yum安装Apache
使用yum命令安装httpd软件包
yum install httpd -y
3)修改配置文件
配置/etc/httpd/conf/httpd.conf文件
vim /etc/httpd/conf/httpd.conf
# 搜索ServerName,在下面添加一行(指定访问的端口号是80端口):
ServerName localhost:80
修改完成之后,一定要重启httpd服务
systemctl restart httpd
4)查看监听端口
使用netstat -ntlp命令,查看是否有80端口监听
netstat -ntlp | grep 80
-bash: netstat: 未找到命令
yum install net-tools -y
5)设置为开机启动
设置为开机自启动,这样就不用每次开机都需要重启httpd服务
systemctl enable httpd
6)访问测试
查看服务器的IP,打开浏览器,在浏览器中输入以下地址:http://192.168.217.132/

3、安装MySQL
1)检查MySQL是否安装
使用rpm命令检查MySQL是否安装
rpm -qa | grep mysql
2)下载mysql的yum源
由于yum源上默认没有mysql-server。所以必须去官网下载后在安装
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
3)安装MySQL
安装mysql的客户端
rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装MySQL服务端
yum -y install mysql-community-server
4)启动MySQL
systemctl restart mysqld
启动之后,可以监听3306端口
netstat -ntlp | grep mysql
5)初始化MySQL
-
初始化数据库
默认情况下,数据库没有密码,也没有任何数据,必须要初始化,mysql自己带的初始化程序:mysql_secure_installation
mysql_secure_installation
输入root账号旧密码

设置超级管理员root密码,注:默认为空,直接回车即可

移除匿名账户

不禁用root远程连接

不移除默认数据库(测试用例)

重新加载权限

- 添加为开启自启动
systemctl enable mysqld
- 连接MySQL
可以通过mysql命令连接MySQL数据库。也可以通过外部的MySQL客户端工具进行连接

mysql -uroot -p123456
#含义
# mysql : mysql客户端连接MySQL服务
# -uroot : 指定连接使用的账号为root
# -p123456 : 指定连接账号的秘密为123456
- 查看数据库
show databases; # 查看数据库中的所有的库,注意后面一定要带上分号
exit # 退出MySQL客户端
4、安装PHP
1)检查PHP是否安装
rpm -qa | grep php
2)yum命令安装php
yum -y install php
3)重启httpd服务
更改php配置一定要重启httpd服务
systemctl restart httpd
4)测试LAMP环境是否可以使用
- 使用cd命令进入/var/www/html目录
cd /var/www/html/
- 使用vim命令创建index.php文件
vim index.php
- 编写php代码
<?php
echo 'cloud';
?>
4)测试
在浏览器中输入地址:http://192.168.217.132/

5、部署Discuz!论坛
1)Discuz论坛概述
Discuz! 超过300万站长使用,全球成熟度最高、覆盖率最大的建站系统之一,拥有超过7000款应用。站长可以方便的通过 Discuz! 搭建社区论坛、知识付费网站、视频直播点播站、企业网站、同城社区、小程序、APP、图片素材站,游戏交流站,电商购物站、小说阅读、博客、拼车系统、房产信息、求职招聘、婚恋交友等等绝大多数类型的网站。Discuz!自2001年6月面世以来,已有22年的历史,Discuz!性能优异、功能全面、安全稳定,在社区论坛(BBS)软件领域全球市场占有率第一

2)下载源代码
下载地址:https://gitee.com/Discuz/DiscuzX

3)上传代码
将下载的压缩包文件上传到服务器的家目录中

4)解压缩
安装zip解压缩的应用:unzip
yum install unzip -y
解压缩文件
unzip DiscuzX-v3.5.zip

5)将源码移动到/var/www/html目录中
mv upload/* /var/www/html

6、安装Discuz!论坛
1)升级php版本

yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --enable remi-php73
yum install -y php
systemctl restart httpd

2)设置目录的写权限

chmod -R a+w /var/www/html/

3)安装MySQL的插件
yum -y install php-mysqli
systemctl restart mysqld
systemctl restart httpd

4)安装php的插件
yum install php-xml -y
systemctl restart httpd

5)指定安装方式

6)配置数据库


7、访问测试
1)访问网站

2)访问后台
http://192.168.217.132/admin.php?frames=yes&action=styles

三、wordpress博客系统部署
1、环境准备
1)准备一台新的服务,最小化安装,配置好网络及设置好IP
systemctl stop NetworkManager
2)设置主机名
hostnamectl set-hostname server01.com
3)关闭防火墙
systemctl stop firewalld # 关闭firewalld防火墙
systemctl disable firewalld # 关闭开机自启动
setenforce 0 # 临时关闭selinux
vim /etc/selinux/config # 修改配置文件,永久关闭selinux
# 修改的内容:SELINUX=disabled
4)配置yum源
备份文件
cd /etc/yum.repos.d/
tar -zcvf repo.tar.gz *.repo # 将所有的.repo文件打包压缩成repo.tar.gz
rm -rf *.repo # 删除所有的repo文件
配置阿里云镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 下载文件
yum clean all # 清除缓存
yum makecache # 重新建立缓存索引
配置扩展镜像源
yum install epel-release -y
2、上传安装包
将素材中的源码包上传到root账号的家目录中


3、编译安装MySQL
1)安装需求
| 软件版本 | 安装目录 | 数据目录 | 端口 |
|---|---|---|---|
| mysql-5.6.31 | /usr/local/mysql | /usr/local/mysql/data | 3306 |
2)创建mysql用户
useradd -r -s /sbin/nologin mysql
-r : 表示创建一个系统用户
-s : 表示指定执行的shell
3)解压软件
tar -zxvf mysql-5.6.31.tar.gz # 解压缩mysql
cd mysql-5.6.31 # 进入到mysql目录
4)源码配置
在配置之前,需要安装一些必要的插件,如:gcc``cmake等
yum install gcc-c++ -y
yum install cmake -y
yum -y install ncurses-devel
yum -y install autoconf
配置选项说明:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ # 安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data \ # 数据目录
-DENABLED_LOCAL_INFILE=1 \ # 开启加载外部文件功能;1开启,0关闭
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ # 将InnoDB存储引擎静态编译到服务器
-DMYSQL_TCP_PORT=3306 \ # 端口
-DDEFAULT_CHARSET=utf8mb4 \ # 字符集
-DDEFAULT_COLLATION=utf8mb4_general_ci \ # 字符校验规则
-DWITH_EXTRA_CHARSETS=all \ # 扩展字符集
-DMYSQL_USER=mysql # 用户身份mysql
编写一个cmake.sh脚本,用于执行配置选项,不然直接执行,容易出错(换行之类的)
vim cmake.sh
# 将以下内容复制到脚本中
#!/bin/bash
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql
给脚本添加可执行的权限,执行脚本
chmod a+x cmake.sh
./cmake.sh

5)编译并安装
make && make install
整个编译安装的过程大约持续10-15分钟左右

6)更改数据目录权限
chown -R mysql.mysql /usr/local/mysql/

7)初始化数据库
前提:
# 清空环境
rm -f /etc/my.cnf
# 删除mysql相关的进程
ps -ef|grep mysqld
# pkill -9 mysqld
初始化数据库
cd /usr/local/mysql/
./scripts/mysql_install_db --user=mysql

8)拷贝启动脚本
pwd # 确认自己是否已经处于mysql的安装目录中
cp support-files/mysql.server /etc/init.d/mysql # 拷贝文件

9)启动数据库
# 启动前确认3306端口没有被占用,如果3306端口被占用,请kill掉之前的mysqld程序,如果没有被占用,此步省略
netstat -nltp|grep 3306
# 启动mysql(注意,此处不用systemctl命令)
service mysql start

10)设置密码
/usr/local/mysql/bin/mysqladmin -u root password '123456'

11)测试验证
cd /usr/local/mysql/bin # 切换到mysql的二进制目录中
./mysql -uroot -p123456

问:如果想要任何地方都可以执行MySQL命令,该怎么处理?
答:配置环境变量
临时解决:
export PATH=/usr/local/mysql/bin/:$PATH永久解决:
vim /etc/profile在文件的最后追加:
export PATH=/usr/local/mysql/bin/:$PATH配置文件生效:
source /etc/profile
4、编译安装Apache
1)安装需求
| 版本 | 安装路径 |
|---|---|
| httpd-2.4.37 | /usr/local/ |
2)安装依赖
- 安装apr软件
yum -y install bzip2 # 安装bzip2
tar -xf apr-1.5.2.tar.bz2 # 解压缩软件
cd apr-1.5.2 # 进入目录
./configure # 配置
make && make install # 编译并安装

- 安装apr-util软件
tar -xf apr-util-1.5.4.tar.bz2 # 解压缩软件
cd apr-util-1.5.4 # 进入目录
./configure --with-apr=/usr/local/apr/bin/apr-1-config # 配置
make && make install # 编译并安装
yum install -y bzip2
- 安装pcre-devel
yum -y install pcre-devel
- 安装openssl-devel
yum -y install openssl-devel
3)解压软件
tar -xvf httpd-2.4.37.tar.bz2
cd httpd-2.4.37
4)配置
配置选项说明:
# ./configure
--enable-modules=all # 加载所有支持模块
--enable-mods-shared=all # 共享方式加载大部分常用的模块
--enable-so # 启动动态模块加载功能
--enable-rewrite # 启用url地址重写功能
--enable-ssl # 编译ssl模块,支持https
--with-pcre # 支持正则表达式
--with-apr=/usr/local/apr/bin/apr-1-config # 指定依赖软件apr路径
--with-apr-util=/usr/local/apr/bin/apu-1-config
--with-mpm=prefork # 插入式并行处理模块,称为多路处理模块,Prefork 是类UNIX平台上默认的MPM
编写一个apache.sh脚本,用于执行配置选项,不然直接执行,容易出错(换行之类的)
#!/bin/bash
./configure \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--with-pcre \
--enable-ssl \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config
chmod +x apache.sh
./apache.sh
5)编译安装
make && make install
6)测试验证
生成如下目录即表示Apache安装成功

进入bin目录,执行./httpd,在浏览器输入地址http://192.168.217.132/

5、编译安装PHP
1)安装依赖
yum install libcurl-devel -y
yum install libxml2-devel -y
yum install libjpeg-devel -y
yum install libpng-devel -y
yum install freetype-devel -y
2)解压软件
tar -xvf php-7.2.17.tar.xz
cd php-7.2.17
3)配置
配置选项说明:
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \ # 指定apxs路径,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具
--with-mysqli \ # 以下三个是php的扩展,用于连接mysql数据库的
--with-pdo-mysql \
--with-zlib \
--with-curl \
--enable-zip \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-opcache \
--enable-mbstring \
--enable-mbregex \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-calendar \
--enable-bcmath
编写一个php.sh脚本,用于执行配置选项,不然直接执行,容易出错(换行之类的)
#!/bin/bash
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysqli \
--with-pdo-mysql \
--with-zlib \
--with-curl \
--enable-zip \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-opcache \
--enable-mbstring \
--enable-mbregex \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-calendar \
--enable-bcmath
chmod +x php.sh
./php.sh

4)编译安装
make

make install

5)测试验证
确认php成功安装,/usr/local/apache2/modules/libphp7.so确认有这个libphp7.so模块文件,就表示编译php成功

6、配置PHP
1)修改Apache主配置文件,vim /usr/local/apache2/conf/httpd.conf
# 搜索ServerName,在下面添加一行(指定访问的端口号是80端口):
ServerName localhost:80
# 配置语言支持
LoadModule negotiation_module modules/mod_negotiation.so # 此模块打开注释
Include conf/extra/httpd-languages.conf # 打开此选项,扩展配置文件就生效了
# 加载php模块解析php页面,添加两行,告诉httpd把.php文件交给模块去编译
LoadModule php7_module modules/libphp7.so # 找到这一句,在这句下面加上两句
# 添加以下两行意思是以.php结尾的文件都认为是php程序文件,注意两句话的.php前面都是有一个空格的
AddHandler php7-script .php
AddType text/html .php
# 默认主页加上index.php,并放在index.html前,支持php的首页文件
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
2)修改Apache的子配置文件,vim /usr/local/apache2/conf/extra/httpd-languages.conf
DefaultLanguage zh-CN # 打开注释,默认语言集改为中文 LanguagePriority zh-CN en ca cs # 语言集优先集,把zh-CN 写到前面
7、启动测试环境
1)添加测试文件
cd /usr/local/apache2/htdocs
rm -f index.html
vim index.php
<?php
phpinfo();
?>
2)启动Apache
如果之前已经启动过了httpd,则先关闭掉,在重启启动
ps -ef | grep httpd
killall httpd
yum install psmisc -y
启动httpd
cd /usr/local/apache2/bin/
./apachectl
3)访问测试
浏览器里输入:http://192.168.217.132

8、部署web应用
1)解压缩项目
tar -zxvf wordpress-5.2.2-zh_CN.tar.gz
2)将源码复制到指定目录
cp -R wordpress/* /usr/local/apache2/htdocs
3)创建数据库
mysql -uroot -p123456
create database wordpress default charset utf8;

9、测试验证
1)访问
浏览器里输入:http://192.168.217.132

2)设置权限
chown -R daemon.daemon /usr/local/apache2/htdocs/
课堂小结
-
LAMP系统概述
-
Discuz!论坛系统部署
-
wordpress博客系统部署
课后作业
-
完成课堂的案例及练习
-
将今天的内容整理为思维导图的形式
扩展内容
无