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-pcredeflate 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