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

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

2、给 mysql_install.sh  可执行权限

  chmod +x mysql_install.sh

3、运行mysql_install.sh 

  ./mysql_install.sh

六、编译安装php7  创建php安装脚本php7_install.sh

1、vim php7_install.sh

  #!/bin/bash  if [ $( find / -name mysql | wc -l ) -gt 1 ];then  echo " mysql is install "  else  yum install -y mysql  fi  cd /usr/local/src  tar -xzvf php-7.1.0.tar.gz  cd ./php-7.1.0  ./configure   --prefix=/usr/local/php7   --exec-prefix=/usr/local/php7   --with-config-file-path=/usr/local/php7/etc    --with-curl    --with-freetype-dir    --with-gd    --with-gettext    --with-iconv-dir    --with-kerberos    --with-libdir=lib64    --with-libxml-dir    --with-mysqli    --with-openssl    --with-pcre-regex    --with-pdo-mysql    --with-pdo-sqlite    --with-pear    --with-png-dir    --with-xmlrpc    --with-xsl    --with-zlib    --with-zlib-dir    --with-mhash    --with-mcrypt    --with-openssl-dir    --with-jpeg-dir    --enable-fpm    --enable-bcmath    --enable-libxml    --enable-inline-optimization    --enable-gd-native-ttf    --enable-mbregex    --enable-mbstring    --enable-opcache    --enable-pcntl    --enable-shmop    --enable-soap    --enable-sockets    --enable-sysvsem    --enable-xml    --enable-zip  make && make install     # 中文php画图取消这个参数,不然会出现乱码  # --enable-gd-jis-conv   

2、给 php7_install.sh 可执行权限

  chmod +x php7_install.sh

3、执行 php7_install.sh

  ./php7_install.sh

4、编译安装libmemcached-1.0.18

vim libmemcached_install.sh

  #/!bin/bash  cd /usr/local/src  tar -zxvf libmemcached-1.0.18.tar.gz  cd ./libmemcached-1.0.18  ./configure --prefix=/usr/local/libmemcached  make && make install    chmod +x libmemcached_install.sh  ./libmemcached_install.sh    

5、编译安装php-memcached

vim memcached_install.sh

  #!/bin/bash  cd /usr/local/src/php-memcached  /usr/local/php7/bin/phpize  ./configure --with-libmemcached-dir=/usr/local/libmemcached    --with-php-config=/usr/local/php7/bin/php-config    --disable-memcached-sasl  make && make install    chmod +x memcached_install.sh  ./memcached_install.sh    

留意编完成生成文件路径

  Installing shared extensions:  /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/

七、编译安装openssl-1.1.0c

vim openssl_install.sh

  #!/bin/bash  #openssl install  cd /usr/local/src  tar -xvf openssl-1.1.0c.tar.gz  cd /usr/local/src/openssl-1.1.0c  ./config --openssldir=/usr/local/ssl  make && make install  ./config shared --openssldir=/usr/local/ssl  make clean  make && make install  IDSO=`cat /etc/ld.so.conf| grep /usr/local/lib64 | wc -l `  if [ $IDSO -eq 0 ];then  echo "/usr/local/lib64" >> /etc/ld.so.conf  fi  ldconfig    chmod +x openssl_install.sh  ./openssl_install.sh

八、编译安装nginx-1.11.7

vim nginx_install.sh

  #!/bin/bash  # nginx install  id nginx &> /dev/null  if [ $? -ne 0 ];then   groupadd -r nginx   useradd -g nginx -r nginx  fi  cd /usr/local/src  tar -xvf nginx-1.11.7.tar.gz  cd /usr/local/src/nginx-1.11.7  ./configure --prefix=/usr/local/nginx   --sbin-path=/usr/sbin/nginx   --conf-path=/etc/nginx/nginx.conf   --error-log-path=/var/log/nginx/error.log   --http-log-path=/var/log/nginx/access.log   --pid-path=/var/run/nginx.pid   --lock-path=/var/run/nginx.lock   --http-client-body-temp-path=/var/cache/nginx/client_temp   --http-proxy-temp-path=/var/cache/nginx/proxy_temp   --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp   --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp   --http-scgi-temp-path=/var/cache/nginx/scgi_temp   --user=nginx   --group=nginx   --with-http_ssl_module   --with-http_realip_module   --with-http_addition_module   --with-http_sub_module   --with-http_dav_module   --with-http_flv_module   --with-http_mp4_module   --with-http_gunzip_module   --with-http_gzip_static_module   --with-http_random_index_module   --with-http_secure_link_module   --with-http_stub_status_module   --with-http_auth_request_module   --with-threads   --with-stream   --with-openssl=/usr/local/src/openssl-1.1.0c  # openssl 源码解压路径  --with-stream_ssl_module   --with-http_slice_module   --with-mail   --with-mail_ssl_module   --with-file-aio   --with-http_v2_module   --with-ipv6   mkdir -pv /var/cache/nginx/{client_temp,proxy_temp,fastcgi_temp,uwsgi_temp,scgi_temp}  make && make install  

2、给nginx_install.sh可执行权限

   chmod +x nginx_install.sh   ./nginx_install.sh

九、配置PHP7

/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/memcached.so

这个路径是 随机可变的所以要注意

留意变完成生成文件路径

Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/

  cd /usr/local/src/php-7.1.0  cp php.ini-production /usr/local/php7/etc/php.ini  cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf  cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf  sed -i "s/user = .*/user = nginx/g" /usr/local/php7/etc/php-fpm.d/www.conf  sed -i "s/group = .*/group = nginx/g" /usr/local/php7/etc/php-fpm.d/www.conf  cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm  chmod +x /etc/init.d/php-fpm  chkconfig php-fpm on  cat >> /usr/local/php7/etc/php.ini<< EOF  soap.wsdl_cache_enabled=1  max_input_time = 600  max_execution_time = 300  date.timezone = Asia/Shanghai  post_max_size = 32M  memory_limit = 128M  mbstring.func_overload = 1  extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/memcached.so  EOF  cat > /usr/local/nginx/html/index.php<<EOF  <?php  phpinfo();  ?>   EOF  service php-fpm start  

十、配置nginx

1、重命名:/etc/nginx/nginx.conf

  mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.back

2、新建/etc/nginx/nginx.conf

  cat > /etc/nginx/nginx.conf << EOF  user nginx;  worker_processes 1;     error_log /var/log/nginx/error.log warn;  pid  /var/run/nginx.pid;        events {   worker_connections 1024;  }        http {   include  /etc/nginx/mime.types;   default_type application/octet-stream;      log_format main '$remote_addr - $remote_user [$time_local] "$request" '        '$status $body_bytes_sent "$http_referer" '        '"$http_user_agent" "$http_x_forwarded_for"';      access_log /var/log/nginx/access.log main;      sendfile  on;   #tcp_nopush  on;      keepalive_timeout 65;      #gzip on;      include /etc/nginx/conf.d/*.conf;  }  EOF  

3、创建/etc/nginx/conf.d

  mkdir -p /etc/nginx/conf.d

4、创建支持php-fpm web nginx配置

  cat > /etc/nginx/conf.d/default.conf << EOF  server {    listen  80;    server_name localhost;       #charset koi8-r;       #access_log logs/host.access.log main;       location / {     root /usr/local/nginx/html;     index index.php index.html index.htm;    }       #error_page 404    /404.html;       # redirect server error pages to the static page /50x.html    #    error_page 500 502 503 504 /50x.html;    location = /50x.html {     root html;    }       # proxy the PHP scripts to Apache listening on 127.0.0.1:80    #    #location ~ .php$ {    # proxy_pass http://127.0.0.1;    #}       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000    #    location ~ .php$ {     root   /usr/local/nginx/html;     fastcgi_pass 127.0.0.1:9000;     fastcgi_index index.php;     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;     include  fastcgi_params;    }    location ~* ^.+.(jpg|jpeg|gif|png|bmp)$ {     access_log off;     root  opencart;     expires  30d;        break;    }  }  EOF  

5、创建nginx启动脚本

vim /etc/init.d/nginx

  # chkconfig: 2345 10 90  # description: Start and Stop nginx     PATH=/usr/local/bin:/sbin:/usr/bin:/bin     EXEC=/usr/sbin/nginx  PIDFILE=/var/run/nginx.pid  CONF="/etc/nginx/nginx.conf"  AUTH="1234"     case "$1" in    start)      if [ -f $PIDFILE ]      then        echo "$PIDFILE exists, process is already running or crashed."      else        echo "Starting nginx server..."        $EXEC -c $CONF &      fi      if [ "$?"="0" ]      then        echo "nginx is running..."      fi      ;;    stop)      if [ ! -f $PIDFILE ]      then        echo "$PIDFILE exists, process is not running."      else        PID=$(cat $PIDFILE)        echo "Stopping..."        kill -9 $PID        PID=$(pidof nginx)        kill -9 $PID        rm -rf /var/run/nginx.pid        sleep 2        while [ -x $PIDFILE ]        do          echo "Waiting for nginx to shutdown..."          sleep 1        done        echo "nginx stopped"      fi      ;;    reload)        $EXEC -s reload      ;;    restart|force-reload)      ${0} stop      ${0} start      ;;    *)      echo "Usage: /etc/init.d/nginx {start|stop|restart|force-reload|reload}" >&2      exit 1  esac  

6、给 /etc/init.d/nginx 可执行权限

  chmod +x /etc/init.d/nginx

7、设置开机启动

  chkconfig nginx on

8、启动nginx

  service nginx start

十一、测试

  [root@QKA169 src]# openssl version    OpenSSL 1.1.0c 10 Nov 2016  mysql -u root -p123456  mysql> show databases;   +--------------------+  | Database   |  +--------------------+  | information_schema |  | mysql    |  | performance_schema |  | sys    |  +--------------------+  4 rows in set (0.00 sec)  看看是否登陆成功。远程带IP是否登陆成功  mysql -u root -h192.168.1.69 -p123456  mysql> show databases;   +--------------------+  | Database   |  +--------------------+  | information_schema |  | mysql    |  | performance_schema |  | sys    |  +--------------------+  4 rows in set (0.00 sec)     mysql: [Warning] Using a password on the command line interface can be insecure.  Welcome to the MySQL monitor. Commands end with ; or g.  Your MySQL connection id is 6  Server version: 5.7.16 Source distribution     Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.     Oracle is a registered trademark of Oracle Corporation and/or its  affiliates. Other names may be trademarks of their respective  owners.     Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.     mysql>  

测试nginx 是否能打开

  [root@QKA169 html]# ps -ef | grep php-fpm  root  337433  1 0 18:03 ?  00:00:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)  nobody 337434 337433 0 18:03 ?  00:00:00 php-fpm: pool www  nobody 337435 337433 0 18:03 ?  00:00:00 php-fpm: pool www  root  337454 37888 0 18:12 pts/0 00:00:00 grep --color=auto php-fpm  [root@QKA169 html]# ps -ef | grep nginx  root  337400  1 0 18:01 ?  00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf  nginx  337401 337400 0 18:01 ?  00:00:00 nginx: worker process  root  337456 37888 0 18:13 pts/0 00:00:00 grep --color=auto nginx  [root@QKA169 html]# netstat -nalp | grep 80  tcp  0  0 0.0.0.0:80    0.0.0.0:*    LISTEN  337400/nginx: maste   tcp  0  0 192.168.1.69:80   192.168.6.6:54714  TIME_WAIT -       tcp  0  0 192.168.1.69:80   192.168.6.6:54709  TIME_WAIT -   远程打开       http://192.168.1.69/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

参与评论