本次APACHE PHP MYSQL 在同一台主机的编译安装
源码安装Linux6.6 +Apache2.4 +Mysql5.5+Php5.4+phpMyAdmin4.0 + Xcache3.0为PHP加速
Apache2.4与Php5.4通信是 modules的方式
111111111111111111111111111111111111111111111111111111111111111111
11111111111111111 1111111111111111111111
11111111111111111 编译APACHE 1111111111111111111111
11111111111111111 1111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111
安装环境搭建:
yum groupinstall "Development tools" 安装开发包组
yum groupinstall "Server Platform Development" 安装开发包组
如果不想编译pcre那么
yum -y install pcre-devel libzip-devel
编译时要指定 --with-pcre 即可
apr->apr-util->pcre--->httpd
更新时间:
hwclock -s
tar xf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install
cd ..
--------------------------------
在执行configure可能会出现
rm: cannot remove `libtoolT': No such file or directory错误信息。
--------------------------------
解决方法:
提示编辑configure这个文件,将 $RM "$cfgfile" 那行注释掉 ,然后重新编译即可。
--------------------------------
tar xf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
cd ..
tar xf pcre-8.37.tar.gz
cd pcre-8.37
./configure --prefix=/usr/local/pcre
make && make install
cd..
tar xf httpd-2.4.16.tar.gz
cd httpd-2.4.16
./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-cgi \
--enable-cgid \
--enable-rewrite \
--enable-ssl \
--with-zlib \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-pcre=/usr/local/pcre \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=event
make && make install
cd..
重要选项说明:
--perfix=/usr/local/apache 指定安装目录
--sysconfdir=/etc/httpd24 指定配置文件目录
--enable-so 启用 支持基于DSO动态共享模块 (必要)
--enable--ssl 启用支持加密访问https(必要)
--enable-rewirte 启用 支持URL重写(必要)
--enable-cgi 启用 支持CGI脚本
--enable-cgid 启用支持带线程CGI脚本 MPMs(如果选event那么就必须要有cgid)
--enable-modules=most 启用常用共享模块(动态)(必要)
--enable-mpms-shared=all 启用MPM支持全部多道处理方式3种(prefork worker event)
--with-event 指定prefork worker event的其中一个为默认启用
--with-zlib 调用库 (必要)
--with-apr=/usr/local/apr 指定APR路径(必要)
--with-apr=/usr/local/apr-util 指定APR-UTIL路径(必要)
--with-pcre=/usr/local/pcre 指定pcre库路径(必要)
httpd2.4新特性
1)MPM支持在运行时装载
--enable-mpms-shared=all 并设定默认的启用的MPM --with-mpm=event
2) 支持event
3)异步读写
4) 在每模块及每目录上指定日志级别
5)每请求配置:<If> <Elseif>
6) 增强版的表达式分析器
7) 毫秒级的keepalive timeout
8)支持主机名的虚拟主机不在需要NameVirtualHost指令
9) 支持使用自定义变量
新增一些模块: mod_proxy_fcgi 和PHP交互用fastCGI
mod_ratelimit 速率限定
mod_request 对请求方法限定
mod_remoteip 对远端IP最限制
对于基于IP的访问做了修改,统一使用require进行
后续的配置:
0产看 HTTP运行模式 prefork worker event
#/usr/local/apache/bin/httpd -l 看不到了
#/usr/local/apache/bin/apachectl -l 看不到了
环境变量里面没有
cp /usr/local/apache/bin/apachectl /usr/local/bin/httpd24
可以用了 httpd24 -V 版本 -M 模块 -l
1导出头文件(开发)才用到
# ln -sv /usr/local/apache/include /usr/include/httpd
2配置文件并且定义Pid文件的路径
# vim /etc/httpd24/httpd.conf
添加 PidFile "/var/run/httpd/httpd.pid"
去掉#号ServerName 192.168.1.202:80
具体可以自己设置虚拟主机
访问控制等
3导出man手册
# vim /etc/man.config
MANPATH /usr/local/apache/man
4输出二进制程序
# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd24.sh
. /etc/profile.d/httpd24.sh
5提供服务脚本
1 cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd24
(24用于区分httpd)
2vim /etc/rc.d/init.d/httpd24
在开头的#!/bin/sh 下面加上
#chkconfig: 2345 85 15
3权限与检测
chmod +x /etc/init.d/httpd24 给执行权限
chkconfig --add httpd24 加入系统自启动
chkconfig --list | grep httpd24 看看是否看机启动ON OFF
service httpd24 start 启动HTTP服务
netstat -tunlp 检测端口是否开启
top 看是否httpd 进程USER是daemon
222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222 222222222222222222222
22222222222222222222 通用二进制格式安装MYSQL 222222222222222222222
22222222222222222222 222222222222222222222
222222222222222222222222222222222222222222222222222222222222222222222222
安装依赖包yum install wget gcc gcc-c++ make cmake ncurses-devel libtool zilib-devel automake perl libncurses5-dev kdelibs_dev kdelib
第一步:
1解压到USR/LOCAL目录(通用二进制必须路径)
tar xf mysql-5.5.TAB键 -C /usr/local
2创建MYSQL组(安全)
groupadd -r mysql
3创建MYSQL用户并不登录(安全)
useradd -g mysql -r -s /sbin/nologin mysql
4验证一下
id mysql
uid=499(mysql) gid=498(mysql) 组=498(mysql)
5进入目录并创建软链接
cd /usr/local
ln -sv mysql-5.5.40-linux2.6-x86_64 mysql
6进入目录:
cd /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/*
第二步:实现规划好MYSQL的数据板寸目录(最好是RIND下的LVM上 开机挂载 )
假设已经是LVM了挂载点为 /data 目录下创建目录mysqldata
/data/mysqldata 这个目录要改属主属组(目的是让MYSQL进程有权限写等)
# chown -R mysql.mysql /data/mysqldata
chown -R mysql.mysql /usr/local/mysql/data
chmod -R 755 /usr/local/mysql/data
1执行数据库初始化脚本
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
--basedir 安装目录
--datadir 数据目录
--defaults-extra-file 额外文件的目录(安装文件)
--user 运行用户
2把/usr/local/mysql目录下所有文件属主改成ROOT
chown -R root ./*
3拷贝启动脚本到init.d目录,加入service服务控制,查看开机启动
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld
4拷贝配置文件:
cp support-files/my-large.cnf /etc/my.cnf 512M内存
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf 4 G 内存
vim /etc/my.cnf
如果你改了MYSQL的数据目录位置)
datadir=路径
thread_concurrency = 4 是CPU物理核心的2倍
5 启动并测试
service mysqld start
ss -ntl 看3306端口
6 客户端连接
/usr/local/mysql/bin下有命令把他加入环境变量
vim /etc/profile.d/mysql.sh
内容 export PATH=/usr/local/mysql/bin:$PATH
读一下这个文件
. /etc/profile.d/mysql.sh
7 初次登录mysql给ROOT加入密码删除危险用户:
#mysql
mysql>
1删危险用户:
use mysql; 把MYSQL设置为默认库
SHOW Databases; 看有几个库
SHOW TABLES; 看默认库中有多少表
DESC user; 看USER表
SELECT User,Host,Password FROM user;看USER表的几个字段
DROP User ''@'localhost';
DROP User ''@'tset.centos';
2加密码(安全)分别加也可以一起加密码:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('litao_59');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('litao_59');
SET PASSWORD FOR 'root'@'主机名' = PASSWORD('litao_59');
SET PASSWORD FOR 'root'@'::1' = PASSWORD('litao_59');
或者
UPDATE user SET password=PASSWORD('litao_59') WHERE user='root';
flush privileges; 通知mysql重读授权表让授权立即生效
3root 用户方便自己登陆的配置
cd ~ 回家
vim .my.cnf
[mysql]
user = root
host = localhost
password = litao_59
4导出头文件库文件
ln -sv /usr/local/mysql/include/ /usr/include/mysql 头文件
vim /etc/ld.so.conf.d/mysql.conf 建立库文件配置文件
输入/usr/local/mysql/lib
ldconfig 读一下MYSQL库
ldconfig -p | grep mysql 查看
libmysqlclient.so.18 有他就好
5给某些用户授权:
CREATE DATABASE taodb; 创建taodb数据库
GRANT ALL PRIVILEGES ON taodb.* TO 'tao'@'localhost' IDENTIFIED BY'litao_59';
权限所有 把taodb数据库授权给用户tao登录范围localhost (php的IP) 登录密码litao_59
flush privileges; 通知mysql重读授权表让授权立即生效
------------------------
完毕 service mysqld restart
------------------------
3333333333222223333333333333333333333333333333333333333333333333333
3333333333332222233333 333333333333333333333333333
3333333322223333333333 编译 PHP5.4 333333333333333333333333333
3333333333332222233333 333333333333333333333333333
3333333333332222233333333333333333333333333333333333333333333333333
编译前安装需要图形开发包组:
yum groupinstall 'Server Platform Development'
libmcrypt扩展及其压缩:
yum -y install libmcrypt-devel bzip2-devel
-------PHP编译------------
tar xf php-5.4.25.tar.gz
cd php-5.4.25
二、FastCGI方式结合
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-mcrypt --with-config-file-path=/etc --with-config-file--scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
./configure --prefix=/usr/local/php 指定目录
--with-mysql=/usr/local/mysql 如果是RPM包安装的MYSQL直接用--with-mysql 要装mysql-devel
--with-openssl 支持SSL
--with-mysqli=/usr/local/mysql/bin/mysql_config 通信机制要找到/usr/local/mysql/bin/mysql_config借口
--enable-mbstring 多字节字串
--with-freetype-dir 支持freetype字体解析工具
--with-jpeg-dir 图片
--with-png-dir 图片
--with-zlib 压缩库
--enable-xml 支持xml
--with-libxml-dir=/usr 到哪里找xml
--enable-sockets 支持sokets通信
--with-apxs2=/usr/local/apache/bin/apxs 找apache2 的 apxs文件
--with-mcrypt
--with-config-file-path=/etc 配置文件php.ini路径
--with-config-file-scan-dir=/etc/php.d 扫描路径下当做配置文件
--with-bz2 支持压缩
--enable-maintainer-zts 支持
看到--------------没错什么错误--------------------
config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
看到--------------------make-----------------------
clicommand.inc
invertedregexiterator.inc
directorygraphiterator.inc
directorytreeiterator.inc
pharcommand.inc
phar.inc
Build complete.
Don't forget to run 'make test'.
看到-----------------make install------------------
[PEAR] Archive_Tar - installed: 1.3.12
[PEAR] Console_Getopt - installed: 1.3.1
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util - installed: 1.2.3
[PEAR] PEAR - installed: 1.9.5
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
/root/php-5.4.25/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f /usr/local/php/bin/phar.phar /usr/local/php/bin/phar
Installing PDO headers: /usr/local/php/include/php/ext/pdo/
-成功-----------------------------------------------
2设置PHP的配置文件:
cd 源码包里
cp php.ini-production /etc/php.ini
3 编辑Apache支持PHP
vim /etc/httpd24/httpd.conf
增加:
250行 DirectoryIndex index.php index.html
379行 AddType application/x-httpd-php .php
380行 AddType application/x-httpd-source .phps
4 验证Apache与PHP
rm -rf /usr/local/apache/htdocs/index.html
vim /usr/local/apache/htdocs/index.php
<?php
phpinfo();
?>
5 验证PHP能否链接MYSQL
vim /usr/local/apache/htdocs/index.php
-------------------------------------
<?php
$link=mysql_connect('localhost','tao','litao_59');
if ($link)
echo "php-mysql_link_OKKKKKKKKKKKK";
else
echo "php-mysql_link_NOOOOOOOOOOOO";
mysql_close();
?>
------------------------------------
service httpd24 restart 显示php-mysql_link_OKKKKKKKKKKKK成功
4444444444444444444444444444444444444444444444444444444444444444444444
444444444444444444444444 4444444444444444444444444
444444444444444444444444 phpMyAdmin 4444444444444444444444444
444444444444444444444444 4444444444444444444444444
4444444444444444444444444444444444444444444444444444444444444444444444
rm -rf /usr/local/apache/htdocs/index.php
tar xf phpMyAdmin-4.0.10.10-all-languages.tar.gz
mv phpMyAdmin-4.0.10.10 /usr/local/apache/htdocs/pma
测试:
访问192.168.1.201/pma OK
---------------------------------------------
#cd /usr/local/apache/bin/
测试: 你的LAMP服务器 ab 命令(可以慢慢增大并发数)-c (并发数)-n (请求个数)
#./ab -c 10 -n 100 http://192.168.1.201/pma/index.php
关键看:
Requests per second: 20.84 [#/sec] (mean) 每秒钟所完成的请求数
Time per request: 47.996 [ms] (mean) 完成每个请求消耗的时间
---------------------------------------------
555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555 55555555555555555555555555555
55555555555555555555 Xcache 55555555555555555555555555555
55555555555555555555 55555555555555555555555555555
555555555555555555555555555555555555555555555555555555555555555555555
tar xf xcache-3.1.2.tar.gz
cd xcache-3.1.2
phpize 编译PHP第三方扩展
/usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
显示:
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
make && make install显示:
Build complete.
Don't forget to run 'make test'.
Installing shared extensions:
/usr/local/php/lib/php/extensions/no-debug-zts-20100525/复制这行
mkdir /etc/php.d
cp xcache.ini /etc/php.d/
vim /etc/php.d/xcache.ini
关键看这个:使用多少内存来存缓存
xcache.size = 60M
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
提供测试页:
vim /usr/local/apache/htdocs/index.php
<?php
$link=mysql_connect('localhost','tao','litao_59');
if ($link)
echo "php-mysql_link_OKKKKKKKKKKKK";
else
echo "php-mysql_link_NOOOOOOOOOOOO";
mysql_close();
phpinfo();
?>
重启apache
service httpd24 restart
访问 http://192.168.1.201 找到下面的字样即可
XCache
XCache Version 3.1.2
Modules Built cacher
一般来shuo,启动XCache的PHP 速度要快3倍