啊里云centos7.3编译安装NGINX+PHP7+MariaDB+MEMCACHED

前端之家收集整理的这篇文章主要介绍了啊里云centos7.3编译安装NGINX+PHP7+MariaDB+MEMCACHED前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

安装前准备

[root@iZuf60c5bxd15kr9gycvv6Z ~]# hostnamectl set-hostname centos7
[root@iZuf60c5bxd15kr9gycvv6Z ~]# reboot
[root@iZuf60c5bxd15kr9gycvv6Z ~]# yum update
  • 安装依赖库
[root@centos7 ~]# yum -y install libaio  libaio-devel  bison  bison-devel  zlib-devel  openssl openssl-devel  ncurses  ncurses-devel libcurl-devel libarchive-devel  boost  boost-devel  lsof  wget gcc  gcc-c++ make cmake perl kernel-headers kernel-devel  pcre-devel

删除系统默认数据库配置文件

[root@centos7 ~]# find -H /etc/ | grep my.c
/etc/my.cnf
/etc/my.cnf.d
/etc/my.cnf.d/MysqL-clients.cnf
/etc/pki/tls/certs/renew-dummy-cert
/etc/pki/tls/certs/make-dummy-cert
[root@centos7 ~]# rm -rf /etc/my.cnf /etc/my.cnf.d /etc/my.cnf.d/MysqL-clients.cnf
  • 确认
[root@centos7 ~]# find -H /etc/ | grep my.c
/etc/pki/tls/certs/renew-dummy-cert
/etc/pki/tls/certs/make-dummy-cert

卸载系统自带mariadb-libs

[root@centos7 ~]# rpm -qa|grep mariadb-libs
mariadb-libs-5.5.52-1.el7.x86_64
[root@centos7 ~]# rpm -e mariadb-libs-5.5.52-1.el7.x86_64 --nodeps

安装MariaDB数据库

  • 下载安装包
[root@centos7 ~]# cd /usr/local/src
[root@centos7 src]# wget https://downloads.mariadb.org/interstitial/mariadb-10.2.8/source/mariadb-10.2.8.tar.gz
  • 解压
[root@centos7 src]# tar -zxvf mariadb-10.2.8.tar.gz
# 创建MysqL用户组
[root@centos7 mariadb-10.2.8]# groupadd -r MysqL
# 创建MysqL用户
[root@centos7 mariadb-10.2.8]# useradd -r -g MysqL -s /sbin/nologin -d /usr/local/MysqL -M MysqL
# 创建安装目录
[root@centos7 mariadb-10.2.8]# mkdir -p /usr/local/MysqL
# 创建数据存放目录
[root@centos7 mariadb-10.2.8]# mkdir -p /data/MysqL
# 赋以MysqL用户读写权限
[root@centos7 mariadb-10.2.8]# chown -R MysqL:MysqL /data/MysqL
  • 编译安装
[root@centos7 mariadb-10.2.8]# cd /usr/local/src/mariadb-10.2.8
# 输入以下编译参数
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/MysqL \
-DMysqL_DATADIR=/data/MysqL \
-DSYSCONFDIR=/etc \
-DWITHOUT_TOKUDB=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWIYH_READLINE=1 \
-DWIYH_SSL=system \
-DVITH_ZLIB=system \
-DWITH_LOBWRAP=0 \
-DMysqL_UNIX_ADDR=/tmp/MysqL.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

# 如果编译失败请删除CMakeCache.txt
[root@centos7 mariadb-10.2.8]# rm -f CMakeCache.txt
# 让指令重新执行,否则每次读取这个文件,命令修改正确也是报错
# cmake没问题,可以编译并且安装了

# 开始安装,这个过程比较久,跟据电脑配制不同可能会有10-30分钟
[root@centos7 mariadb-10.2.8]# make && make install
[root@centos7 mariadb-10.2.8]# cd /usr/local/MysqL/
[root@localhost MysqL]# scripts/MysqL_install_db --user=MysqL --datadir=/data/MysqL
[root@localhost ~]# cd /usr/local/MysqL/
[root@localhost MysqL]# cp support-files/my-large.cnf /etc/my.cnf
  • 编写快捷启动脚本

[root@centos7 MysqL]# vi /lib/systemd/system/MysqL.service
# --------------------------------------------------------------------------
# 输入以下代码
# --------------------------------------------------------------------------
[Unit]
Description=MysqL Community Server
After=network.target

[Service]
User=MysqL
Group=MysqL
Type=forking
PermissionsStartOnly=true
PIDFile=/data/MysqL/centos7.pid
ExecStart=/usr/local/MysqL/support-files/MysqL.server start
ExecReload=/usr/local/MysqL/support-files/MysqL.server restart
ExecStop=/usr/local/MysqL/support-files/MysqL.server stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 设置开机启动
[root@centos7 MysqL]# systemctl enable MysqL.service
  • 其它命令说明
# 启动MysqL
[root@centos7 MysqL]# systemctl start MysqL.service
# 停止MysqL
[root@centos7 MysqL]# systemctl stop MysqL.service
# 重启MysqL
[root@centos7 MysqL]# systemctl restart MysqL.service
# 如果提示:Job for MysqL.service Failed because the control process exited with error code. See "systemctl status MysqL.service" and "journalctl -xe" for details.
# 请选结束MysqL进程后再尝试执行上面的快捷操作
[root@centos7 MysqL]# pkill -9 MysqL
  • 配置环境变量(以便在任何目录下输入MysqL命令)
# 创建独立环境变量文件
[root@localhost MysqL]# touch /etc/profile.d/MysqL.sh
# 写入变量值
[root@localhost MysqL]# echo 'export PATH=$PATH:/usr/local/MysqL/bin/' > /etc/profile.d/MysqL.sh 
# 赋以执行权限
[root@localhost MysqL]# chmod 0777 /etc/profile.d/MysqL.sh 
# 刷新生效
[root@localhost MysqL]# source /etc/profile.d/MysqL.sh
  • 初始化MariaDB
# 运行MariaDB初始化脚本
[root@localhost MysqL]# ./bin/MysqL_secure_installation

# --------------------------------------------------------------------------
# 根据相关提示进行操作
# 以下提示:
# --------------------------------------------------------------------------
Enter current password for root (enter for none):    输入当前root密码(没有输入)
Set root password? [Y/n]                             设置root密码?(是/否)
New password:                                        输入新root密码
Re-enter new password:                               确认输入root密码
Password updated successfully!                       密码更新成功
Remove anonymous users? [Y/n]                        删除匿名用户?(是/否)
Disallow root login remotely? [Y/n]                  不允许root登录远程?(是/否)
Reload privilege tables now? [Y/n]                   现在重新加载权限表(是/否)

#全部完成!如果你已经完成了以上步骤,MariaDB安装现在应该安装完成。
  • 创建外部管理员帐号(根据需要,请尽量保证密码的复杂性避免数据库外泄)
[root@localhost MysqL] MysqL -uroot -p
# 根据提示输入密码
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

安装Nginx

-下载安装包并解压

[root@localhost MysqL]# cd /usr/local/src
[root@localhost src]# wget http://Nginx.org/download/Nginx-1.12.1.tar.gz
[root@localhost src]# tar -zxvf Nginx-1.12.1.tar.gz
# 创建Nginx用户组
[root@centos7 src]# groupadd -r www
# 创建Nginx用户
[root@centos7 src]# useradd -r -g www -s /sbin/nologin -d /usr/local/Nginx -M www
# 创建安装目录
[root@centos7 src]# mkdir -p /usr/local/Nginx
# 创建数据存放目录
[root@centos7 src]# mkdir -p /data/web
# 赋以MysqL用户读写权限
[root@centos7 src]# chown -R www:www /data/web

-编译安装

[root@localhost src]# cd Nginx-1.12.1
# 输入以下参数
./configure \
--prefix=/usr/local/Nginx \
--without-http_memcached_module \
--user=www  \
--group=www \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module

# 如果看到以下说明则编译成功
Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + using system zlib library

  Nginx path prefix: "/usr/local/Nginx"
  Nginx binary file: "/usr/local/Nginx/sbin/Nginx"
  Nginx modules path: "/usr/local/Nginx/modules"
  Nginx configuration prefix: "/usr/local/Nginx/conf"
  Nginx configuration file: "/usr/local/Nginx/conf/Nginx.conf"
  Nginx pid file: "/usr/local/Nginx/logs/Nginx.pid"
  Nginx error log file: "/usr/local/Nginx/logs/error.log"
  Nginx http access log file: "/usr/local/Nginx/logs/access.log"
  Nginx http client request body temporary files: "client_body_temp"
  Nginx http proxy temporary files: "proxy_temp"
  Nginx http fastcgi temporary files: "fastcgi_temp"
  Nginx http uwsgi temporary files: "uwsgi_temp"
  Nginx http scgi temporary files: "scgi_temp"

# 开始安装
[root@localhost Nginx-1.12.1]# make && make install
  • 尝试启动
[root@centos7 Nginx-1.12.1]# /usr/local/Nginx/sbin/Nginx
# 如果未提示错误即代表安装成功
  • 编写快捷启动脚本
[root@centos7 Nginx-1.12.1]# vi /lib/systemd/system/Nginx.service
# --------------------------------------------------------------------------
# 输入以下代码
# --------------------------------------------------------------------------
[Unit]
Description=Nginx
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/Nginx/logs/Nginx.pid
ExecStart=/usr/local/Nginx/sbin/Nginx
ExecReload=/usr/local/Nginx/sbin/Nginx -s reload
ExecStop=/usr/local/Nginx/sbin/Nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 设置开机启动
[root@centos7 Nginx-1.12.1]# systemctl enable Nginx.service
  • 其它命令说明
# 启动Nginx
[root@centos7 Nginx-1.12.1]# systemctl start Nginx.service
# 停止Nginx
[root@centos7 Nginx-1.12.1]# systemctl stop Nginx.service
# 重启Nginx
[root@centos7 Nginx-1.12.1]# systemctl restart Nginx.service
# 如果提示:Job for Nginx.service Failed because the control process exited with error code. See "systemctl status Nginx.service" and "journalctl -xe" for details.
# 请选结束Nginx进程后再尝试执行上面的快捷操作
[root@centos7 Nginx-1.12.1]# pkill -9 Nginx
[root@centos7 PHP-7.1.9]# cd /usr/local/Nginx/conf
[root@centos7 conf]# vi Nginx.conf
# 修改如下代码
# --------------------------------------------------------------------------
#user  nobody;去除前面#号,并将用户改为www www
user www www;
# --------------------------------------------------------------------------
#pid        logs/Nginx.pid; 去除前面的#号 
pid        logs/Nginx.pid;
# --------------------------------------------------------------------------
去除前面的#号 如下
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
# --------------------------------------------------------------------------
# gzip  on;去除前面的#号并加上隐藏版号代码 
server_tokens off;
# --------------------------------------------------------------------------
index  index.html index.htm;后面加上index.PHP 默认页
index  index.html index.htm index.PHP;
# --------------------------------------------------------------------------
去下以下前面的#号并做如下修改
location ~ \.PHP$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.PHP;
    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
  • 最后张节介绍虚拟主机配制,以及memcache配制

安装PHP7

  • 下载安装包并解压
[root@centos7 Nginx-1.12.1]# cd /usr/local/src
[root@centos7 src]# wget http://cn.PHP.net/distributions/PHP-7.1.9.tar.gz
[root@centos7 src]# tar -zxvf PHP-7.1.9.tar.gz
  • 安装必要的相关扩展
[root@centos7 src]# yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

-编译安装

[root@localhost src]# cd PHP-7.1.9
# 输入以下参数
./configure \
--prefix=/usr/local/PHP \
--with-config-file-path=/usr/local/PHP/etc \
--enable-fpm \
--with-fpm-user=www  \
--with-fpm-group=www \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared  \
--enable-soap \
--with-libxml-dir \
--with-xmlrpc \
--with-openssl \
--with-mcrypt \
--with-mhash \
--with-pcre-regex \
--with-zlib \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--with-pcre-dir \
--enable-ftp \
--with-gd \
--with-openssl-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir  \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-json \
--enable-mbstring \
--enable-mbregex \
--enable-mbregex-backtrack \
--with-libmbfl \
--with-onig \
--enable-pdo \
--with-MysqLi=MysqLnd \
--with-pdo-MysqL=MysqLnd \
--with-zlib-dir \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets  \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-libxml-dir \
--with-xsl \
--enable-zip \
--enable-MysqLnd-compression-support \
--with-pear \
--enable-opcache

# 开始安装
[root@localhost PHP-7.1.9]# make && make install
  • 配置环境变量(以便在任何目录下输入PHP命令)
# 创建独立环境变量文件
[root@localhost PHP-7.1.9]# touch /etc/profile.d/PHP.sh
# 写入变量值
[root@localhost PHP-7.1.9]# echo 'export PATH=$PATH:/usr/local/PHP/bin/' > /etc/profile.d/PHP.sh 
# 赋以执行权限
[root@localhost PHP-7.1.9]# chmod 0777 /etc/profile.d/PHP.sh 
# 刷新生效
[root@localhost PHP-7.1.9]# source /etc/profile.d/PHP.sh
  • 配制PHP.ini
[root@centos7 PHP-7.1.9]# cp PHP.ini-production /usr/local/PHP/etc/PHP.ini
[root@centos7 PHP-7.1.9]# vi /usr/local/PHP/etc/PHP.ini
# 做以下修改(时区,不显示版本号,开启opcache缓存加速PHP)
# --------------------------------------------------------------------------
1.找到:;date.timezone =                               修改为:date.timezone = PRC
2.找到:expose_PHP = On                                   修改为:expose_PHP = Off
3.找到:opcache.enable=0                              修改为:opcache.enable=1
4.在 Dynamic Extensions 代码块中添加 zend_extension=opcache.so
  • 配置PHP-fpm
[root@centos7 PHP-7.1.9]# cp /usr/local/PHP/etc/PHP-fpm.conf.default /usr/local/PHP/etc/PHP-fpm.conf
[root@centos7 PHP-7.1.9]# cp /usr/local/PHP/etc/PHP-fpm.d/www.conf.default /usr/local/PHP/etc/PHP-fpm.d/www.conf
[root@centos7 PHP-7.1.9]# cp sapi/fpm/init.d.PHP-fpm /usr/local/PHP/bin/PHP-fpm
[root@centos7 PHP-7.1.9]# chmod 0777 /usr/local/PHP/bin/PHP-fpm
  • 尝试启动
[root@centos7 PHP-7.1.9]# /usr/local/PHP/bin/PHP-fpm start
Starting PHP-fpm  done
# 如提示以上即表示安装成功
  • 编写快捷启动脚本
[root@centos7 PHP-7.1.9]# vi /lib/systemd/system/PHP-fpm.service
# --------------------------------------------------------------------------
# 输入以下代码
# --------------------------------------------------------------------------
[Unit]
Description=PHP-fpm
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/PHP/var/run/PHP-fpm.pid
ExecStart=/usr/local/PHP/bin/PHP-fpm start
ExecReload=/usr/local/PHP/bin/PHP-fpm restart
ExecStop=/usr/local/PHP/bin/PHP-fpm stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 设置开机启动
[root@centos7 PHP-7.1.9]# systemctl enable PHP-fpm.service
  • 其它命令说明
# 启动PHP-fpm
[root@centos7 PHP-7.1.9]# systemctl start PHP-fpm.service
# 停止PHP-fpm
[root@centos7 PHP-7.1.9]# systemctl stop PHP-fpm.service
# 重启PHP-fpm
[root@centos7 PHP-7.1.9]# systemctl restart PHP-fpm.service
# 如果提示:Job for PHP-fpm.service Failed because the control process exited with error code. See "systemctl status PHP-fpm.service" and "journalctl -xe" for details.
# 请选结束PHP-fpm进程后再尝试执行上面的快捷操作
[root@centos7 PHP-7.1.9]# pkill -9 PHP-fpm

Nginx虚拟主机配制

[root@centos7 PHP-7.1.9]# vi /usr/local/Nginx/conf/Nginx.conf
  • 在http{}节点尾加入以下代码
##############################################
    #LIANGZHI
    ##############################################
    server {
        listen          80;
        server_name     *.demo.com;
        root            /data/web/demo/www;
        access_log      /data/web/demo/log/access.log  main;
        error_log       /data/web/demo/log/error.log error;
        index           index.PHP;

        #THINKPHP伪静态
        location / {
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.PHP?s=$1 last;
                break;
            }
        }

        #解析PHP代码
        location ~ \.PHP$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.PHP;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        #静态资源缓存1天
        location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|swf|js|css)$ {
            expires     1d;
            access_log  off;
        }

        #字体文件跨域问题
        location ~ .*\.(eof|ttf|ttc|otf|eof|woff|woff2|svg)(.*){
            add_header Access-Control-Allow-Origin *;
        }
    }

安装PHP支持插件Memcache

[root@centos7 www]# cd /usr/local/src
[root@centos7 src]# wget http://memcached.org/files/memcached-1.5.1.tar.gz
[root@centos7 src]# tar -zxvf memcached-1.5.1.tar.gz
[root@centos7 src]# cd memcached-1.5.1
[root@centos7 memcached-1.5.1]# yum install libevent*
[root@centos7 memcached-1.5.1]# ./configure --prefix=/usr/local/memcached
[root@centos7 memcached-1.5.1]# make && make install
  • 编写快捷启动脚本
[root@centos7 memcached-1.5.1]# vi /usr/local/memcached/memcached
# 输入以下代码(启动参数请在下面的脚本中修改,如端口,最大内存)
#! /bin/sh
#
# chkconfig: - 55 45
# description:  The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached

# Source function library.
. /etc/rc.d/init.d/functions

PORT=11211
USER=root 
MAXCONN=1024
CACHESIZE=64
OPTIONS=""

if [ -f /etc/sysconfig/memcached ];then
    . /etc/sysconfig/memcached
fi

# Check that networking is up.
if [ "$NETWORKING" = "no" ]
then
    exit 0
fi

RETVAL=0

start () {
    echo "Starting memcached ..."
    # insure that /var/run/memcached has proper permissions
    chown $USER /usr/local/memcached/bin/memcached
    /usr/local/memcached/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached.pid $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached
}
stop () {
    echo "Stopping memcached ..."
    killproc memcached
    RETVAL=$?
    echo
    if [ $RETVAL -eq 0 ] ; then
        rm -f /var/lock/subsys/memcached
        rm -f /var/run/memcached.pid
    fi
}

restart () {
    stop
    start
}

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
    stop
    ;;
    status)
    status memcached
    ;;
    restart|reload)
    restart
    ;;
    condrestart)
    [ -f /var/lock/subsys/memcached ] && restart || :
    ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
    exit 1
esac
  • 脚本执行权限
[root@localhost memcached-1.5.1]# chmod 0777 /usr/local/memcached/memcached
  • 编写服务启动脚本
[root@centos7 memcached-1.5.1]# vi /lib/systemd/system/memcached.service
# --------------------------------------------------------------------------
# 输入以下代码
# --------------------------------------------------------------------------
[Unit]
Description=memcached
After=network.target

[Service]
Type=forking
PIDFile=/var/run/memcached.pid
ExecStart=/usr/local/memcached/memcached start
ExecReload=/usr/local/memcached/memcached restart
ExecStop=/usr/local/memcached/memcached stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 设置开机启动
[root@centos7 memcached-1.5.1]# systemctl enable memcached.service
  • 其它命令说明
# 启动memcached
[root@centos7 memcached-1.5.1]# systemctl start memcached.service
# 停止memcached
[root@centos7 memcached-1.5.1]# systemctl stop memcached.service
# 重启memcached
[root@centos7 memcached-1.5.1]# systemctl restart memcached.service
# 如果提示:Job for memcached.service Failed because the control process exited with error code. See "systemctl status memcached.service" and "journalctl -xe" for details.
# 请选结束memcached进程后再尝试执行上面的快捷操作
[root@centos7 memcached-1.5.1]# pkill -9 memcached

官网memcache-3.0.8在编译的时候出现“PHP-smart_str.h”没有找到的错误
但是我们可以在github里面找到pecl-memcache支持PHP7的分支,请按以下操作即可完成memcache中扩展安装

[root@centos7 memcached]# cd /usr/local/src/PHP-7.1.9/ext
# 如果已经安装git忽略yun install git
[root@centos7 memcached]# yum install git
[root@centos7 ext]# git clone https://github.com/websupport-sk/pecl-memcache memcache
[root@centos7 ext]# cd memcache
[root@centos7 ext]# yum install autoconf
[root@centos7 ext]# /usr/local/PHP/bin/PHPize
[root@centos7 ext]# ./configure --with-PHP-config=/usr/local/PHP/bin/PHP-config
[root@centos7 ext]# make && make install
[root@centos7 ext]# vi /usr/local/PHP/etc/PHP.ini
# 在 Dynamic Extensions 代码块中添加如下扩展
extension=/usr/local/PHP/lib/PHP/extensions/no-debug-non-zts-20160303/memcache.so

-重启linux完成安装(或重启Nginx PHP-fpm)

[root@centos7 ext]#  reboot

猜你在找的CentOS相关文章