本次APACHE PHP MYSQL 在不同主機的編譯安裝
源碼安裝Linux6.6 +Apache2.4 +Mysql5.5+Php5.4+phpMyAdmin4.0 + Xcache3.0爲PHP加速
111111111111111111111111111111111111111111111111111111111111111111
11111111111111111 1111111111111111111111
11111111111111111 編譯APACHE 1111111111111111111111
11111111111111111 1111111111111111111111
11111111111111111 192.168.1.201 1111111111111111111111
11111111111111111 1111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111
安裝環境搭建:
yum groupinstall "Development tools" 安裝開發包組
yum groupinstall "Server Platform Development" 安裝開發包組
yum -y install libzip-devel pcre-devel
解決依賴關係apr和apr-util pcre
apr->apr-util->pcre--->httpd
ntpdate 0.rhel.pool.ntp.org從網絡上同步時間到系統
date 顯示
hwclock -w 將系統時間同步到硬件
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 httpd-2.4.16.tar.gz
cd httpd-2.4.16
./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=event \
--with-zlib \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--enable-proxy \
--enable-proxy-fcgi \
--with-pcre \
make && make install
cd..
重要選項說明:
--perfix=/usr/local/apache 指定安裝目錄
--sysconfdir=/etc/httpd24 指定配置文件目錄
--enable-so 啓用 支持基於DSO動態共享模塊 (必要)
--enable--ssl 啓用支持加密訪問https(必要)
--enable-rewirte 啓用 支持URL重寫(必要)
--enable-cgi 啓用 支持CGI腳本
--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 指定pcre正則庫
--enable-proxy 用於反向代理
--enable-proxy-fcgi 用於反向代理
FastCGI 的方式和PHP交互要有proxy 和proxy-fcgi
--enable-proxy 2.4後自帶指定即可
--enable-proxy-fcgi
後續的配置:
1導出頭文件(開發)纔用到
# ln -sv /usr/local/apache/include /usr/include/httpd
2配置文件:
1/去掉#號:ServerName 192.168.1.202:80
2/檢查模塊有無啓用:
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule proxy_modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
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/ #DocumentRoot "/usr/local/apache/htdocs"註釋掉做虛擬主機
5/配置虛擬主機:找到
#Vartual hodts
Include /etc/httpd24/extra/httd-vhosts.conf
cp /etc/httpd24/extra/httpd-vhosts.conf /etc/httpd24/extra/httpd-vhosts.conf.bak
vim /etc/httpd24/extra/httpd-vhosts.conf
定義一個虛擬主機-注意自行mkdir目錄
<VirtualHost 192.168.1.202:80>
DocumentRoot /use/local/apache/test1.com/htdocs 定義根目錄
ServerName www.test1.com 定義服務器名
ServerAlias test1.com 定義服務器別名
ErrorLog "/logs/error_log" 錯誤日誌路徑
CustomLog "/logs/eaccess_log" common 訪問日誌路徑及其類型 通用
<Directory "/use/local/apache/test1.com/htdocs">
Options None
Require all granted
</Directory>
ProxyRequests Off 關閉正向代理使用反向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://PHP的IP地址:9000/PHP服務器上網頁根目錄/$1
</VirtualHost>
3/輸出二進制程序
# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd24.sh
. /etc/profile.d/httpd24.sh
4/提供服務腳本
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
httpd24 -M 看模塊有無mod_proxy.so mod_proxy_fcgi.so
3333333333222223333333333333333333333333333333333333333333333333333
3333333333332222233333 333333333333333333333333333
3333333322223333333333 編譯 PHP5.4 333333333333333333333333333
3333333333332222233333 333333333333333333333333333
3333333333332222233333 192.168.1.202 333333333333333333333333333
3333333333332222233333 333333333333333333333333333
3333333333332222233333333333333333333333333333333333333333333333333
編譯前安裝需要圖形開發包組:
yum groupinstall 'Server Platform Development'
libmcrypt擴展及其壓縮:
yum -y install libmcrypt-devel bzip2-devel freetype-devel libxml2-devel
-------PHP編譯------------
tar xf php-5.4.25.tar.gz
cd php-5.4.25
FastCGI方式結合
./configure \
--prefix=/usr/local/php \
--with-openssl \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \
--with-mcrypt \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2 \
--enable-maintainer-zts \
--with-mysql=mysqlnd \
--with-pdo--mysql=mysqlnd \
--with-mysqli=mysqlnd \
MYSQL在本機:
--with-mysql=/usr/local/mysql 路徑
--with-mysqli=/usr/local/mysql/bin/mysql_cpnfig mysql配置文件路徑
MYSQL不在本機:
--with-mysql=mysqlnd
--with-pdo--mysql=mysqlnd
--wiht-mysqli=mysqlnd
./configure --prefix=/usr/local/php 指定目錄
--with-openssl 支持SSL
--enable-mbstring 多字節字串
--with-freetype-dir 支持freetype字體解析工具
--with-jpeg-dir 圖片
--with-png-dir 圖片
--with-zlib 壓縮庫
--enable-xml 支持xml
--with-libxml-dir=/usr 到哪裏找libxml
--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 支持bz2 壓縮
--enable-maintainer-zts 支持如果Apache是event那麼就要有這項
--with-mysql=mysqlnd
--with-pdo--mysql=mysqlnd
--wiht-mysqli=mysqlnd
看到--------------沒錯什麼錯誤--------------------
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/
-成功-----------------------------------------------
PHP編譯完成後續步驟:
1、爲PHP提供配置文件
cp php.ini-production /etc/php.ini
2、配置PHP-FPM
1/提供init系統腳本(源碼包裏)
cp sapi/fpm/inin.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod +x /etc/rc.d/inin.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
chkconfig --list
2/爲php-fpm 提供配置文件
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
3/配置php-fpm
vim php-fpm.conf
pm.max_children = 50 最大子進程數
pm.start-servers = 5 啓動時的子進程
pm.min_spare_service = 4 最小空閒進程
pm.max_spare_service =8 最大空閒進程
pid = /usr/local/php/var/run/php-fpm/pid (要與啓動腳本中的路徑一樣)
listen = 192.168.1.202:9000 監聽地址(PHP的IP:9000)
4/啓動service php-fpm start
5/查看進程 ps aux | grep php-fpm
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成功
222222222222222222222222222222222222222222222222222222222222222222
222222222222222222 222222222222222
222222222222222222 通用二進制格式安裝MYSQL 222222222222222
222222222222222222 192.168.1.204 222222222222222
222222222222222222 222222222222222
222222222222222222222222222222222222222222222222222222222222222222
安裝依賴包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'@'192.168.1.201' IDENTIFIED BY'litao_59';
權限所有 把taodb數據庫授權給用戶tao登錄範圍192.168.1.201(php的IP)登錄密碼litao_59
flush privileges; 通知mysql重讀授權表讓授權立即生效
------------------------
完畢 service mysqld restart
------------------------
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
一般來書,啓動XCache的PHP 速度要快3倍.那麼在不同一臺主機上的Apache+ PHP + MYSQL + MYPHPADMIN + XCACHE 速度回快6倍不止。
66666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666
分離式構建lamp注意的選項
1、php頁面應該存儲與fcgi服務器,靜態資源應該放在http服務器
2.php以php-fpm模式工作時,不會編譯成http的模塊,因此,不要在httpd使用LoadMele去裝載模塊
3,編譯php時,如果要驅動mysql,使用--with-mysql=mysqlnd等幾個選項
4.授權具有遠程連接訪問權限的mysql用戶賬號