t1lib php_Zabbix部署-LNMP环境

参考文档:

1.LNMP安装:

一.环境

Server:CentOS-7-x86_64-1511

Client:Win7

x86_64, Chrome/Firefox浏览器

二.准备

1. iptables

CentOS7默认自带firewall,无iptables。

[root@localhost

~]# systemctl stop firewalld.service

#停止firewall

[root@localhost

~]# systemctl disable firewalld.service

#禁止firewall开机启动

[root@localhost

~]# yum install iptables-services -y

[root@localhost

~]# vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j

ACCEPT

#参照开放22号端口的规则,添加两行规则开放80/3306两个端口

[root@localhost

~]# systemctl restart iptables.service

#重启iptables,使配置生效

[root@localhost

~]# systemctl enable iptables.service

#设置iptables开机启动

2. SELinux

[root@localhost

~]# vim /etc/sysconfig/selinux

#SELINUX=enforcing#注释掉

SELINUX=disabled#新增

#SELINUXTYPE=targeted#注释掉

[root@localhost

~]# setenforce 0

#使用配置生效

3.获取软件

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

源代码编译安装位置:/usr/local/soft_name

1). nginx

当前最新主线版:wget

当前最新稳定版:wget

2). mysql

wget

3). php

当前7.0稳定版:wget

4). pcre (支持nginx伪静态)

wget

5). openssl (nginx扩展)

当前稳定版:wget

6). zlib (nginx扩展)

wget

7). cmake (mysql编译工具)

wget

8). boost (mysql编译)

wget

#Boost库是C++库,mysql 5.7.5开始编译必须使用boost库,

语法:-DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost_1_59_0,boost_1_60_0对mysql 5.7.11不可用

9). yasm (php扩展)

wget

10). libmcrypt (php扩展)

wget

11). libvpx (gd库需要)

wget

12). tiff (gd库需要)

wget

13). libpng (gd库需要)

wget

14). freetype (gd库需要)

wget

15). jpegsrc (gd库需要)

wget

16). gd库安装包

wget

17). t1lib (php扩展)

wget

#提供的官方下载链接无法打开

三.安装mysql

1.依赖包

yum -y install make

autoconf automake gcc gcc-c++ bison bison-devel ncursesncurses-devel

#部分依赖包已经在系统中,这里只是个人之前安装使用的依赖关系

2.安装cmake

cmake也可以通过yum安装。

cd /usr/local/src/

tar -zxvf cmake-3.5.0.tar.gz

cd cmake-3.5.0

./configure

make

make install

3.安装mysql

准备工作

groupadd mysql

useradd -g mysql -s /sbin/nologin mysql

#创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统

mkdir -p /mysql

#创建MySQL数据库存放目录

chown -R mysql:mysql /mysql

#设置MySQL数据库存放目录权限

mkdir -p /usr/local/mysql

#创建MySQL安装目录basedir

cd /usr/local/src

tar -zxvf boost_1_59_0.tar.gz

#重要!

tar -zxvf mysql-5.7.11.tar.gz

cd mysql-5.7.11

编译安装

预编译

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

#MySQL安装的根目录basedir

-DMYSQL_DATADIR=/mysql \

#MySQL数据库文件存放目录datadir

-DSYSCONFDIR=/etc \

#MySQL配置文件所在目录

#-DMYSQL_USER=mysql \

#MySQL用户名,可以不用编译,后续初始化定义

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

#MySQL的数据库引擎,后面4个可以不用编译

-DWITH_READLINE=1 \

#MySQL的readline library,批量导入数据

#-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \

#MySQL的通讯目录,如果不编译,默认MySQL启动后在/tmp目录,可以在后续使用软链接指定到/var/lib/mysql/

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

#设置默认字符集为utf8

-DDEFAULT_COLLATION=utf8_general_ci \

#设置默认排序字符集规则

-DDOWNLOAD_BOOST=1

-DWITH_BOOST=/usr/local/src/boost_1_59_0

#重要!从MySQL 5.7.5开始,boost库是必需的,否则报error

81,预编译终止。编译时允许自主下载相关文件,下载目录-DWITH_BOOST给出

编译安装

make -j `grep processor /proc/cpuinfo | wc -l`

#使make命令在多个cpu上并行执行

#此版本编译非常耗系统资源,小内存可能编译通不过,2核2G内存大概用了40分钟

make install

4.my.cnf

cd /usr/local/mysql/

rm -rf /etc/my.cnf

#删除系统默认的配置文件(如果默认没有就不用删除)

cp support-files/my-default.cnf

/usr/local/mysql/my.cnf

#复制配置样例文件并修改文件名

ln -s /usr/local/mysql/my.cnf /etc/my.cnf

#添加到/etc目录的软连接

#根据MySQL规则,它的配置文件必须以my.cnf命名,读取的顺序是先尝试读取/etc/my.cnf,如果不存在再读取basedir目录下的my.cnf,如果系统环境变量没有basedir,则尝试读取服务启动所在当前目录下的my.cnf,如果还是不存在,则读取当前用户家目录下的.mysql/my.cnf。所以可以在/etc目录下建1个my.cnf的软链接

5.初始化

cd /usr/local/mysql/bin/

./mysqld

--initialize --user=mysql --basedir=/usr/local/mysql --datadir=/mysql

#初始化生成系统数据库,在MySQL

5.7.6版本以前是basedir目录下的scripts/mysql_install_db命令,这里可以在后面跟上“--socket=/tmp/mysql.sock”指定mysql启动后的通讯录

#"--initialize"会生成一个随机密码,并在屏幕标准输出最后一行显示出来,请记住,重要!如果使用"--initialize-insecure"不会生成密码

#初始化时datadir下不能有数据文件

6.开机启动

cd /usr/local/mysql/

cp

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

#复制启动脚本并改名

chown

mysql:mysql /etc/rc.d/init.d/mysqld

chmod 755

/etc/init.d/mysqld

chkconfig

--level 35 mysqld on

#加入开机启动

vim

/etc/rc.d/init.d/mysqld

46

basedir=/usr/local/mysql

47

datadir=/mysql

#在第46/47行将basedir/datadir完善,保存退出

7.后续处理

vim

/etc/profile

export PATH=$PATH:/usr/local/mysql/bin

#把mysql的多种服务加入系统环境变量,保存退出

source

/etc/profile

#使配置立刻生效

ln -s

/usr/local/mysql/lib/mysql /usr/lib/mysql

ln -s

/usr/local/mysql/include/mysql /usr/include/mysql

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

mkdir

/var/lib/mysql

service

mysqld start

ln -s

/tmp/mysql.sock /var/lib/mysql/mysql.sock

#添加软链接,可以在预编译或初始化时指定路径,默认在/tmp目录下

mysql

-uroot -p初始密码

set

password=password('new password');

#进入数据库后,必须修改初始密码

四.安装nginx

1.依赖包

yum -y install pcre-devel openssl-devel

zlib-devel

#部分依赖包已经在系统中

2.安装pcre

cd

/usr/local/src

mkdir -p /usr/local/pcre

tar -jxvf

pcre-8.38.tar.bz2

cd

pcre-8.38

./configure

--prefix=/usr/local/pcre

make

make

install

3.安装openssl

cd

/usr/local/src

mkdir

/usr/local/openssl

tar -zxvf

openssl-1.0.2g.tar.gz

cd

openssl-1.0.2g

./config

--prefix=/usr/local/openssl

make

make

install

vim

/etc/profile

export PATH=$PATH:/usr/local/openssl/bin

#把mysql的多种服务加入系统环境变量,可以在上方mysql添加的1行后面继续添加,保存退出

source

/etc/profile

4.安装nginx

创建用户

groupadd

www

useradd

-g www -s /sbin/nologin www

编译安装

cd

/usr/local/src

mkdir -p

/usr/local/nginx

tar -zxvf

nginx-1.9.12.tar.gz

cd

nginx-1.9.12

./configure

--prefix=/usr/local/nginx --without-http_memcached_module --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.2g

--with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.38

#--with-openssl=/usr/local/src/openssl-1.0.2g

--with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.38重要!指向的是源码包解压所在的路径,非安装的路径,否则会报错

开机启动

vim

/etc/rc.d/init.d/nginx

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

#复制以上内容到开机启动脚本,保存退出

chown

www:www /etc/rc.d/init.d/nginx

chmod 775

/etc/rc.d/init.d/nginx

chkconfig

--level 35 nginx on

5.验证

service

nginx start

在浏览器中打开服务器ip地址,看到以下界面说明安装成功。

五.安装php

写在前面:

1.php的编译安装看似简单,但涉及到多种应用插件时非常麻烦,需要根据最终应用需要的插件定制编译,所以网上的编译安装不一定适合特定的应用,以下编译适用于zabbix;

2.重要!请务必按照以下依赖包版本安装,否则libgd库编译中会报错,由于依赖包较多,也不方便排查是哪个依赖包的新版本与libgd不兼容,使用下面提供的版本即可。

1.依赖包

yum -y install apr*

cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel libXpm*

libltdl* bcmath gtk+-devel gd php-gd libiconv gettext gettext-devel glibc

kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel

libpng-devel libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp

libxml2 libxml2-devel t1lib t1lib* mpfr ncurses* patch perl php-common

policycoreutils nasm nasm*

#其余部分依赖包通过后面编译安装

2.安装依赖包

yasm

cd

/usr/local/src

tar -zxvf

yasm-1.2.0.tar.gz

cd

yasm-1.2.0

./configure

make

make

install

安装libmcrypt

cd

/usr/local/src

tar -zxvf

libmcrypt-2.5.8.tar.gz

cd

libmcrypt-2.5.8

./configure

make

make

install

安装libvpx

cd

/usr/local/src

tar -jxvf

libvpx-v1.3.0.tar.bz2

cd

libvpx-v1.3.0

./configure

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

make

make

install

安装tiff

cd

/usr/local/src

tar -zxvf

tiff-4.0.3.tar.gz

cd

tiff-4.0.3

./configure

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

make

make

install

安装libpng

cd

/usr/local/src

tar -zxvf

libpng-1.6.12.tar.gz

cd

libpng-1.6.12

./configure

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

make

make

install

安装freetype

cd

/usr/local/src

tar -zxvf

freetype-2.5.3.tar.gz

cd

freetype-2.5.3

./configure

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

make

make

install

安装jpeg

cd

/usr/local/src

tar -zxvf

jpegsrc.v9a.tar.gz

cd

jpeg-9a

./configure

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

make

make

install

安装libgd

cd

/usr/local/src

tar -zxvf

libgd-2.1.0.tar.gz

cd

libgd-2.1.0

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

#编译需要上面列出的几个依赖包支持

安装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

3.安装php

准备

\cp -frp

/usr/lib64/libltdl.so*  /usr/lib/

\cp -frp

/usr/lib64/libXpm.so* /usr/lib/

#重要!如系统是64位,请执行以上两条命令,否则安装php会出错(32位系统不需要执行)

安装

cd

/usr/local/src

tar -jxvf

php-7.0.4.tar.bz2

cd

php-7.0.4

export

LD_LIBRARY_PATH=/usr/local/libgd/lib

#编译时需要的变量

./configure

--prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc

--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config

--with-mysql-sock=/tmp/mysql.sock --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/

--with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib

--with-t1lib=/usr/local/t1lib --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

make

make install

配置

cd

/usr/local/src/php-7.0.4

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

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

#取消前面的分号,保存退出

cp/usr/local/php/etc/php-fpm.d/

/usr/local/php/etc/php-fpm.d/

vim

/usr/local/php/etc/php-fpm.d/

user = www

group = www

#

php-fpm.conf最后一行调用php-fpm.d目录中的”.conf”文件,使用模板文件复制出1个文件,修改运行user/group

vim

/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

修改为:opcache.enable_cli=0

#禁止支持opcode缓存

在最后一行添加:zend_extension=opcache.so

#开启opcode缓存功能

开机启动

cp

/usr/local/src/php-7.0.4/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

#从解压目录拷贝php-fpm到启动目录

chown

www:www /etc/rc.d/init.d/php-fpm

#非必须

chmod 755

/etc/rc.d/init.d/php-fpm

chkconfig

--level 35 php-fpm on

配置nginx支持php

vim

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

user www www;

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

index index.html index.htm index.php;

#第45行,添加index.php

#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;

}

#第65~71行,取消FastCGI

server部分location的注释,注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径

验证

cd

/usr/local/nginx/html/

#进入nginx默认网站根目录

vim

index.php

#新建index.php文件

phpinfo();

?>

chown -R

www:www /usr/local/nginx/html/

chmod -R

700 /usr/local/nginx/html/

/etc/init.d/nginx

restart

service

php-fpm start

在浏览器中打开服务器:,会看到下面的界面:

e4c0e8fff4abd789e5e08648d0f38cd0.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值