详解CentOS 7.0源码包搭建LNMP 实际环境搭建

2019-10-13 13:12:24刘景俊

Centos7+Nginx1.11.7+MySQL5.7.16+PHP7.1.0+openssl-1.1.0c

一、linux 系统限制配置

1、关闭系统防火墙    

systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 禁用防火墙

2、关闭SElinux

sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config 
setenforce 0 selinux 立即生效

二、系统安装约定

软件源代码包存放位置:/usr/local/src

源码包编译安装位置:/usr/local/软件名字

三、下载软件包

1、下载nginx最新稳定版本

 wget -P /usr/local/src http://nginx.org/download/nginx-1.11.7.tar.gz

2、下载mysql-boost-5.7.16 带 boost 如果不带源码安装如果网络环境不会可能会出现错误

wget -P /usr/local/src http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-boost-5.7.16.tar.gz

3、下载php-7.1.0版本

wget -P /usr/local/src http://cn2.php.net/distributions/php-7.1.0.tar.gz

4、下载libmemcached-1.0.18

wget -P /usr/local/src https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz

5、下载php-memcached

yum -y install git
cd /usr/local/src 
git clone -b php7 https://github.com/php-memcached-dev/php-memcached.git

6、下载openssl-1.1.0c

wget -P /usr/local/src https://www.openssl.org/source/openssl-1.1.0c.tar.gz

四、安装编译器及依赖

yum -y insyall epel-release
yum -y install patch gcc gcc-c++ readline-devel zlib-devel libffi-devel 
 openssl openssl-devel make autoconf automake libtool bison libxml2 
 libxml2-devel libxslt-devel libyaml-devel python python-docutils 
 cmake imake expat-devel libaio libaio-devel bzr ncurses-devel wget 
 libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel 
 pcre-devel curl-devel libmcrypt libmcrypt-devel

五、编译安装mysql-boost-5.7.16 方便再次安装创建mysql_install.sh脚本

1、mysql_install.sh内容

#!/bin/bash
#yum update -y
#yum install -y cmake gcc-c++ ncurses-devel gcc make openssl*
#mysql安装脚本
DBDIR='/data/mysql' #mysql数据存储目录
MYSQLDIR='/usr/local/mysql' # mysql安装目录
PASSWD='123456' # mysql root密码 安装完成可远程ip登陆
[ -d $DBDIR ] || mkdir $DBDIR -p
id mysql &> /dev/null
if [ $? -ne 0 ];then
 useradd mysql -s /sbin/nologin -M
fi
chown -R mysql:mysql $DBDIR
cd /usr/local/src
tar -xvf mysql-boost-5.7.16.tar.gz
cd mysql-5.7.16
cmake . -DCMAKE_INSTALL_PREFIX=$MYSQLDIR 
-DMYSQL_DATADIR=$DBDIR 
-DSYSCONFDIR=/etc 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_ARCHIVE_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITH_READLINE=1 
-DWITH_LIBWRAP=0 
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 
-DWITH_SSL=system 
-DWITH_ZLIB=system 
-DWITH_BOOST=/usr/local/src/mysql-5.7.16/boost/boost_1_59_0 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci
if [ $? != 0 ];then
 echo "cmake error!"
 exit 1
fi
make && make install
if [ $? -ne 0 ];then
 echo "install mysql is failed!" && /bin/false
fi
sleep 2
chown -R mysql:mysql $MYSQLDIR
chown -R root:root $MYSQLDIR
cp $MYSQLDIR/support-files/my-default.cnf /etc/my.cnf
echo export PATH=$PATH:$MYSQLDIR/bin:$MYSQLDIR/lib >>/etc/profile
source /etc/profile
cat >> /etc/my.cnf << EOF
character_set_server = utf8
basedir = $MYSQLDIR
datadir = $DBDIR
port = 3306
server_id = 1
socket = /tmp/mysql.sock
explicit_defaults_for_timestamp=true
EOF
sed -i 's/sql_mode=.*/sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER/g' /etc/my.cnf
  source /etc/profile
  sleep 5
  cd $MYSQLDIR
  cp support-files/mysql.server /etc/init.d/mysqld
  chmod 700 /etc/init.d/mysqld
  mysql_ssl_rsa_setup
  rm -rf $DBDIR
  mysqld --initialize --user=mysql
  if [ $? -ne 0 ];then
 echo "install mysql is failed!" && /bin/false
fi
#/etc/init.d/mysqld stop
  mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
  sleep 5
  echo "update user set authentication_string=Password('$PASSWD') where user='root'; flush privileges;" | mysql mysql
 
  echo "set password=Password('$PASSWD'); flush privileges;" | mysql -u root -p$PASSWD --connect-expired-password
  sleep 5
  echo "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '$PASSWD'; FLUSH PRIVILEGES; " | mysql -u root -p$PASSWD
  /etc/init.d/mysqld restart
  if [ $? -ne 0 ];then
 echo "install mysql is failed!" && /bin/false
fi
IDSO=`cat /etc/ld.so.conf| grep $MYSQLDIR/lib | wc -l `
if [ $IDSO -eq 0 ];then
echo "$MYSQLDIR/lib" >> /etc/ld.so.conf 
ldconfig
fi
chkconfig mysqld on