任务1 安装LAMP,基础配置解析PHP
一.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表示定义数据库的安装目录
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.遇到的问题
[root@tomcat mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/
-bash: ./scripts/mysql_install_db: /usr/bin/perl: bad interpreter: No such file or directory
安装:
# yum -y install perl perl-devel
[root@tomcat mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
安装:
# yum install -y perl-Data-Dumper
三. 安装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