LNMP平台的搭建(源码编译)

1.软件清单、软件包存放位置。 

 软件存放位置为:/usr/local/src

 软件安装位置为:/usr/local/softname  

  1、下载nginx

  http://nginx.org/download/nginx-1.10.1.tar.gz

  2、下载MySQL

  http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.33.tar.gz

  3、下载php

  http://cn2.php.net/distributions/php-5.6.26.tar.gz

  4、下载cmake(MySQL编译工具)

  https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz

  5、下载pcre (支持nginx伪静态)

  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz

  6、下载openssl(nginx扩展)

  https://www.openssl.org/source/openssl-1.0.2j.tar.gz

  7、下载zlib(nginx扩展)

  http://zlib.net/zlib-1.2.8.tar.gz

  8、下载libmcrypt(php扩展)

  http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

  9、下载yasm(php扩展)

  http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

  10、t1lib(php扩展)

  ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-5.1.2.tar.gz

  11、下载gd库安装包

  https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.1.tar.gz

  12、libvpx(gd库需要)

  http://ftp.osuosl.org/pub/blfs/conglomeration/libvpx/libvpx-1.6.0.tar.bz2

  13、tiff(gd库需要)

  http://download.osgeo.org/libtiff/tiff-4.0.6.tar.gz

  14、libpng(gd库需要)

  ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.25.tar.gz

  15、freetype(gd库需要)

  http://download.savannah.gnu.org/releases/freetype/freetype-2.7.tar.gz

  16、jpegsrc(gd库需要)

  http://www.ijg.org/files/jpegsrc.v9b.tar.gz

  17、Boost(编译mysql需要)

  http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

  安装编译工具及库文件(使用yum命令安装)  

  yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libxml* libtiff libtiff* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel

  关闭防火墙:

  systemctl stop firewalld #关闭防火墙

   syemctl disable firewalld #禁止开机自启

一.安装软件 

  一、安装MySQL 5.6以后My SQL要用cmake来编译了。所以先装cmake

    1、安装cmake 

复制代码

 cd /usr/local/src 

  tar zxvf cmake-3.6.2.tar.gz #解压cmake

     cd cmake-3.6.2 #进入程序安装目录

  ./configure #生成makefile文件

  make #编写安装过程中的配置

  make install #根据makefile文件进行安装。

复制代码

    2、编译安装MySQL (转自 wendi_0506  http://blog.csdn.net/wendi_0506/article/details/39478369/)

复制代码

 

  groupadd mysql #添加mysql组

  useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统

  mkdir -p /soft_data/mysql/data/mysql #创建MySQL数据库存放目录

  chown -R mysql:mysql /soft_data/mysql/data/mysql #设置MySQL数据库存放目录权限

  mkdir -p /usr/local/mysql #创建MySQL安装目录

  cd /usr/local/src #进入软件包存放目录

  cd mysql-5.7.14 #进入目录

  1. cmake \   
  2. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   
  3. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \   
  4. -DDEFAULT_CHARSET=utf8 \   
  5. -DDEFAULT_COLLATION=utf8_general_ci \   
  6. -DWITH_INNOBASE_STORAGE_ENGINE=1 \   
  7. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \   
  8. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \   
  9. -DMYSQL_DATADIR=/soft_data/mysql/data/mysqldb \   
  10. -DMYSQL_TCP_PORT=3306 \   
  11. -DENABLE_DOWNLOADS=1 

   make

   make install

DCMAKE_INSTALL_PREFIX=dir_name 设置mysql安装目录
-DMYSQL_UNIX_ADDR=file_name 设置监听套接字路径,这必须是一个绝对路径名。默认为/tmp/mysql.sock
-DDEFAULT_CHARSET=charset_name 设置服务器的字符集。
缺省情况下,MySQL使用latin1的(CP1252西欧)字符集。cmake/character_sets.cmake文件包含允许的字符集名称列表。
-DDEFAULT_COLLATION=collation_name 设置服务器的排序规则。
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
存储引擎选项:

MyISAM,MERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装。

静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1

可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)
-DMYSQL_DATADIR=dir_name 设置mysql数据库文件目录
-DMYSQL_TCP_PORT=port_num 设置mysql服务器监听端口,默认为3306
-DENABLE_DOWNLOADS=bool 是否要下载可选的文件。例如,启用此选项(设置为1),cmake将下载谷歌所使用的测试套件运行单元测试。
 

复制代码

  添加mysql到环境变量

复制代码

echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile #将mysql添加到shell的环境变量中

source /etc/profile #重新载入配置文件


echo $PATH #查看mysql是否加入环境变量

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

OK!

复制代码

  初始化mysql数据库

cd /usr/local/mysql   
scripts/mysql_install_db --user=mysql --datadir=/data/mysqldb   

  复制mysql服务启动配置文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf  

如果存在就覆盖

  复制Mysql启动脚本

cd /usr/local/mysql/

cp support-files/mysql.server /etc/init.d/mysqld  

  启动mysql服务并加入开机自启动(可选这个步骤,以后可以自己启动的)

service mysqld start 

chkconfig --level 35 mysqld on

  查看一下mysql是否开启成功

tcp6       0      0 :::3306                 :::*                    LISTEN      25830/mysqld        

OK! 

  修改mysql root用户密码:

mysqladmin -u root password '123456'

  下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

ln -s /usr/local/mysql/include/mysql /usr/include/mysql

  可能会出现的错误.

复制代码

1、问题:   
Starting MySQL..The server quit without updating PID file ([FAILED]/mysql/Server03.mylinux.com.pid).   
解决:   
修改/etc/my.cnf 中datadir,指向正确的mysql数据库文件目录  

 2、问题: 
  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

  解决:   新建一个链接或在mysql中加入-S参数,直接指出mysql.sock位置。

  ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock   

  /usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock  

 3、问题:

  MySQL问题解决:-bash:mysql:command not found  

  原因: 因为mysql命令的路径在/usr/local/mysql/bin下面,所以你直接使用mysql命令时, 

  系统在/usr/bin下面查此命令,所以找不到了 

  解决办法是: ln -s /usr/local/mysql/bin/mysql /usr/bin 做个链接即可

复制代码

  那么到此mysql就安装、配置完了。

二、安装Nginx  

  1、安装pcre

复制代码

cd /usr/local/src

  mkdir /usr/local/pcre

  tar zxvf pcre-8.39.tar.gz

  cd pcre-8.39

  ./configure --prefix=/usr/local/pcre

  make

  make install

复制代码

  2、安装openssl

复制代码

cd /usr/local/src

mkdir /usr/local/openssl

tar zxvf openssl-1.0.2j.tar.gz

cd openssl-1.0.2j

./config --prefix=/usr/local/openssl

make

make install




echo 'export PATH=$PATH:/usr/local/openssl/bin'>>/etc/profile

source /etc/profile

复制代码

  3.安装zilb

复制代码

cd /usr/local/src

mkdir /usr/local/zlib

tar -zxf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure --prefix=/usr/local/zlib

make

make install

复制代码

 4、安装Nginx

复制代码

groupadd www #创建一个www组

useradd -g www www -s /bin/false 同上添加一个www用户,加入www组,不允许登录系统

cd /usr/local/src

tar zxvf nginx-1.8.0.tar.gz

cd nginx-1.8.0
./configure --prefix=/usr/local/nginx  
--user=www --group=www 
--with-http_stub_status_module 
--with-http_ssl_module 
--with-http_gzip_static_module 
--with-openssl=/usr/local/src/openssl-1.0.2j --with-zlib=/usr/local/src/zlib-1.2.11 --with-pcre=/usr/local/src/pcre-8.39

注意此处的zlib和pcre是你解压源码包后的地址而不是安装地址。否则会报错

  make

  make install

复制代码

  /usr/local/nginx/sbin/nginx 启动nginx

  由于编译安装,没有启动脚本需要编写启动脚本放入/etc/rc.d/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

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

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

############################################################

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig: - 85 15

# description: Nginx is an HTTP(S) server, HTTP(S) reverse \

# proxy and IMAP/POP3 proxy server

# processname: nginx

# config: /etc/nginx/nginx.conf

# config: /usr/local/nginx/conf/nginx.conf

# pidfile: /usr/local/nginx/logs/nginx.pid

# Source function library.

/etc/rc.d/init.d/functions

# Source networking configuration.

/etc/sysconfig/network

# Check that networking is up.

"$NETWORKING" "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"

prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {

# make required directories

user=`$nginx -V 2>&1 | grep "configure arguments:" sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

if [ -z "`grep $user /etc/passwd`" ]; then

useradd -M -s /bin/nologin $user

fi

options=`$nginx -V 2>&1 | grep 'configure arguments:'`

for opt in $options; do

if [ `echo $opt | grep '.*-temp-path'` ]; then

value=`echo $opt | cut -d "=" -f 2`

if [ ! -d "$value" ]; then

# echo "creating" $value

mkdir -p $value && chown -R $user $value

fi

fi

done

}

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

make_dirs

echo -n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

#configtest || return $?

stop

sleep 1

start

}

reload() {

#configtest || return $?

echo -n $"Reloading $prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit 2

esac

############################################################

  chmod 775 /etc/rc.d/init.d/nginx #赋予文件执行权限

  systemctl enable nginx #开机自启nginx

  在浏览器中输入服务器IP地址,会看到下面的界面,说明Nginx安装成功。

  

三、安装php

  1、安装yasm  

复制代码

cd /usr/local/src

tar zxvf yasm-1.3.0.tar.gz

cd yasm-1.3.0

./configure

make

make install

复制代码

  2、安装libmcrypt 

复制代码

cd /usr/local/src

tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

./configure

make

make install

复制代码

  3、安装libvpx

复制代码

cd /usr/local/src

tar xvf libvpx-1.6.0.tar.bz2

cd libvpx-1.6.0

./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9

make

make install

复制代码

  4、安装tiff

复制代码

cd /usr/local/src

tar zxvf tiff-4.0.6.tar.gz

cd tiff-4.0.6

./configure --prefix=/usr/local/tiff --enable-shared

make

make install

复制代码

  5、安装libpng

复制代码

cd /usr/local/src

tar zxvf libpng-1.6.25.tar.gz

cd libpng-1.6.25

./configure --prefix=/usr/local/libpng --enable-shared

make

make install

复制代码

  6、安装freetype

复制代码

cd /usr/local/src

tar zxvf freetype-2.7.tar.gz

cd freetype-2.7

./configure --prefix=/usr/local/freetype --enable-shared

make

make install

复制代码

  7、安装jpeg

复制代码

cd /usr/local/src

tar zxvf jpegsrc.v9b.tar.gz

cd jpeg-9b

./configure --prefix=/usr/local/jpeg --enable-shared

make

make install

复制代码

  8、安装libgd (我就使用默认的)

复制代码

cd /usr/local/src

tar zxvf libgd-2.1.1.tar.gz

cd libgd-2.1.1
./configure --prefix=/usr/local/libgd 
--enable-shared --with-jpeg=/usr/local/jpeg 
--with-png=/usr/local/libpng 
--with-freetype=/usr/local/freetype 
--with-fontconfig=/usr/local/freetype 
--with-xpm=/usr/ 
--with-tiff=/usr/local/tiff 
--with-vpx=/usr/local/libvpx

make

make install

如果libgd编译失败,可以先跳过,直接使用系统默认的2.1.0版本,在编译php的时候把参数--with-gd=/usr/local/libgd修改为--with-gd即可。

复制代码

  9、安装t1lib

复制代码

cd /usr/local/src

tar zxvf t1lib-5.1.2.tar.gz

cd t1lib-5.1.2

./configure --prefix=/usr/local/t1lib --enable-shared

make without_doc

make install

复制代码

  10、安装php

  注意:如果系统是64位,请执行以下命令,否则安装php会出错!

\cp -frp /usr/lib64/libltdl.so* /usr/lib/

\cp -frp /usr/lib64/libXpm.so* /usr/lib/

复制代码

cd /usr/local/src

tar -zvxf php-7.0.11.tar.gz

cd php-7.0.11

export LD_LIBRARY_PATH=/usr/local/libgd/lib #如果你安装好了libgd你就写这条 不然肯定没意义。

./configure --prefix=/usr/local/php 
--with-config-file-path=/usr/local/php/etc 
--with-mysqli=/usr/local/mysql/bin/mysql_config 
--with-mysql-sock=/tmp/mysql.sock (这里我的Mysql、是双实例的和这不一样所以要根据自己的来)
--with-pdo-mysql=/usr/local/mysql 
--with-gd(这里的我的没安装好所以就选这个了)
--with-png-dir=/usr/local/libpng 
--with-jpeg-dir=/usr/local/jpeg 
--with-freetype-dir=/usr/local/freetype 
--with-xpm-dir=/usr/lib64 
--with-zlib-dir=/usr/local/zlib 
--with-iconv 
--enable-libxml 
--enable-xml 
--enable-bcmath 
--enable-shmop 
--enable-sysvsem 
--enable-inline-optimization 
--enable-opcache 
--enable-mbregex 
--enable-fpm 
--enable-mbstring 
--enable-ftp 
--enable-gd-native-ttf 
--with-openssl 
--enable-pcntl 
--enable-sockets 
--with-xmlrpc 
--enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype --enable-mysqlnd


make

make install

复制代码

   11、配置php  

复制代码

cp php.ini-production /usr/local/php/etc/php.ini #复制php配置文件到安装目录

rm -rf /etc/php.ini #删除系统自带配置文件

ln -s /usr/local/php/etc/php.ini /etc/php.ini #添加软链接到 /etc目录

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到 /etc目录

vim /usr/local/php/etc/php-fpm.conf #编辑

pid = run/php-fpm.pid #取消前面的分号

user = www

group = www

:wq! #保存退出

cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

vim /usr/local/php/etc/php-fpm.d/www.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

设置 php-fpm开机启动

cp /usr/local/src/php-7.0.11/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限

chkconfig php-fpm on #设置开机启动

vi /usr/local/php/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,
shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,
openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,
dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,
getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, 
posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,
posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, 
posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,
posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

找到opcache.enable=0

修改为opcache.enable=1 #php支持opcode缓存

找到:;opcache.enable_cli=1 #php支持opcode缓存

修改为:opcache.enable_cli=0

在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能

:wq! #保存退出

复制代码

  12、配置nginx支持php

复制代码

vim /usr/local/nginx/conf/nginx.conf

修改/usr/local/nginx/conf/nginx.conf 配置文件,需做如下修改

user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php/etc/php-fpm.conf中的user,group配置相同,否则php运行出错

 

 找到以下行,将location到大括号的#都删掉同时修改SCRIPT_FILENAME后面的路径。

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

 #

 location ~ \.php$ {

  root html;

 fastcgi_pass 127.0.0.1:9000;

 fastcgi_index index.php;

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

 include fastcgi_params;

 }

 

 /etc/init.d/nginx restart #重启nginx

 /etc/init.d/php-fpm restart #重启php-fpm

复制代码

  终篇、测试结果

  在/usr/local/nginx/html下 

复制代码

vim index.php
<?php phpinfo(); ?>
:x

  chown www.www /usr/local/nginx/html/ -R #设置目录所有者

  chmod 700 /usr/local/nginx/html/ -R #设置目录权限

复制代码

猜你喜欢

转载自blog.csdn.net/sunjinyan_1/article/details/81223851