一、安装背景及任务需求
1.LAMP简介
LAMP是公认的最常见、最古老的黄金Web技术栈
Linux 操作系统
Apache/Nginx web服务器作用是将HTTP请求从前端转发到后端应用上
Mysql/Mariadb Mysql是一款数据库管理系统,也就是一个存储数据的工具,用户可以自行对数据库进行增加、删除、修改、查询等操作。
Perl/Php/Python PHP是一门服务端脚本编程语言,主要用于web开发,常用PHP脚本嵌入HTML源码中执行。
2.任务需求
LAMP
Apache——>httpd
MySQL——>5.6.31
PHP——>7.2.17
apr-1.5.2.tar.bz2
apr-util-1.5.4.tar.bz2
httpd-2.4.37.tar.bz2
mysql-5.6.43
php-7.2.17.tar.xz
wordpress-4.7.3-zh_CN.tar.gz
最终达成访问IP地址即可使用wordpress即可,不需要域名解析先
3.编译环境说明
Linux
Apache(2.4)
MySQL(5.6.31)
PHP(7.2.17)
编译安装顺序,由于软件之间存在依赖性,会有先后顺序。
说明:
apache必须要先于php安装
apache和mysql之间并没有直接先后顺序的依赖,所以谁先谁后没所谓。
在php-5.3版本前,mysql必须先于php的编译;因为php需要实现连接数据库的功能,它通过mysql的接口才能编译出该功能;
在php-5.3版本或者之后,php已经集成了一套连接mysql数据的代码,并不依赖mysql的接口,这个时候,mysql和php的编译顺序也就无所谓了。
故安装顺序为 linux mysql apache(httpd PHP
二、部署LAMP实战
1.环境准备
1.准备一个新机器配置yum源
yum install wget -y
配置yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
清空yum缓存
yum clean all
重新生成yum缓存
yum makecache
2.关闭防火墙
关闭firewalld
iptables -F
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 ##关闭selinux
查看selinux
[root@client-242 yum.repos.d]# grep -i 'selinux=' /etc/selinux/config
SELINUX= can take one of these three values:
SELINUX=disabled
3.安装工具和基础软件库
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel net-tools vim -y
yum install cmake make pcre-devel ncurses-devel openssl-devel libcurl-devel -y
yum install libxml2-devel libjpeg-devel libpng-devel freetype-devel libcurl-devel wget -y
linux很多软件的运行,依赖于操作系统本身的一些软件支持
yum groupinstall "Development tools" -y
桌面开发工具包(图形化相关包)
yum groupinstall "Desktop Platform Development" -y
底层编译库的安装
yum install cmake pcre-devel ncurses-devel openssl-devel libcurl-devel -y
2..编译安装mysql
1.mysql的安装规格说明
安装需求
软件版本 安装目录 数据目录 端口
mysql-5.6.31 /usr/local/mysql /usr/local/mysql/data 3306
2. 创建mysql用户,用于给mysql的数据,进程,设置相关的user属主
useradd -r -s /sbin/nologin mysql
3.创建一个源码目录,用于统一安装管理
cd /usr/local ; mkdir software-mysql;cd software-mysql
或者cd /usr/local/;mkdir source-code;cd source-code/ 然后所有源码统一从这个文件夹下载安装。
4.下载源码包,解压并进入,源码文件夹
下载
[root@lamp-241 source-code]# wget -c https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.6/mysql-5.6.50.tar.gz
解压
[root@lamp-241 source-code]# tar -zxf mysql-5.6.50.tar.gz
进入文件夹
[root@lamp-241 source-code]# cd mysql-5.6.50
5.根据需求配置编译参数
[root@lamp-241 mysql-5.6.50]#
创建编译脚本,设置编译参数
vim cmake.sh
[root@lamp-241 mysql-5.6.50]# cat cmake.sh
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
[root@lamp-241 mysql-5.6.50]# 以上配置符号是\同行变多行,或者说多行按同行读取
给脚本添加执行权限
[root@lamp-241 mysql-5.6.50]# chmod +x cmake.sh
[root@lamp-241 mysql-5.6.50]# ll cmake.sh
-rwxr-xr-x. 1 root root 295 Feb 26 17:12 cmake.sh
执行脚本
./cmake.sh
结果
6.编译并安装
[root@lamp-241 mysql-5.6.50]# make && make install
7.安装mysql的后续配置
1)修改mysql安装目录的权限,属主,属组(因为是root用户创建的)
chown -R mysql.mysql /usr/local/mysql/
2)初始化数据库,生成可用的数据库文件
-1.移除默认的mysql配置文件,改名即可
mv /etc/my.cnf /etc/my.cnf.ori
-2.确保没有mysql进程
-3.进入mysql安装目录,开始初始化
[root@lamp-241 mysql-5.6.50]# cd /usr/local/mysql/
[root@lamp-241 mysql]#
[root@lamp-241 mysql]# ./scripts/mysql_install_db --user=mysql
看到两个ok后表示安装正确
-4.验证数据库目录里是否有文件
[root@lamp-241 mysql]# [root@lamp-241 mysql]# ll /usr/local/mysql/data
total 110600
3)制作启动mysql脚本,系统提供好了模板
-拷贝脚本,放入linux一个固定的服务启动目录
[root@lamp-241 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
-启动、检查mysql服务
[root@lamp-241 mysql]#
[root@lamp-241 mysql]# service mysql status
ERROR! MySQL is not running
[root@lamp-241 mysql]# service mysql start
Starting MySQL.Logging to '/usr/local/mysql/data/lamp-241.err'.
SUCCESS!
[root@lamp-241 mysql]# service mysql status
SUCCESS! MySQL running (38476)
4)修改mysql的密码
/usr/local/mysql/bin/mysqladmin -uroot -p password 'xxxxxxxx'
为了不让别人看到你的密码,请清空历史记录
history -c
history -w
成功进入mysql交互页面成功
3.编译安装apache
1. 安装依赖包apr
下载源码,且解压缩,然后编译安装即可
-apr(apache portable run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
wget -c http://archive.apache.org/dist/apr/apr-1.5.2.tar.bz2
[lamp-server root /usr/local/software-apache]$tar -xf apr-1.5.2.tar.bz2
要对apr软件进行编译配置,编译三部曲
以前都是指定
./configure
可能由于其1.5.2的bug,存在一个配置错误,需要修改如下的一个配置参数
并且这里需要修改一个配置
修改此行
[root@lamp-241 apr-1.5.2]# vim configure
29605 RM='$RM -f'
然后进行编译且安装
make
安装
make install
2.再编译安装一个apache必须的基础库apr-util
安装apr-util软件
完整的APR(Apache portable Run-time libraries,Apache可移植运行库)实际上包含了三个开发包:apr、apr-util以及apr-iconv,每一个开发包分别独立开发,并拥有自己的版本。
apr-util该目录中也是包含了一些常用的开发组件。
这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等
1.安装apr-util软件
wget -c https://archive.apache.org/dist/apr/apr-util-1.5.4.tar.bz2
tar -xf apr-util-1.5.4.tar.bz2
cd apr-util-1.5.4
2.开始编译安装apr-utils ,且需要指定安装的apr命令路径
[root@lamp-241 apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config (因为apr安装后产生了文件夹,所以这里也得指定位置)
3.编译且安装
[root@lamp-241 apr-util-1.5.4]# make && make install
3.编译安装这两个基础软件库后,得让系统识别软件库
5.此时apr和apr-util这俩工具,就生成了一些基础的linux文件,你需要告诉linux系统,多了一些这些工具,linux才能够读取到他们的信息,然后apache才能用
把编译安装的apr工具,写入系统的动态库配置文件中,然后更新这些基础动态库即可
[lamp-server root /usr/local/software-apache/apr-util-1.5.4]$echo "/usr/local/apr/lib/" >> /etc/ld.so.conf
执行ldconfig命令,让linux能找到你安装的这个apr即可
[lamp-server root /usr/local/software-apache/apr-util-1.5.4]$ldconfig
4.依赖完毕后,可以编译apache(httpd 了
编译三部曲
1.下载源码解压并进入文件夹
链接
https://archive.apache.org/dist/httpd/
wget -c https://archive.apache.org/dist/httpd/httpd-2.4.37.tar.bz2
[root@lamp-241 source-code]# tar -xf httpd-2.4.37.tar.bz2
[root@lamp-241 source-code]# cd httpd-2.4.37
2.根据需求配置参数
配置参数制作脚本-添加执行权限-执行脚本
[root@lamp-241 httpd-2.4.37]# cat apache-configure.sh
./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
配置参数说明:
apache默认啥功能都没有,必须通过模块的进行添加!
--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
(1)prefork
多进程模型,每个进程响应一个请求
(2)worker
多进程多线程模型,每个线程处理一个用户请求
(3)event(最优)
事件驱动模型,多进程模型,每个进程响应多个请求
添加执行权限,执行该脚本
[root@lamp-241 httpd-2.4.37]# chmod +x apache-configure.sh
[root@lamp-241 httpd-2.4.37]# ./apache-configure.sh
3.编译并安装
[root@lamp-241 httpd-2.4.37]# pwd
/usr/local/source-code/httpd-2.4.37
[root@lamp-241 httpd-2.4.37]# make && make install
4.检查是否安装了
[root@lamp-241 httpd-2.4.37]# ls /usr/local/apache2/
bin build cgi-bin conf error htdocs icons include logs man manual modules
编译安装php
1.解压软件并进入解压目录
wget -c https://museum.php.net/php7/php-7.2.17.tar.xz
tar -xf php-7.2.17.tar.xz
[root@lamp-241 source-code]# cd php-7.2.17
2.根据配置修改参数,并执行脚本--由于参数过多,写成sh文件-权限-执行
[root@lamp-241 php-7.2.17]# vim configure_php.sh
[root@lamp-241 php-7.2.17]#
[root@lamp-241 php-7.2.17]# cat configure_php.sh
./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
执行该脚本
[root@lamp-241 php-7.2.17]# chmod +x configure_php.sh
[root@lamp-241 php-7.2.17]#
[root@lamp-241 php-7.2.17]# ./configure_php.sh
可能报错
yum install libxml2-devel -y
yum install libjpeg-devel -y
yum install libpng-devel -y
yum install freetype-devel -y
yum -y install libcurl-devel
3.编译并安装
[root@lamp-241 php-7.2.17]# make && make install
5.结合php和apache配置
找到conf文件夹apache的配置
ls /usr/local/apache2/conf/
extra httpd.conf magic mime.types original
httpd.conf 主配置文件
extra里面有副配置文件
1.修改apache的主配置文件httpd.conf
主配置文件路径
[lamp-server root /usr/local/software-php/php-7.2.17]$vim /usr/local/apache2/conf/httpd.conf
1.修改apache配置文件,找到你的安装路径
配置语言支持
159 LoadModule negotiation_module modules/mod_negotiation.so 去掉这一行的注释
482 Include conf/extra/httpd-languages.conf 打开此选项,扩展配置文件就生效了
让apache支持php语言的插件,当有用户访问php程序时,apache自动转发给php程序去解析。
166 LoadModule php7_module modules/libphp7.so 找到这一行,然后在下面添加语句
添加以下两行意思是以.php结尾的文件都认为是php程序文件,注意两句话的.php前面都是有一个空格的
也就是长这样
166 LoadModule php7_module modules/libphp7.so
167 AddHandler php7-script .php
168 AddType text/html .php
添加一个默认的网站首页,添加为php的文件
263 #
264 # DirectoryIndex: sets the file that Apache will serve if a directory
265 # is requested.
266 #
267
268 DirectoryIndex index.php index.html
269
270
关于网站默认的首页html文件,存放的目录路径,由以下参数控制
230 # DocumentRoot: The directory out of which you will serve your
231 # documents. By default, all requests are taken from this directory, but
232 # symbolic links and aliases may be used to point to other locations.
233 #
234 DocumentRoot "/usr/local/apache2/htdocs"
235 <Directory "/usr/local/apache2/htdocs">
2.修改apache 的子配置文件,语言conf
[root@lamp-241 php-7.2.17]# vim /usr/local/apache2/conf/extra/httpd-languages.conf
19 DefaultLanguage zh-CN
75 # Just list the languages in decreasing order of preference. We have
76 # more or less alphabetized them here. You probably want to change this.
77 #
78 LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW
3.启动apache
1.生成apache的执行命令
cp /usr/local/apache2/bin/apachectl /etc/init.d/apache
2.启动即可
service apache start
3.如果你要创建apache的systemctl管理脚本,可以用如下技巧
用另一台机器,yum install httpd
查看yum给你生成的httpd.service脚本,然后模仿该脚本写法,修改你编译的http路径即可
4.查看apache是否支持php
打开phpinfo页面即可
[lamp-server root /usr/local/apache2/htdocs]$cat /usr/local/apache2/htdocs/index.php
冲冲冲
由此已经部署好了LAMP linux apache mysql php
5.准备wordpress源码
1.下载博客源码
wget -c https://cn.wordpress.org/wordpress-4.7.3-zh_CN.tar.gz
2.解压缩该源码,放入到httpd的网页根目录中去
[lamp-server root /opt/wordpress]$ls
wordpress wordpress-4.7.3-zh_CN.tar.gz
[lamp-server root /opt/wordpress]$mv wordpress/* /usr/local/apache2/htdocs/
3.由于是静态文件做了更改,你不需要重启httpd,直接访问该网站即可
但是,注意,先看一下apache的启动进程,用户是谁
修改wordpress源码文件的属主、属组,防止权限有问题
[lamp-server root /opt/wordpress]$chown -R daemon.daemon /usr/local/apache2/htdocs/
4.此时可以去访问网站了
6.访问wordpress,查看博客安装
1.1.发现该博客需要写入数据库,wordpress,需要你先创建这个数据库
登录数据库,操作
[lamp-server root /opt/wordpress]$mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.50 Source distribution
......
mysql>
创建wordpress数据库
mysql> create database wordpress default charset utf8;
Query OK, 1 row affected (0.00 sec)
结果
用户访问 wenjie.top/index.php > lamp的linux服务器
apache(index.php) >
php (处理wordpress程序) >
mysql(用户数据,博客文章数据)
7.最后,确保看到如下结果即可