centos7搭建环境php7.2+mysql5.6+nginx1.16

**centos7.5 + nginx-1.16.1+mysql-5.6+php-7.2.24**

~~~

配置文件位置:

nginx:/mnt/data/apps/nginx/conf/nginx.conf

mysql:/etc/my.cnf

php7:/mnt/data/apps/php7/etc/php.ini

~~~

~~~

服务启动:

nginx: /mnt/data/apps/nginx/sbin/nginx(启动)        /mnt/data/apps/nginx/sbin/nginx -s reload (重启)

mysql:service mysql start(启动)             service mysql reload(重启)  service mysql staop(关闭)

php7:/mnt/data/apps/php7/sbin/php-fpm(启动)      ps aux|grep php-fpm ,kill -USR2 fpm主进程号(重启)

~~~

3. 1、准备

1)把所有的软件安装在/mnt/data/apps/,源码包放在/mnt/data/tgz/,数据放在/mnt/data/data,日志文件放在/mnt/data/logs,项目放在/mnt/www/,

~~~

mkdir -p /mnt/data/apps/

mkdir -p /mnt/data/tgz/

mkdir -p /mnt/data/data/

mkdir -p /mnt/data/logs/

mkdir -p /mnt/www/

~~~

2)安装源码包所需要的依赖包

~~~

yum -y install wget openssl* gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers make gd gd2 gd-devel gd2-devel libaio

~~~

3)创建www所属组及用户

~~~

/usr/sbin/groupadd www

/usr/sbin/useradd -g www www

~~~

4)设置系统资源限制

~~~

ulimit -SHn 65535

~~~

3.2、Nginx安装:

 

1)pcre源码安装

~~~

cd /mnt/data/tgz/

wget ftp://ftp.pcre.org/pub/pcre/pcre-8.38.tar.gz

tar zxvf pcre-8.38.tar.gz

cd pcre-8.38

./configure --prefix=/mnt/data/apps/pcre-8.38

~~~

~~~

make && make install

~~~

2)nginx源码安装, 注意with-pcre,使用的是解压目录,--with-pcre=/mnt/data/tgz/pcre-8.38:

~~~

cd /mnt/data/tgz/

wget http://nginx.org/download/nginx-1.16.1.tar.gz

tar zxvf nginx-1.16.1.tar.gz

cd nginx-1.16.1

./configure --user=www --group=www --prefix=/mnt/data/apps/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/mnt/data/tgz/pcre-8.38 --with-http_realip_module --with-http_image_filter_module

make && make install

~~~

3)nginx启动

~~~

cd /mnt/data/apps/nginx/sbin/

./nginx -t

./nginx -c /mnt/data/apps/nginx/conf/nginx.conf

./nginx -s reload

 

4)设置Nginx自启动

    touch /etc/init.d/nginx

vim /etc/init.d/nginx

复制下文到 /etc/init.d/nginx文件

~~~

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig:   - 85 15

# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \

#               proxy and IMAP/POP3 proxy server

# processname: nginx

# config:      /etc/nginx/nginx.conf

# config:      /etc/sysconfig/nginx

# pidfile:     /var/run/nginx.pid

 

# Source function library.

. /etc/rc.d/init.d/functions

 

# Source networking configuration.

. /etc/sysconfig/network

 

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

nginx="/mnt/data/apps/nginx/sbin/nginx"

prog=$(basename $nginx)

NGINX_CONF_FILE="/mnt/data/apps/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {

   # make required directories

   user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

   if [ -n "$user" ]; then

      if [ -z "`grep $user /etc/passwd`" ]; then

         useradd -M -s /bin/nologin $user

      fi

      options=`$nginx -V 2>&1 | grep 'configure arguments:'`

      for opt in $options; do

          if [ `echo $opt | grep '.*-temp-path'` ]; then

              value=`echo $opt | cut -d "=" -f 2`

              if [ ! -d "$value" ]; then

                  # echo "creating" $value

                  mkdir -p $value && chown -R $user $value

              fi

          fi

       done

    fi

}

 

start() {

    [ -x $nginx ] || exit 5

    [ -f $NGINX_CONF_FILE ] || exit 6

    make_dirs

    echo -n $"Starting $prog: "

    daemon $nginx -c $NGINX_CONF_FILE

    retval=$?

    echo

    [ $retval -eq 0 ] && touch $lockfile

    return $retval

}

stop() {

    echo -n $"Stopping $prog: "

    killproc $prog -QUIT

    retval=$?

    echo

    [ $retval -eq 0 ] && rm -f $lockfile

    return $retval

}

 

restart() {

    configtest || return $?

    stop

    sleep 1

    start

}

 

reload() {

    configtest || return $?

    echo -n $"Reloading $prog: "

    killproc $prog -HUP

    retval=$?

    echo

}

 

force_reload() {

    restart

}

 

configtest() {

  $nginx -t -c $NGINX_CONF_FILE

}

 

rh_status() {

    status $prog

}

 

rh_status_q() {

    rh_status >/dev/null 2>&1

}

 

case "$1" in

    start)

        rh_status_q && exit 0

        $1

        ;;

    stop)

        rh_status_q || exit 0

        $1

        ;;

    restart|configtest)

        $1

        ;;

    reload)

        rh_status_q || exit 7

        $1

        ;;

    force-reload)

        force_reload

        ;;

    status)

        rh_status

        ;;

    condrestart|try-restart)

        rh_status_q || exit 0

            ;;

    *)

        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

        exit 2

esac

 

~~~

 

需要注意的配置:

 

nginx=”/mnt/data/apps/nginx/sbin/nginx” //修改成nginx执行程序的路径。

 

NGINX_CONF_FILE=”/mnt/data/apps/nginx/conf/nginx.conf” //修改成nginx.conf文件的路径。

 

chmod a+x /etc/init.d/nginx

chkconfig --add /etc/init.d/nginx

chkconfig nginx on

 

(参考链接 https://www.jianshu.com/p/ac4d476a1e5b)

3.3、Mysql安装:

Centos7.6 系统 默认 存在etc/my.cnf,导致mysql 安装失败,需要先删除此文件 

1)mysql源码安装:

 

~~~

cd /mnt/data/tgz/

wget http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz

tar zxvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.6.46-linux-glibc2.12-x86_64 /mnt/data/apps/mysql

~~~

 

2)创建mysql所属组及用户:

 

~~~

groupadd mysql

useradd -r -g mysql mysql

~~~

 

3)改变mysql软件所属组:

 

~~~

cd /mnt/data/apps

chown -R mysql:mysql mysql

~~~

 

4)初始化数据库:

 

~~~

mkdir -p /mnt/data/data/mysql/data

cd /mnt/data/data

chown -R mysql:mysql mysql

su mysql

/mnt/data/apps/mysql/scripts/mysql_install_db --user=mysql --basedir=/mnt/data/apps/mysql --datadir=/mnt/data/data/mysql/data

exit

~~~

 

5)数据库配置文件:

~~~

cp /mnt/data/apps/mysql/support-files/my-default.cnf /etc/my.cnf

cp /mnt/data/apps/mysql/support-files/mysql.server /etc/init.d/mysql

vi /etc/init.d/mysql

#修改文件中的两个变更值

basedir=/mnt/data/apps/mysql

datadir=/mnt/data/data/mysql/data

~~~

6)添加mysql环境变量

~~~

vi /etc/profile

#最后一行添加以下两行:

export MYSQL_HOME="/mnt/data/apps/mysql"

export PATH="$PATH:$MYSQL_HOME/bin"

#保存退出

source /etc/profile

~~~

7)添加自启动服务

~~~

chkconfig --add mysql

chkconfig mysql on

~~~

8)启动mysql

 

~~~

service mysql start

#会提示:Starting MySQL.. SUCCESS!

#查看mysql服务:

ps aux|grep mysql

~~~

9)登录mysql及改密码与配置远程访问

~~~

#修改root用户密码        

/mnt/data/apps/mysql/bin/mysqladmin -u root password '123456'

#登录mysql,需要输入密码

/mnt/data/apps/mysql/bin/mysql -u root -p

 

#允许root用户远程访问

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;     

mysql>FLUSH PRIVILEGES;#刷新权限

mysql>exit

~~~

10)忘记root密码后,如何找回密码

~~~

/mnt/data/apps/mysql/bin/bin/mysqld_safe --basedir=/mnt/data/apps/mysql --datadir=/mnt/data/data/mysql/data --skip-grant-tables &

/mnt/data/apps/mysql/bin/bin/mysql -u root mysql

UPDATE user SET password=PASSWORD("new_password") WHERE user='root';

FLUSH PRIVILEGES;

~~~

11)部署完成后关闭mysql远程连接

delete from user where user = "root" and host= "%";

flush privileges;

3.4、Php安装:

 

1)php依赖安装,顺序执行:  

a)创建目录

~~~

mkdir -p /mnt/data/apps/libs/

~~~

b)jpeg源码安装

~~~

cd /mnt/data/tgz/

wget http://www.ijg.org/files/jpegsrc.v9.tar.gz     

tar zxvf jpegsrc.v9.tar.gz

cd jpeg-9/

./configure --prefix=/mnt/data/apps/libs --enable-shared --enable-static

make && make install

~~~

c)libpng源码安装

~~~

cd /mnt/data/tgz/

wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.2.tar.gz

tar zxvf libpng-1.6.2.tar.gz

cd libpng-1.6.2/

./configure --prefix=/mnt/data/apps/libs

make && make install

~~~

d)freetype源码安装

~~~

cd /mnt/data/tgz/

wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.gz

tar zxvf freetype-2.4.12.tar.gz

cd freetype-2.4.12/

./configure --prefix=/mnt/data/apps/libs

make && make install

~~~

e)libmcrypt源码安装

~~~

cd /mnt/data/tgz/

wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz

tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8/

./configure --prefix=/mnt/data/apps/libs

make && make install

cd libltdl/

./configure --prefix=/mnt/data/apps/libs --enable-ltdl-install

make && make install

~~~

f)mhash源码安装

~~~

cd /mnt/data/tgz/

wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz

tar zxvf mhash-0.9.9.9.tar.gz

cd mhash-0.9.9.9/

./configure --prefix=/mnt/data/apps/libs

make && make install

~~~

g)libiconv源码安装

~~~

cd /mnt/data/tgz/

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

tar -zxvf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure --prefix=/mnt/data/apps/libs

make && make install

 

#解决./stdio.h:1010:1: 错误:‘gets’未声明(不在函数内) 的问题

cd srclib/

sed -i -e '/gets is a security/d' ./stdio.in.h

cd ../

make && make install

~~~

 

h)添加编译时使用的动态链接库的路径

~~~

vi /etc/ld.so.conf

#添加一行

/mnt/data/apps/libs/lib

#生效

ldconfig

~~~

 

i)mcrypt源码安装

~~~

cd /mnt/data/tgz/

wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz

tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

export LDFLAGS="-L/mnt/data/apps/libs/lib -L/usr/lib"

export CFLAGS="-I/mnt/data/apps/libs/include -I/usr/include"

touch malloc.h

./configure --prefix=/mnt/data/apps/libs --with-libmcrypt-prefix=/mnt/data/apps/libs

make && make install

~~~

2)php编译安装:  

a)php7源码安装

~~~

cd /mnt/data/tgz

wget http://cn2.php.net/distributions/php-7.2.24.tar.gz

tar xzvf php-7.2.24.tar.gz

cd php-7.2.24

#./configure --help

 

./configure --prefix=/mnt/data/apps/php7 --with-config-file-path=/mnt/data/apps/php7/etc --with-mysqli=/mnt/data/apps/mysql/bin/mysql_config --with-iconv=/mnt/data/apps/libs/ --with-freetype-dir=/mnt/data/apps/libs --with-jpeg-dir=/mnt/data/apps/libs --with-png-dir=/mnt/data/apps/libs --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/mnt/data/apps/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --with-bz2 --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --without-pear --with-gettext  --enable-fpm --enable-opcache=no

make && make install

 

cp php.ini-development /mnt/data/apps/php7/etc/php.ini

cp ./sapi/fpm/php-fpm.conf /mnt/data/apps/php7/etc/php-fpm.conf

cp /mnt/data/apps/php7/etc/php-fpm.d/www.conf.default /mnt/data/apps/php7/etc/php-fpm.d/www.conf

 

#下面是为了php-fpm随系统自启动。

cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod 755 /etc/init.d/php-fpm

chkconfig  --add php-fpm

chkconfig php-fpm on

 

#更改php-fpm启动用户

vi /mnt/data/apps/php7/etc/php-fpm.d/www.conf

#把下面两行

user = nobody

group = nobody

#改为:

user = www

group = www

 

#启动php

/mnt/data/apps/php7/sbin/php-fpm

或  service php-fpm start

#查看进程

ps aux|grep php-fpm

 

3)php扩展安装:  

 

a)redis扩展安装redis.so

~~~

cd /mnt/data/tgz

wget http://pecl.php.net/get/redis-5.2.0.tgz

tar xzvf redis-5.2.0.tgz

cd redis-5.2.0

/mnt/data/apps/php7/bin/phpize

./configure --with-php-config=/mnt/data/apps/php7/bin/php-config

make && make install

~~~

 

b)swoole扩展安装swoole.so

 

 

~~~

swoole扩展安装swoole.so

cd /mnt/data/tgz

wget http://pecl.php.net/get/swoole-4.3.1.tgz

tar zxvf swoole-4.3.1.tgz

cd swoole-4.3.1

/mnt/data/apps/php7/bin/phpize

./configure --with-php-config=/mnt/data/apps/php7/bin/php-config

make && make install

~~~

 

c)使扩展生效:

 

~~~

vi /mnt/data/apps/php7/etc/php.ini

#打开 /mnt/data/apps/php7/etc/php.ini 查找 ; extension_dir = "ext"

#更改extension_dir的值,此值视具体情况而定

extension_dir = "/mnt/data/apps/php7/lib/php/extensions/no-debug-zts-20170718/"

#在其后增加一行:

extension = swoole.so

extension = redis.so

~~~

posted @   我要的我现在就要  阅读(489)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示