首页 > 代码库 > CentOS 7.0源码包搭建LNMP 实际环境搭建

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

技术分享


到此lnmp源码安装完成


本文出自 “成长记录” 博客,请务必保留此出处http://juestnow.blog.51cto.com/1515305/1883133

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