LAMP环境搭建
1.了解LAMP
LAMP是指Linux+apache+MySQL+PHP的环境部署。其中Linux提供了系统平台;apache是部署的项目和外界的接口,其协议HTTP可以通过客户端浏览器进行访问;MySQL是LAMP中的数据库,但是apache并不能直接调用其中的数据,是通过PHP语言环境中的项目进行引用的;PHP表明了这个环境平台适合于PHP开发项目的部署的,如果需要部署其他语言开发的项目,就需要搭建不同的语言环境。
2.环境搭建准备
- #需要关闭SElinux和firewalld,避免因为防火墙问题导致网络问题的出现;
- #配置yum源,可以是光盘源、网络源或者自己的源码包(都需要满足搭建环境要求的软件包,建议使用源码包);本次主要以自己的源码包进行讲解;
- #将源码包拷进服务器并关闭系统默认安装的相关rpm包。
3.安装apache
①安装apache基础依赖:
$ yum -y install openssl openssl-devel zlib zlib-devel pcre pcre-devel
openssl:ssl加密,用于https;
zlib:涉及压缩;
pcre:pcre语言正则表达式
#解压拷进服务器的源码包文件,建议写一个脚本,放进解压之后的源码包文件夹(lamp)
vim jieya.sh
#!/bin/bash
for i in $(ls /root/lamp/*.tar.gz)
do
tar -zxf $i
done
②解决http安装时的依赖关系
$ cp -a apr-1.4.6 httpd-2.4.47/srclib/apr
$ cp -a apr-util-1.4.1 httpd-2.4.47/srclib/apr-util
直接将依赖的文件拷进httpd-2.4.47/srclib下就可以了
③开始安装apache(注:安装http2协议时,需要openssl在1.0.2以上,使用openssl version进行版本查看)
进入lamp(源码包位置)
$yum -y install libnghttp2-1.33.0-1.1.el7.x86_64.rpm
$yum -yi nstall libnghttp2-devel-1.33.0-1.1.el7.x86_64.rpm
$ cd httpd-2.4.47
$./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --enable-headers --enable-expires --enable-modules=most --enable-deflate --enable-ssl --enable-http2
$ make && make install
#编译、安装,每步执行完用echo $?检测
#prefix:指定安装路径,
#enable-rewrite:开启地址重写,
#enable-so:开启dso(动态共享对象),
#enable-headers:允许修改http的请求头,
#enable-expires:允许客户端缓存,
#enable-modules=most:尽可能安装更多模块,
#enable-deflate:开启对压缩的支持,
#enable-ssl:开启https的支持,
#enable-http2:开启http2协议的支持
#检测配置文件、启停服务
$ /usr/local/apache2/bin/apachectl -t
$ /usr/local/apache2/bin/apachectl start
$ /usr/local/apache2/bin/apachectl stop
#查看服务启动情况
$ ss -antp | grep :80 #查看apache是否启动成功
$ ps -aux | grep httpd #查看是否产生进程
安装完成后,可以使用浏览器进行IP访问。
4.安装MySQL
①安装基础环境
#cmake命令在mysql的5.5版本之后,取代./configure命令进行编译、安装前的环境检查;
#bison是一个自由软件,用于自动生成语法分析器程序,可用于所有常见的操作系统;
#ncurses 提供字符终端处理库,是 使应用程序(如命令终端)直接控制终端屏幕显示的函数库;
$ yum -y install cmake bison ncurses-devel ncurses
#添加mysql用户(不能登陆系统用户)
$ useradd -r -M -s /sbin/nologin mysql
②安装MySQL(进入源码包/root/lamp下)
$ cd mysql-5.5.48
$cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306
$ make && make install
#选项详解:
#-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 安装位置
#-DMYSQL_UNIX_ADDR=/tmp/mysql.sock指定socket(套接字)文件位置
#-DEXTRA_CHARSETS=all 扩展字符支持
#-DDEFAULT_CHARSET=utf8 默认字符集
#-DDEFAULT_COLLATION=utf8_general_ci 默认字符校对
#-DWITH_MYISAM_STORAGE_ENGINE=1 安装myisam存储引擎
#-DWITH_INNOBASE_STORAGE_ENGINE=1 安装innodb存储引擎
#-DWITH_MEMORY_STORAGE_ENGINE=1 安装memory存储引擎
#-DWITH_READLINE=1 支持readline库
#-DENABLED_LOCAL_INFILE=1 启用加载本地数据
#-DMYSQL_USER=mysql 指定mysql运行用户
#-DMYSQL_TCP_PORT=3306 指定mysql端口
#生成配置文件
$ cp -a support-files/my-medium.cnf /etc/my.cnf
#进入到指定的安装目录
$ cd /usr/local/mysql
#修改MySQL数据的用户归属
$ chown -R mysql data
#初始化数据库
$ ./scripts/mysql_install_db --user=mysql
#后台启动
$ /usr/local/mysql/bin/mysqld_safe --user=mysql &
#查看启动结果、测试服务
$ ss -antp | grep :3306
----服务端就完成了
----客户端连接mysql服务(服务端和客户端在一台服务器上)
$ /usr/local/mysql/bin/mysql
mysql> show databases;
#设定MySQL密码(初始化密码,只能设置一次)
$ /usr/local/mysql/bin/mysqladmin -uroot password 123
#登录MySQL
$ /usr/local/mysql/bin/mysql -uroot -p,回车输入密码
mysql> show databases;
5.安装PHP
①安装基础依赖(进入/root/lamp)
#安装配置文件解析库(libxml2),安装sqlite操作数据文件
$yum -y install freetype-devel libxml2-devel libxml2 python-devel libicu-devel libpng-devel libcurl-devel libjpeg-devel expat expat-devel libzip sqlite-devel openssl openssl-devel
#轻量级目录访问协议
$yum -y install openldap openldap-devel
$cp -a /usr/lib64/libldap* /usr/lib/
#oniguruma 是一个处理正则表达式的库,在安装 php7.4及其以上版本中的正则表达式处理功能依赖这个包
$yum -y install oniguruma-6.7.0-1.el7.x86_64.rpm
$yum -y install oniguruma-devel-6.7.0-1.el7.x86_64.rpm
#安装libzip依赖,系统自带版本是0.10.1,php7.4需要升级libzip版本(>=1.3.1)
$yum remove libzip
$cd libzip-1.3.2
$./configure
$make && make install
$export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
②安装PHP
$ cd php-7.4.33/
#编译
$./configure --prefix=/usr/local/php74 --with-config-file-path=/usr/local/php74/etc --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-freetype --with-jpeg --with-zlib --with-zip --with-expat --with-openssl --with-mhash --enable-soap --enable-mbstring=all --enable-sockets --enable-gd --without-pear --with-ldap=shared --enable-intl --with-curl
#安装
$ make && make install
#选项详解:
#--with-config-file-path=/usr/local/php74/etc/ 指定配置文件目录
#--with-apxs2=/usr/local/apache2/bin/apxs 指定apache动态模块位置
#--with-mysqli=/usr/local/mysql/bin/mysql_config指定mysqli位置,php连接mysql的工具
#--with-pdo-mysql=/usr/local/mysql 启用mysql的pdo(php数据对象)模块支持
#--with-freetype 加载字体库
#--with-jpeg 加载jpeg
#--with-zlib --with-zip 支持各种压缩
#--with-expat 加载libxml2
#--with-mhash 加载加密库
#--with-ldap=shared 加载动态的目录访问库
#--enable-soap 支持soap(简单对象访问协议)
#--enable-mbstring=all 支持多字节,字符串
#--enable-sockets 支持套接字
#--enable-gd 启用gd(php处理图形的扩展库)#--without-pear 不安装pear(安装pear需要连接互联网)
#--enable-intl php扩展,可以方便地处理多语言和跨国界的应用
#--with-curl php扩展,可以实现服务器之间的数据或文件传输#生成php配置文件
$ mkdir /usr/local/php74/etc
$ cp -a php.ini-production /usr/local/php74/etc/php.ini
#测试可以运行php代码
$ vim test.php
<?php
die("hello world\n")
?>
$/usr/local/php74/bin/php test.php
6.配置关联
#修改apache配置文件,使其识别*.php文件,并通过php模块调用php进行页面解析
$vim /usr/local/apache2/conf/httpd.conf
#查看自动添加了php模块:libphp7.so
#添加下面类型
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
#重启Apache服务
$/usr/local/apache2/bin/apachectl stop
$/usr/local/apache2/bin/apachectl start
------------------------
#编写php界面、访问,即测试apache和php的连通性
$vim /usr/local/apache2/htdocs/test-php.php
<?php
phpinfo();
?>
$ 浏览器输入网址访问:http://apacheServerIP/test-php.php
-----------------------
#编写php网页中连接mysql数据库,即测试mysql和php的连通性$vim /usr/local/apache2/htdocs/test-php-mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "123";
// 创建连接
$conn = mysqli_connect($servername, $username, $password);
// 检测连接
if ($conn) {
echo "连接成功";
} else {
//die() 函数输出一条消息,并退出当前脚本,是 exit() 函数的别名。
die("Connection failed: " . mysqli_connect_error());
}
// 创建数据库
$sql = "CREATE DATABASE wordpress";
$jieguo = mysqli_query($conn, $sql);
if ($jieguo) {
echo "数据库创建成功";
} else {
die("Error creating database: " . mysqli_error($conn));
}
mysqli_close($conn);
?>
$浏览器输入网址访问:http://apacheServerIP/test-php-mysql.php
7.部署网站
#计划安装php代码的项目,其项目默认网页文件是index.php
#设置权限:1,管理apache服务网页根目录的权限;2,管理Apache服务进程的权限;
$useradd -r -M -s /sbin/nologin apache
$chown -R apache:apache /usr/local/apache2/htdocs
$vim /usr/local/apache2/conf/httpd.conf
#设置管理Apache服务进程的权限,用ps命令可查看
User apache
Group apache
<IfModule dir_module>#默认界面添加index.php
DirectoryIndex index.html index.php
</IfModule>添加
#重启apache服务
$/usr/local/apache2/bin/apachectl stop
$/usr/local/apache2/bin/apachectl start
---------------------
#部署wordpress项目:WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的。
$cd lamp软件包存放目录(可以进入到自己的PHP项目中进行解压)
$tar -zxf wordpress-4.7.4-zh_CN.tar.gz
$cp -a wordpress /usr/local/apache2/htdocs/
$chown -R apache:apache /usr/local/apache2/htdocs/wordpress
#访问wordpress网站,
http://serverIP/wordpress
#第一步连接数据库(database名、连接数据库用户名、密码、数据库所在服务器即端口、数据表前缀)
$/usr/local/mysql/bin/mysql -uroot -p123
$show databases;
8.总结
LAMP的搭建步骤是一定的,不要遗漏,安装步骤也可以进相应服务的官网查询官方的安装步骤;项目部署之前需要在apache服务中添加默认网页打开文件类型(index.php),项目的部署,主要是通过将项目的文件拷进/usr/local/apache2/htdocs/ 下,对该文件目录递归设置所有者和所有组(apache)然后即可登陆相应的网站等;PHP项目是通过内部的命令调用MySQL的,在相应网站上面的注册信息及发布的内容也都会记录到MySQL相应的表格文件中,以供存储及调取。