优选主流主机商
任何主机均需规范使用

深入解析CentOS 7.0源码包部署LNMP环境:从零开始搭建实战指南

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

一、linux 系统限制配置

1、关闭系统防火墙

?

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

2、关闭SElinux

?

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

二、系统安装约定

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

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

三、下载软件包

1、下载nginx最新稳定版本

?

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

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

?

1 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版本

?

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

4、下载libmemcached-1.0.18

?

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

5、下载php-memcached

?

1 2 3 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

?

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

四、安装编译器及依赖

?

1 2 3 4 5 6 7 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内容

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 #!/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  可执行权限

?

1 chmod +x mysql_install.sh

3、运行mysql_install.sh

?

1 . /mysql_install .sh

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

1、vim php7_install.sh

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #!/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 可执行权限

?

1 chmod +x php7_install.sh

3、执行 php7_install.sh

?

1 . /php7_install .sh

4、编译安装libmemcached-1.0.18

vim libmemcached_install.sh

?

1 2 3 4 5 6 7 8 9 #/!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

?

1 2 3 4 5 6 7 8 9 10 #!/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

留意编完成生成文件路径

?

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

七、编译安装openssl-1.1.0c

vim openssl_install.sh

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/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

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #!/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可执行权限

?

1 2 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/

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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

?

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

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

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 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

?

1 mkdir -p /etc/nginx/conf .d

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

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 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

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 # 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 可执行权限

?

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

7、设置开机启动

?

1 chkconfig nginx on

8、启动nginx

?

1 service nginx start

十一、测试

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [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 是否能打开

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [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/

 

未经允许不得转载:搬瓦工中文网 » 深入解析CentOS 7.0源码包部署LNMP环境:从零开始搭建实战指南