LAMP环境搭建与配置(一)

一.LAMP架构介绍

各字母代表的意义

L:Linux
A:Apache(httpd)
M:MySQL
P:PHP

三个角色如何工作

httpd、PHP、MySQL三者如何工作:
三个角色可以在一台机器、也可以分开(httpd和PHP要在一起)
在这里插入图片描述

二. 安装MySQL

MySQL官网https://www.mysql.com

1.下载

下载源码包:mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ls
mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

2.解压

tar zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

3.安装和配置

1)移动位置
# mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
# cd /usr/local/mysql/
2)建立MySQL用户,因为启动MySQL需要该用户
# useradd -s /sbin/nologin mysql
3)创建datadir,数据库文件会放到这里面
# mkdir -p /data/mysql
4)更改权限,不更改后续操作就会出问题
# chown -R mysql:mysql /data/mysql
5)执行脚本
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/
//–user表示定义数据库的以哪个用户的身份运
//–datadir表示定义数据库的安装目录

会报错,安装下面即可
# yum install -y perl-Module-Install
6)更改配置文件
# cp support-files/my-default.cnf /etc/my.cnf
# vi /etc/my.cnf

# These are commonly set, remove the # and set as required.
 basedir = /usr/local/mysql     //basedir表示MySQL包所在路径
 datadir = /data/mysql				//表示定义存放数据的位置
 port = 3306								//port表示定义MySQL服务监听的端口号
 server_id = 155						//表示该MySQL服务的ID号
 socket = /tmp/mysql.sock		//定义MySQL服务监听的套接字地址

# cp support-files/mysql.server /etc/init.d/mysqld
# vi /etc/init.d/mysqld

basedir=/usr/local/mysql
datadir=/data/mysql

4.开启服务并安装

开启服务

[root@localhost mysql]# chkconfig --add mysqld	//把mysql服务加到系统服务列表中
[root@localhost mysql]# chkconfig mysqld on		//开机就启动
[root@localhost mysql]# service mysqld start			//启动服务
Starting MySQL.Logging to '/data/mysql/localhost.localdomain.err'.
. SUCCESS! 

. SUCCESS! 表示开启成功
查看进程
ps -ef | grep mysqld

5.遇到的问题

在这里插入图片描述
安装:
yum install -y perl-Module-Install

三. 安装Apache

Apache是一个基金会的名字,httpd才是我们要安装的软件包,早期它的名字就叫apache
Apache官网www.apache.org

1.下载

下载源码包:httpd-2.4.39.tar、apr-1.6.5.tar和apr-util-1.6.1.tar

[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ls
apr-1.6.5.tar.gz       mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
apr-util-1.6.1.tar.gz  httpd-2.4.46.tar.gz   

apr和apr-util是一个通用的函数库,它让httpd可以不关心底层的操作系统平台,可以很方便地移植(从linux移植到windows)

2.解压

[root@localhost src]# tar -zxvf httpd-2.4.46.tar.gz  
[root@localhost src]# tar -zxvf apr-1.6.5.tar.gz 
[root@localhost src]# tar -zxvf apr-util-1.6.1.tar.gz

3.安装和配置

1)apr-1.6.5.tar.gz

[root@localhost src]# cd /usr/local/src/apr-1.6.5
[root@localhost src]# ./configure --prefix=/usr/local/apr
[root@localhost src]# make && make install

2)apr-util-1.6.1.tar.gz

[root@localhost ~]# cd /usr/local/src/apr-util-1.6.1
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@localhost apr-util-1.6.1]# make && make install

3)httpd-2.4.46.tar.gz

[root@localhost ~]# cd /usr/local/src/httpd-2.4.46
[root@localhost httpd-2.4.46]# ./configure \   //这里的反斜杠是脱义字符,加上它我们可以把一行命令写成多行
--prefix=/usr/local/apache2.4 \		//--perefix指定安装目录
--enable-so \									//--enable-so表示启用DSO
--with-pcre \
--with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all 	\			//表示以共享形式安装模块
--with-mpm=prefork	
[root@localhost src]# make && make install

4.安装成功

[root@localhost apache2.4]# ls /usr/local/apache2.4/modules
[root@localhost apache2.4]# /usr/local/apache2.4/bin/apachectl -M   //查看配置文件有哪些文件
//share字样的动态共享模块,static以静态形式存在

5.遇到的问题

1)./configure ,apr-1.6.5时出现的问题:

configure: error: in `/usr/local/src/apr-1.6.5':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

解决方法:安装libtool*,命令如下:
yum install -y libtool*

2)make && make install ,apr-util-1.6.1时出现的问题:

fatal error: expat.h: No such file or directory
 #include <expat.h>
                   ^
compilation terminated.
make[1]: *** [xml/apr_xml.lo] Error 1
make[1]: Leaving directory `/usr/local/src/apr-util-1.6.1'
make: *** [all-recursive] Error 1

解决方法:安装expat-devel,命令如下:
yum install -y expat-devel

3)./configure ,httpd-2.4.46时出现的问题:

configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

解决方法:

[root@localhost httpd-2.4.46]# cd /usr/local/src
[root@localhost src]# cp -r apr-1.6.5 httpd-2.4.46/srclib/apr
[root@localhost src]# cp -r apr-util-1.6.1 httpd-2.4.46/srclib/apr-util
[root@localhost src]# cd httpd-2.4.46
[root@localhost httpd-2.4.46]# 

再次执行:

[root@localhost httpd-2.4.46]# ./configure --prefix=/usr/local/apache2.4 --enable-so --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
...
error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

解决方法:安装pcre-devel,命令如下:
yum install -y pcre-devel

四. 安装PHP

PHP官网www.php.net
当前主流版本为5.6/7.1

1.下载

下载资源包:php-5.6.30.tar.gz、php-7.1.6.tar.bz2

[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ls
apr-1.6.5              httpd-2.4.46.tar.gz
apr-1.6.5.tar.gz       mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
apr-util-1.6.1        apr-util-1.6.1.tar.gz  php-5.6.30.tar.gz
httpd-2.4.46           php-7.1.6.tar.bz2

2.解压

[root@localhost src]# tar -zxvf php-5.6.30.tar.gz
[root@localhost src]# tar -jxvf  php-7.1.6.tar.bz2

3.安装和配置

1)php-5.6.30.tar.gz

[root@localhost src]# yum install -y libxml2-devel  bzip2  bzip2-devel  libpng libpng-devel  openssl openssl-devel  freetype  freetype-devel opel-release  epel-release libmcrypt-devel
//为防止配置时出错提前安装库文件	
[root@localhost src]# cd  php-5.6.30
[root@localhost src]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc  --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd  --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
[root@localhost src]# make && make install
[root@localhost php-5.6.30]# cd /usr/local/src/php-5.6.30
[root@localhost php-5.6.30]# /usr/local/apache2.4/bin/httpd -M
[root@localhost php-5.6.30]# cp php.ini-production  /usr/local/php/etc/php.ini

2)php-7.1.6.tar.bz2

[root@localhost src]# yum install -y libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel 
[root@localhost src]# cd php-7.1.6
[root@localhost src]# ./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc  --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
[root@localhost src]# make && make install
[root@localhost php-7.1.6]# ls /usr/local/apache2.4/modules/libphp7.so
/usr/local/apache2.4/modules/libphp7.so
[root@localhost php-7.1.6]# pwd
/usr/local/src/php-7.1.6
[root@localhost php-7.1.6]# cp php.ini-production  /usr/local/php7/etc/php.ini

五. httpd解析PHP

4.编辑httpd的主配置文件

# vi /usr/local/apache2.4/conf/httpd.conf
1)ServerName

#ServerName www.example.com:80
改成:
ServerName www.example.com:80

2)Require all granted

<Directory />
    AllowOverride none
    Require all denied
</Directory>
改成:
<Directory />
    AllowOverride none  
    Require all granted
</Directory>    //目的允许所有请求访问  

3)AddType application/x-httpd-php .php

在下面添加一行 :
AddType application/x-httpd-php .php

4)DirectoryIndex index.html

<IfModule dir_module>
    DirectoryIndex index.html 
</IfModule>
改成:
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

5)LoadModule php5_module

将
LoadModule php5_module        modules/libphp5.so
改为:
LoadModule php7_module        modules/libphp7.so

5.测试安装

1)测试配置文件是否正确

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

2)启动httpd
# /usr/local/apache2.4/bin/apachectl start
3)查看是否启动

[root@localhost conf]# cd /usr/local/apache2.4/conf
[root@localhost conf]# netstat -lnp |grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      37176/httpd 

4)使用curl命令简单测试,显示了就是成功

[root@localhost conf]# curl localhost
<html><body><h1>It works!</h1></body></html>

5)测试是否正确解析PHP

[root@localhost conf]# vi /usr/local/apache2.4/htdocs/test.php
<?php
echo  “php解析正确”
?>
[root@localhost conf]# curl localhost/test.php
“php解析正确”

6.遇到的问题

[root@localhost conf]# /usr/local/apache2.4/bin/apachectl start
/usr/local/apache2.4/bin/apachectl: line 79: 37111 Segmentation fault      $HTTPD -k $ARGV

解决办法:
将/usr/local/apache2/conf/httpd.conf中的
LoadModule php5_module modules/libphp5.so注释掉

并添加
LoadModule php7_module modules/libphp7.so

猜你喜欢

转载自blog.csdn.net/zhang_ZERO/article/details/109095725