安装编译前的工作
1 安装yum
在这基础上安装gcc* 为编译做准备
2 下载所需软件
cmake-2.8.0 //用于编译mysql使用
mysql-5.5.28-linux2.6-i686.tar.gz
php-5.4.13.tar.gz
nginx-1.5.3.tar.gz
下列是个软件的所需软件
1 mysql
cmake //用于mysql5.5以上的编译工具,如果是二进制代码就不需要了
ncurses和 ncurses-devel
2 nginx
libevent libevent-devel (事件触发的网络库)
gzip 模块需要 zlib 库
rewrite 模块需要 pcre 库
ssl 功能需要 openssl 库
3 php
因为php用于网页解析工作,所以网页所带的功能,php在编译时都要添加上!
perl pcre(perl扩展正则表达式的库) pcre-developenssl openssl-devel libxml2 libxml2- devel curl curl-devel
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel
还有 libmcrypt libmcrypt-devel (加密) mhash mhash-devel 等视情况而定
安装
1 安装数据库
下载cmake ,最好下载源码包,源码包就是只有版本号,没其他的
cmake-3.0.0.tar.gz
如这个
1 ./bootstraps
2 Make
3 Make instal
编译通用参数就是这些,可以根据实际情况添加
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0
-DMYSQL_USER=mysql
data目录最好做lvm,方便扩充。
groupadd mysql
useradd -r -g mysql mysql
cd mysql
chown -R mysql.mysql .
./scripts/mysq_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data //初始化mysql
cp /usr/local/mysql/support-files/mysql-medium.cnf /usr/local/mysql/my.cnf //mysql 配置文件
cp /usr/local/mysql/support-fiels/mysql.server /etc/init.d/mysql //mysql启动脚本
vim /etc/profile 添加mysql的path里
PATH=$PATH:/usr/local/mysql/bin
. /etc/profile
指定pid文件
pid_file = /var/run/mysql/mysql.pid
user = mysql
注:这里记得给pid创建好文件和目录
2 安装nginx
tar xf nginx-1.5.6.tar.gz
groupadd nginx
useradd -g nginx -s /bin/false -M nginx
编译
./configure--prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx--with-http_ssl_module --with-http_dav_module --with-http_flv_module--with-http_realip_module --with-http_gzip_static_module--with-http_stub_status_module --with-mail --with-mail_ssl_module --with-debug--http-client-body-temp-path=/var/tmp/nginx/client--http-proxy-temp-path=/var/tmp/nginx/proxy--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi--http-scgi-temp-path=/var/tmp/nginx/scgi
make&& make install
mkdir -p /var/tmp/nginx/client //创建缓存目录
启动脚本写在单独的txt文本中
测试访问
3 安装php
tar xf php-5.4.19.tar.gz
cdphp-5.4.19
./configure\
--prefix=/usr/local/php\
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr/local/mysql\
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-openssl\
--enable-sockets\
--with-libevent-dir=/usr/lib\
--enable-mbstring\
--enable-debug\
--with-freetype-dir=/usr/lib\
--with-jpeg-dir=/usr/lib\
--with-png-dir=/usr/lib\
--with--gd=/usr/lib\
--with-zlib\
--with-zlib-dir=/usr/lib\
--with-libxml-dir=/usr\
--enable-xml\
--with-iconv-dir=/usr/local/\
--enable-fpm\
--enable-fastcgi
--with-curl=/usr/lib\
--enable-zip
make&& make install
cpsapi/fpm/init.d.php-fpm /etc/init.d/php-fpm //fpm启动脚本
chmod a+x /etc/init.d/php-fpm
cp php.ini-production /usr/loca/php5/etc/php.ini
启动php-fpm
/usr/local/php5/sbin/php-fpm
关闭
pkill php-fpm
查看
lsof -i:9000
[root@dqzphp5]# lsof -i:9000
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
php-fpm3111 root 7u IPv4 286652 TCPdqz.com:cslistener (LISTEN)
php-fpm3112 nginx 0u IPv4 286652 TCP dqz.com:cslistener (LISTEN)
php-fpm3114 nginx 0u IPv4 286652 TCP dqz.com:cslistener (LISTEN)
[root@dqzphp5]#
[root@dqzphp5]# netstat -tunlp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3111/php-fpm.conf)
[root@dqzphp5]#
4 整合php和nginx
修改nginx.conf
location / {
root /usr/local/nginx/html;
index index.php index.htm index.html ; //索引支持php
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root /usr/local/nginx/html; //网站目录
fastcgi_pass 127.0.0.1:9000; //php-fpm 接口
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
// 传递的参数
include fastcgi_params;
}
nginx_params
添加测试网页
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
错误日志:
nginx: /usr/local/nginx/logs
php-fpm: /usr/local/php5/var/log
测试一下
在编译php时出现以下错误
php_iconv_stream_filter_ctor':
/home/king/php-5.2.13/ext/iconv/iconv.c:2491:undefined reference to `libiconv_open'
collect2:ld returned 1 exit status
make:*** [sapi/cli/php] Error 1
在安�b PHP 到系统中时要是发生「undefinedreference to libiconv_open'」之类的错误信息,那表示在「./configure」�]抓好一些环境变数值。错误发生点在建立「-o sapi/cli/php」是出错,没�o到要 link 的 iconv 函式库参数。解决方法:编辑Makefile 大约77 行左右的地方: EXTRA_LIBS =..... -lcrypt 在最后加上 -liconv,例如: EXTRA_LIBS = ..... -lcrypt -liconv 然后重新再次 make 即可。如下图