在CentOS6.2上编译安装Nginx1.0.14+MySQL5.5.22+PHP5.3.10,需要有一定的Linux基础知识和编译工具的使用经验。下面是该过程的详细步骤:
1. 安装必要的依赖使用以下命令安装编译Nginx和PHP必要的依赖库:
yum groupinstall "Development Tools"
yum install wget
yum install openssl-devel pcre-devel zlib-devel
yum install epel-release
yum install libjpeg-devel libpng-devel freetype-devel
2. 下载和解压源码
2.1 下载Nginx源码
进入Nginx官网的下载页面(http://nginx.org/en/download.html),下载Nginx1.0.14版本源码:
cd /usr/local/src
wget http://nginx.org/download/nginx-1.0.14.tar.gz
2.2 下载MySQL源码
进入MySQL官网的下载页面(https://dev.mysql.com/downloads/mysql/5.5.html),下载MySQL5.5.22版本源码:
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.22.tar.gz
2.3 下载PHP源码
进入PHP官网的下载页面(https://www.php.net/downloads.php),下载PHP5.3.10版本源码:
wget https://www.php.net/distributions/php-5.3.10.tar.gz
2.4 解压源码
分别对下载的三个源码包进行解压:
tar -zxvf nginx-1.0.14.tar.gz
tar -zxvf mysql-5.5.22.tar.gz
tar -zxvf php-5.3.10.tar.gz
3. 编译安装MySQL
进入MySQL源码目录,执行以下命令编译MySQL:
cd mysql-5.5.22
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
make
make install
编译完之后将MySQL PATH加入环境变量:
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
最后,执行以下命令启动MySQL:
cd /usr/local/mysql/
./bin/mysqld_safe &
4. 编译安装PHP
进入PHP源码目录,执行以下命令编译PHP:
cd php-5.3.10
./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-gd \
--with-iconv \
--with-zlib \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--with-openssl \
--enable-gd-native-ttf \
--with-curl \
--with-gettext \
--enable-zip \
--enable-pcntl \
--enable-soap \
--enable-opcache
然后执行以下命令编译安装:
自由互联热门推荐:PDF电子发票识别软件,一键识别电子发票并导入到Excel中!10大顶级数据挖掘软件!人工智能的十大作用!make
make install
5. 编译安装Nginx
进入Nginx源码目录,执行以下命令编译Nginx:
cd nginx-1.0.14
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-pcre \
--with-ipv6 \
--with-http_realip_module \
--with-http_image_filter_module
然后执行以下命令编译安装:
make
make install
6. 配置Nginx和PHP
6.1 配置文件
分别进入Nginx和PHP的安装目录,将Nginx配置文件和PHP配置文件进行备份:
cd /usr/local/nginx
cp conf/nginx.conf conf/nginx.conf.bak
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
cp php.ini-development php.ini
6.2 修改Nginx配置文件
编辑Nginx配置文件:
vim /usr/local/nginx/conf/nginx.conf
添加如下内容:
location ~ [^/]\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
6.3 修改PHP配置文件
编辑PHP的fpm配置文件和ini配置文件:
vim /usr/local/php/etc/php-fpm.conf
找到以下语句,将前面的分号去掉:
;listen.allowed_clients = 127.0.0.1
listen.allowed_clients = 127.0.0.1
vim /usr/local/php/etc/php.ini
找到以下语句,将前面的分号去掉:
;cgi.fix_pathinfo=1
cgi.fix_pathinfo=1
7. 启动服务
7.1 启动MySQL
执行以下命令启动MySQL:
cd /usr/local/mysql/
./bin/mysqld_safe &
7.2 启动PHP
执行以下命令启动PHP:
/usr/local/php/sbin/php-fpm
7.3 启动Nginx
执行以下命令启动Nginx:
/usr/local/nginx/sbin/nginx
示例说明
示例1:在Nginx和PHP的配置文件中使用HTTPS协议
进入Nginx的安装目录,编辑nginx.conf文件:
vim /usr/local/nginx/conf/nginx.conf
找到以下代码:
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
在此代码块上方添加如下代码:
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
location / {
root html;
index index.html index.htm;
}
}
保存并退出文件。
进入PHP的安装目录,编辑php-fpm.conf文件:
vim /usr/local/php/etc/php-fpm.conf
找到以下代码:
;user = nobody
;group = nobody
将上述代码修改为以下代码:
user = nginx
group = nginx
将上述代码下一行添加以下代码解决502 Bad Gateway问题:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
最后,执行以下命令重启Nginx和PHP:
/usr/local/nginx/sbin/nginx -s reload
kill -USR2 `ps ax | grep php-fpm | grep -v grep | awk '{ print $1}'`
示例2:在Nginx中启用Gzip压缩
进入Nginx的安装目录,编辑nginx.conf文件:
vim /usr/local/nginx/conf/nginx.conf
找到以下代码:
http {
...
}
在该代码块中添加以下代码:
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
保存并退出文件。
然后,执行以下命令重启Nginx:
/usr/local/nginx/sbin/nginx -s reload