Linux 之手动安装 MySQL, Nginx, PHP
Linux 2015-12-12 3914
操作系统:CentOS 6.5(最小化安装)
软件版本:MySQL 5.7,Nginx 1.8.0,PHP 7.0

1. 安装 MySQL
  MySQL 5.7 以上版本安装步骤参照 《Linux 之源码编译安装 MySQL 5.7
  MySQL 5.5 和 5.6 版本安装步骤参照 《Linux 之源码编译安装 MySQL 5.5

2. 安装 NGINX
  2.1 下载 NGINX 源码包
    # cd /usr/local/src
    # wget http://mirrors.sohu.com/nginx/nginx-1.8.0.tar.gz
    # tar zxvf nginx-1.8.0.tar.gz
    # cd nginx-1.8.0

  2.2 确保以下所需系统软件包已经被安装
    通过 rpm -qa | grep name 的方式验证以下软件包是否已全部安装。
    openssl openssl-devel libxml2-devel libxslt libxslt-devel perl-devel perl-ExtUtils-Embed
    如果缺少相关的软件包,可通过yum -y install 的方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh 的方式安装。

  2.3 创建用户、用户组和目录
    # groupadd nginx
    # useradd -M -s /bin/false -g nginx nginx

    # mkdir /var/log/nginx
    # chown nginx:nginx -R /var/log/nginx

    # mkdir /var/run/nginx
    # chown nginx:nginx -R /var/run/nginx

  2.4 下载扩展包,以便 NGINX 支持 Rewrite 和 Gzip 功能
    # cd /usr/local/src/nginx-1.8.0

    # wget http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz
    # tar zxvf pcre-8.37.tar.gz

    # wget http://www.zlib.net/zlib-1.2.8.tar.gz
    # tar zxvf zlib-1.2.8.tar.gz

  2.5 安装 NGINX
    #./configure \
     >--prefix=/usr/local/nginx \
     >--user=nginx --group=nginx \
     >--pid-path=/var/run/nginx/nginx.pid \
     >--lock-path=/var/run/nginx/nginx.lock \
     >--http-log-path=/var/log/nginx/access.log \
     >--error-log-path=/var/log/nginx/error.log \
     >--with-debug --with-http_dav_module --with-http_flv_module --with-http_ssl_module --with-http_spdy_module \
     >--with-http_xslt_module --with-http_realip_module --with-http_addition_module --with-http_stub_status_module \
     >--with-http_sub_module --with-http_random_index_module --with-http_degradation_module --with-http_secure_link_module \
     >--with-file-aio --with-mail --with-mail_ssl_module --with-http_gzip_static_module --with-http_perl_module \
     >--with-pcre=pcre-8.37 --with-zlib=zlib-1.2.8 \
     >--with-ld-opt="-Wl,-E"
     >--http-scgi-temp-path=/var/run/nginx/temp_scgi \
     >--http-uwsgi-temp-path=/var/run/nginx/temp_uwsgi --http-proxy-temp-path=/var/run/nginx/temp_proxy \
     >--http-fastcgi-temp-path=/var/run/nginx/temp_fastcgi --http-client-body-temp-path=/var/run/nginx/temp_client_body\

    #make && make install

  2.6 配置 NGINX 启动程序
    编译安装 Nginx 不会像 yum 那样自动生成服务控制脚本,所以需要手工添加
    #vim /etc/init.d/nginx
    #chmod +x /etc/init.d/nginx
    配置内容可参考:/uploads/attachs/201512/14/13585652389.txt

    #chkconfig --add nginx  // 添加nginx服务到服务器管理中
    #chkconfig --list|grep nginx  // 查询此时nginx服务器的启动状态
    #chkconfig --level 2345 nginx on  // 设置在2、3、4、5运行级别自启动

3. 安装 PHP
  3.1 下载 PHP 7 源码包
    # cd /usr/local/src
    # wget http://mirrors.sohu.com/php/php-7.0.0.tar.gz
    # tar zxvf php-7.0.0.tar.gz
    # cd php-7.0.0

  3.2 确保以下所需系统软件包已经被安装
    通过 rpm -qa | grep name 的方式验证以下软件包是否已全部安装。
    libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel
    如果缺少相关的软件包,可通过yum -y install 的方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh 的方式安装。

  3.3 安装 PHP
    #./configure \
     >--prefix=/usr/local/php \
     >--with-mysql-sock=/tmp/mysql.sock \
     >--with-config-file-path=/usr/local/php/etc \
     >--enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx \
     >--with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd \
     >--with-gd --with-mhash --with-iconv --with-zlib --with-curl --with-openssl \
     >--with-mcrypt=/usr/include --with-gettext --with-xmlrpc --with-jpeg-dir --with-freetype-dir \
     >--enable-ftp --enable-zip --enable-xml --enable-soap --enable-pcntl --enable-mbstring --enable-sockets \
     >--enable-session --enable-opcache --enable-mbregex --enable-gd-native-ttf \
     >--enable-shmop --enable-shared --enable-bcmath --enable-inline-optimization --enable-sysvsem \
     >--without-pear --without-gdbm --disable-fileinfo --disable-debug --disable-rpath

    #make && make install

    由于需要和 MySQL 进行通信
    所以安装完后需要特别查看 lib 扩展库目录是否包含 mysqli.so、pdo_mysql.so 这两个动态库文件
    #cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/

  3.4 配置文件设置并优化
    拷贝 PHP 默认配置文件
    #cp /usr/local/src/php-7.0.0/php.ini-production /usr/local/php/etc/php.ini
    配置内容可参考:/uploads/attachs/201608/09/20514281249.txt
    优化配置内容可参考:/uploads/attachs/201512/13/12480669367.txt

    拷贝 PHP-FPM 默认配置文件
    #mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

    拷贝 PHP-FPM 默认子配置文件
    #mv /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

  3.5 启动 PHP-FPM
    #cp /usr/local/src/php-7.0.0/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    #chmod +x /etc/init.d/php-fpm

    #chkconfig --add php-fpm  // 添加php-fpm服务到服务器管理中
    #chkconfig --list|grep php-fpm  // 查询此时php-fpm服务器的启动状态
    #chkconfig --level 2345 php-fpm on  // 设置在2、3、4、5运行级别自启动

    启动
    #service php-fpm start
    成功启动会显示:Starting php-fpm done

4. 配置 NGINX 和 PHP
  4.1 创建网站目录
    #mkdir /data/httpd/htdocs
    #mkdir /data/httpd/htdocs/xxxxxxx

  4.2 创建虚拟网站配置目录
    #vim /usr/local/nginx/conf/nginx.conf
    启用虚拟主机模式:移除 server{ ... } 段的全部代码
    在移除的代码处增加:include /usr/local/nginx/conf/vhosts/*.conf;
    配置内容可参考:/uploads/attachs/201608/12/10201672545.txt

    #mkdir /usr/local/nginx/conf/vhosts
    #cd /usr/local/nginx/conf/vhosts

    增加 default.conf 配置,内容如下: default.conf (禁止未绑定的域名和IP访问)
    增加 xxxxxxx.conf 配置,内容如下: xxxxxxx.conf (允许 xxxxxxx.com 域名访问)