欢迎光临
专业Linux运维二十年

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

脚本之家
赞(0) 打赏
未经允许不得转载:Linux老运维 » 详解CentOS 7.0源码包搭建LNMP 实际环境搭建

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫