LAMP 指的是Linux Apache mysql php ,安装到Linux上,搭建一个环境来运行php脚本语言

(1)安装mysql (3306端口)

 cd /usr/local/src/    进入目录
 wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.31-linux-glibc2.5-i686.tar.gz     下载文件
 tar zxvf mysql-5.6.31-linux-glibc2.5-i686.tar.gz    解压文件
 mv mysql-5.6.31-linux-glibc2.5-i686 /usr/local/mysql    移动并重命名
 cd ../mysql/    进入到文件夹内
 需要先建立mysql用户
 useradd -s /sbin/nologin -M mysql 没有家目录,不需要登陆
 mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql    建立文件夹并修改权限
 ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/    初始化.用户为mysql , 安装路径在/data/mysql/
 初始化过程中,会提示错误,是缺少libaio , 直接安装
 yum install -y libaio*
 cp my.cnf /etc/my.cnf    cp配置文件
 cp support-files/mysql.server  /etc/init.d/mysqld  ; chmod 755 /etc/init.d/mysqld cp启动脚本并修改文件属性
 vim /etc/init.d/mysqld 修改启动脚本  datadir=/data/mysql  basedir=/usr/local/mysql
 chkconfig --add mysqld 启动脚本加入系统服务
 chkconfig mysqld on    设置为开机启动
 service mysqld start    启动mysql
 netstat -lnp |grep mysql        查看mysql端口.一般为3306


(2)安装Apache (httpd 80端口)

wget  http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.31.tar.gz    下载
tar zxvf httpd-2.2.31.tar.gz    解压
cd httpd-2.2.31    进入
 
./configure \
--prefix=/usr/local/apache2 \ 
--with-included-apr \    
--enable-so \ 
--enable-deflate=shared \ 
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre
deflate expires rewrite =shared 已动态共享的方式运作  so 启用DSO deflate 共享的方式编译deflate  pcre 正则相关的库


常常会遇到一些错误

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

解决方案: 将APR和APR-util×××,解压放到httpd-2.4.3/srclib里面,并去除版本号

wget 
tar zxvf apr-1.5.2.tar.gz
cp -r apr-1.5.2 httpd-2.4.20/srclib/apr
wget 
tar zxvf apr-util-1.5.4.tar.gz
cp -r apr-util-1.5.4 httpd-2.4.20/srclib/apr-util

错误

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

这是因为没有安装编译器.一般使用GCC,直接安装

yum install gcc
可能需要的包
 yum install -y zlib-devel pcre pcre-devel apr apr-devel
 make && make install
 /usr/local/apache2/bin/apachectl start

查看模块 static 静态加载 shared 动态共享加载 

/usr/local/apache2/bin/apachectl -M    (-l 查看静态模块) (-t 查看配置文件是否有语法错误)

重启Apache

/usr/local/apache2/bin/apachectl restart

重新加载Apache(配置文件)

/usr/local/apache2/bin/apachectl graceful

关于静态模块prefork.c的模式

有worker prefork event

prefork 主进程 子进程

worker 主进程 子进程 子进程下还有线程(高并发时占优势,线程占内存少)

event 是worker的升级版.保持长连接时,性能比worker好

重启错误

httpd: apr_sockaddr_info_get() failed for bogon
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

没有在 /etc/httpd/conf/httpd.conf 中设定 ServerName。所以apache会用主机上的名称来取代,首先会去找 /etc/hosts 中有没有主机的定义。

所以要解决这个问题可以设定httpd.conf文件中的 ServerName,如下:

   (1) ServerName localhost:80                        

   或者在 /etc/hosts 中填入自己的主机名称 bogon,如下

   (2)127.0.0.1 bogon

(3) 安装PHP

wget http://cn2.php.net/distributions/php-5.6.22.tar.gz    下载
tar zxvf php-5.6.22.tar.gz    安装
cd php-5.6.22    进入
 ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/php/etc  \
--with-mysql=/usr/local/mysql \
--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 \
--disable-ipv6
可能需要的包
 yum install -y libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype freetype-devel libmcrypt-devel libjpeg* 
 make &&make install
 cp php.ini-production /usr/local/php/etc/php.ini    cp配置文件

编译的时候遇到的错误

make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1

编译的时候添加 --disable-fileinfo   据说是内存小于1G引起的


--with-apxs2=/usr/local/apache2/bin/apxs   一个自动帮助安装扩展模块的工具

 

(4)测试PHP解析

找到

AddType application/x-gzip .gz .tgz

在其下添加

AddType application/x-httpd-php .php

找到

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

改为

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>

检测Apache配置是否有问题

/usr/local/apache2/bin/apachectl -t

没问题重新加载配置文件

/usr/local/apache2/bin/apachectl graceful

用info.php可以查看曾经是在怎样编译php的

<?php
phpinfo();
?>

注: Apache查看 */apache2/build/config.nice 

    mysql查看 */mysql/bin/mysqlbug