搭建环境:Centos 6.8,Nginx 1.9.14,MysqL 5.6.23,PHP 5.6.17

一、目的:LNMP如今已成为主流的web服务器搭建方案,公司内部的ECstore,discuz,计划用来替代nagios+check_mk监控平台的Zabbix。均基于LNMP。本次单机LNMP搭建为后续全面了解电商集群做准备,顺便记录搭建过程,作为以后搭建环境的参考。

二、LNMP安装环境准备:

关闭防火墙及selinux

serviceiptablesstop
chkconfigiptablesoff
setenforce0
vi/etc/sysconfig/selinux
SELINUX=disabled#enforcing改为disabled

依赖包安装

yum-yinstallgccgcc-c++autoconflibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglibcglibc-develglib2glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-devellibidnlibidn-developensslopenssl-developenldapopenldap-developenldap-clientsopenldap-serversmakelibtool*gittreebisonpcre-develperlgdgd-devel

安装libiconv(支持编码转换为函数)

tarxflibiconv-1.14.tar.gz
cdlibiconv-1.14/
./configure--prefix=/usr/local
make&&makeinstall

安装libmcrypt (加密算法扩展库,支持DES,3DES,RIJNDAEL,Twofish,IDEA,GOST,CAST-256,ARCFOUR,SERPENT,SAFER+等算法)

tarxflibmcrypt-2.5.8.tar.gz
cdlibmcrypt-2.5.8
./configure
make&&makeinstall
cdlibltdl/
./configure--enable-ltdl-install#加载动态库
make&&makeinstall

安装mhash(Mhash是基于离散数学原理的不可逆向的PHP加密方式扩展库,其在默认情况下不开启。 mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存)

tarxfmhash-0.9.9.9.tar.bz2
cdmhash-0.9.9.9
./configure
make&&makeinstall

安装mcript(mcrypt 是 PHP 里面重要的加密支持扩展库,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。)

cd/usr/local/src
tarzxvfmcrypt-2.6.8.tar.gz
cdmcrypt-2.6.8/
exportLD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH#暂时生效
./configure
make&&makeinstall

亦可以通过以下两种方法增加库文件

ln-s/usr/local/lib/libmcrypt.la/usr/lib/libmcrypt.la
ln-s/usr/local/lib/libmcrypt.so/usr/lib/libmcrypt.so
ln-s/usr/local/lib/libmcrypt.so.4/usr/lib/libmcrypt.so.4
ln-s/usr/local/lib/libmcrypt.so.4.4.8/usr/lib/libmcrypt.so.4.4.8
ln-s/usr/local/lib/libmhash.a/usr/lib/libmhash.a
ln-s/usr/local/lib/libmhash.la/usr/lib/libmhash.la
ln-s/usr/local/lib/libmhash.so/usr/lib/libmhash.so
ln-s/usr/local/lib/libmhash.so.2/usr/lib/libmhash.so.2
ln-s/usr/local/lib/libmhash.so.2.0.1/usr/lib/libmhash.so.2.0.1
ln-s/usr/local/bin/libmcrypt-config/usr/bin/libmcrypt-config
vim/etc/ld.so.conf
/usr/local/lib/
ldconfig

安装cmake (MysqL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具)

tarxfcmake-3.4.1.tar.gz
cdcmake-3.4.1
./bootstrap
make&&makeinstall

注:一起解压所有文件可采用:find /usr/local/src/*.tar.gz -exec tar xf {} \;

三、MysqL编译安装

新增MysqL用户

groupadd-rMysqL
useradd-r-gMysqLMysqL

新建MysqL所需目录

mkdir-p/usr/local/MysqL
mkdir-p/data/MysqLdb

编译安装

tarxfmysql-5.6.23.tar.gz
cdmysql-5.6.23
cmake-DCMAKE_INSTALL_PREFIX=/usr/local/MysqL-DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_ARCHIVE_STORAGE_ENGINE=1-DWITH_BLACKHOLE_STORAGE_ENGINE=1-DMysqL_DATADIR=/data/MysqLdb-DMysqL_TCP_PORT=3306-DENABLE_DOWNLOADS=1-DSYSconfdIR=/etc-DWITH_SSL=system-DWITH_ZLIB=system-DWITH_LIBWRAP=0
make&&makeinstall

修改MysqL目录权限

cd/usr/local/MysqL
chown-RMysqL:MysqL.
cd/data/MysqLdb
chown-RMysqL:MysqL.

初始化MysqL数据库

cd/usr/local/MysqL
./scripts/MysqL_install_db--user=MysqL--datadir=/data/MysqLdb

编译修改/etc/my.cnf

[MysqL]

#CLIENT#
port=3306
socket=/data/MysqLdb/MysqL.sock

[MysqLd]

#GENERAL#
user=MysqL
default-storage-engine=InnoDB
socket=/data/MysqLdb/MysqL.sock
pid-file=/data/MysqLdb/MysqL.pid

#MyISAM#
key-buffer-size=32M
myisam-recover=FORCE,BACKUP

#SAFETY#
max-allowed-packet=16M
max-connect-errors=1000000

#DATASTORAGE#
datadir=/data/MysqLdb/

#BINARYLOGGING#
log-bin=/data/MysqLdb/MysqL-bin
expire-logs-days=14
sync-binlog=1

#REPLICATION#
skip-slave-start=1
relay-log=/data/MysqLdb/relay-bin
slave-net-timeout=60

#CACHESANDLIMITS#
tmp-table-size=32M
max-heap-table-size=32M
query-cache-type=0
query-cache-size=0
max-connections=500
thread-cache-size=50
open-files-limit=65535
table-deFinition-cache=4096
table-open-cache=4096

#INNODB#
innodb-flush-method=O_DIRECT
innodb-log-files-in-group=2
innodb-log-file-size=64M
innodb-flush-log-at-trx-commit=1
innodb-file-per-table=1
innodb-buffer-pool-size=592M

#LOGGING#
log-error=/data/MysqLdb/MysqL-error.log
log-queries-not-using-indexes=1
slow-query-log=1
slow-query-log-file=/data/MysqLdb/MysqL-slow.log

复制MysqL启动文件及其命令加入PATH

cpsupport-files/MysqL.server/etc/init.d/MysqLd
vim/etc/profile.d/MysqL.sh
PATH=/usr/local/MysqL/bin:/usr/local/MysqL/lib:$PATH
exportPATH
source/etc/profile.d/MysqL.sh

启动MysqL并增加启动项

serviceMysqLdstart
chkconfigMysqLdon

设置MysqL登录权限

dropuser''@localhost;
dropuser''@hostname;
updateMysqL.usersetpassword=password('*******');
flushprivileges;

四、Nginx编译安装

新增Nginx用户

groupadd-rNginx
useradd-gNginx-rNginx

创建所需要目录

mkdir-pv/var/tmp/Nginx/client

编译安装Nginx

tarxfNginx-1.9.14.tar.gz
cdNginx-1.9.14
./configure--prefix=/usr/local/Nginx--sbin-path=/usr/local/Nginx/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/Nginx.pid--lock-path=/var/lock/Nginx.lock--user=Nginx--group=Nginx--with-http_ssl_module--with-http_flv_module--with-http_stub_status_module--with-http_gzip_static_module--http-client-body-temp-path=/var/tmp/Nginx/client/--http-proxy-temp-path=/var/tmp/Nginx/proxy/--http-fastcgi-temp-path=/var/tmp/Nginx/fcgi/--http-uwsgi-temp-path=/var/tmp/Nginx/uwsgi--http-scgi-temp-path=/var/tmp/Nginx/scgi--with-pcre
make&&makeinstall

编辑启动脚本

vim/etc/rc.d/init.d/Nginx

#!/bin/sh
#
#Nginx-thisscriptstartsandstopstheNginxdaemon
#
#chkconfig:-8515
#description:NginxisanHTTP(S)server,HTTP(S)reverse\
#proxyandIMAP/POP3proxyserver
#processname:Nginx
#config:/etc/Nginx/Nginx.conf
#config:/etc/sysconfig/Nginx
#pidfile:/var/run/Nginx.pid

#Sourcefunctionlibrary.
./etc/rc.d/init.d/functions

#Sourcenetworkingconfiguration.
./etc/sysconfig/network

#Checkthatnetworkingisup.
["$NETWORKING"="no"]&&exit0

Nginx="/usr/local/Nginx/sbin/Nginx"
prog=$(basename$Nginx)

Nginx_CONF_FILE="/etc/Nginx/Nginx.conf"

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

lockfile=/var/lock/subsys/Nginx

make_dirs(){
#makerequireddirectories
user=`Nginx-V2>&1|grep"configurearguments:"|sed's/[^*]*--user=\([^]*\).*/\1/g'-`
options=`$Nginx-V2>&1|grep'configurearguments:'`
foroptin$options;do
if[`echo$opt|grep'.*-temp-path'`];then
value=`echo$opt|cut-d"="-f2`
if[!-d"$value"];then
#echo"creating"$value
mkdir-p$value&&chown-R$user$value
fi
fi
done
}

start(){
[-x$Nginx]||exit5
[-f$Nginx_CONF_FILE]||exit6
make_dirs
echo-n$"Starting$prog:"
daemon$Nginx-c$Nginx_CONF_FILE
retval=$?
echo
[$retval-eq0]&&touch$lockfile
return$retval
}

stop(){
echo-n$"Stopping$prog:"
killproc$prog-QUIT
retval=$?
echo
[$retval-eq0]&&rm-f$lockfile
return$retval
}

restart(){
configtest||return$?
stop
sleep1
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/null2>&1
}

case"$1"in
start)
rh_status_q&&exit0
$1
;;
stop)
rh_status_q||exit0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q||exit7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q||exit0
;;
*)
echo$"Usage:$0{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit2
esac

设置开机启动并启动服务

chmod+x/etc/rc.d/init.d/Nginx
chkconfig--addNginx
chkconfigNginxon
serviceNginxstart

五、PHP编译安装

解决PHP安装的库依赖关系

cp-frp/usr/lib64/libldaP*/usr/lib/
echo/usr/local/MysqL/lib>>/etc/ld.so.conf.d/MysqL-x86_64.conf
ldconfig-v

编译安装PHP

tarxfPHP-5.6.17.tar.gz
cdPHP-5.6.17
./configure--prefix=/usr/local/PHP--with-MysqL=/usr/local/MysqL--with-MysqLi=/usr/local/MysqL/bin/MysqL_config--with-iconv-dir=/usr/local--with-openssl--enable-mbstring--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir=/usr--enable-xml--disable-rpath--enable-bcmath--enable-shmop--enable-sysvsem--enable-inline-optimization--enable-mbregex--enable-mbstring--with-gd--enable-gd-native-ttf--with-mhash--enable-pcntl--enable-sockets--with-mcrypt--with-ldap--with-ldap-sasl--with-xmlrpc--enable-zip--enable-soap--with-bz2--with-config-file-path=/etc--enable-fpm--with-config-file-scan-dir=/etc/PHP.d--enable-maintainer-zts
makeZEND_EXTRA_LIBS='-liconv'
makeinstall

复制PHP配置文件

cpPHP.ini-production/etc/PHP.ini

复制PHP-fpm配置文件

cp/usr/local/PHP/etc/PHP-fpm.conf.default/usr/local/PHP/etc/PHP-fpm.conf

设置PHP-fpm启动脚本并开机启动

cpsapi/fpm/init.d.PHP-fpm/etc/rc.d/init.d/PHP-fpm
chmod+x/etc/rc.d/init.d/PHP-fpm
chkconfig--addPHP-fpm
chkconfigPHP-fpmon
servicePHP-fpmstart

六、web功能基本实现

Nginx,PHP功能整合

vim/etc/Nginx/Nginx.conf
#location~\.PHP${
#roothtml;
#fastcgi_pass127.0.0.1:9000;
#fastcgi_indexindex.PHP;
#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
#includefastcgi_params;
#}
#修改为
location~\.PHP${
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.PHP;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
includefastcgi_params;
}

增加LNMP测试页面

vim/usr/local/Nginx/html/test.PHP
<?PHP
$link=MysqL_connect('127.0.0.1','root','you_passwd');
if($link)
echo"It'sOK,Frank";
else
echo"Failed,Frank";
MysqL_close;
PHPinfo();
?>

Nginx重载

serviceNginxreload

访问http://ip/test.php,LNMP测试成功。

wKioL1dx2wWSYR_hAACjZ2PngIk856.png-wh_50

七、后记

从去年底开始,LAMP,LNMP断断续续搭建过多次,搭建时磕磕碰碰,完成后就会忘记,估计是基础不牢的原因。虽然本次搭建中间也有些许不顺,但决定写博文之后,还是有点小压力,前前后后验证了两遍,还是可以保证可行性的。本次Nginx,PHP的配置优化及插件均未涉及,后续博文中将陆续补上。

Centos 6 编译安装LNMP的更多相关文章

  1. ios中的.dylib和.a lib有什么区别?

    我知道Objectivec中的编译和运行时是什么,但是我想知道是什么画了这两个库之间的界限?他们的目的是什么,除了陈述一个是静态的而另一个是动态的?我们何时需要一个而不是另一个?

  2. xamarin.ios – ShareKit与MonoTouch如何?

    有人可以验证ShareKit实际上是否可用于MonoTouch并指导我完成使其工作所需的步骤?解决方法您首先从getsharekit.com下载还是使用ShareKit2.0?

  3. ios – 使用Swift的Lumberjack 2.0记录器

    我以前使用物镜C的Lumberjack记录器,我喜欢它.现在我开始学习Swift,我不能在那里使用我最喜欢的记录器.有人可以一步一步地写出我能做到的事吗?在Lumberjack2.0发布之前,我尝试在这里找到一些东西,但所有主题都是自定义包装器.我做了什么:>我用Cocoapods添加了Lumberjack;>我将“#import”添加到Bridging-Header文件中.我不知道接下来该怎么办?因为在ObjC中我有宏:staticconstintddLogLevel=LOG_LEVEL_INFO;el

  4. ios – 200在xcode 7中生成DSMM警告

    解决方法我有同样的问题.Facebook表示他们已经意识到这一点并且不是高优先级,因为它不会影响应用程序.我回退到4.7.1警告问题不再存在.我不认为它会被拒绝但不能确定.

  5. ios – iPhone崩溃日志不能正确地符号化并且是双重间隔的

    任何建议超过欢迎.谢谢.解决方法当这件事发生在我身上时,它只是我通过电子邮件收到的日志.如果我记得,至少有一些是在.msg文件中,我不得不把它们拿出来.它可能是Exchange编码更改.如果你显示不可见的字符,你可能会看到每个字符之间的东西.您可以找到并替换它们以删除它们或更改编辑器中的编码.

  6. xamarin.ios – Facebook iOS SDK:应用程序在启动时找不到“找不到符号:_ACFacebookAppIdKey.”仅在iOS 5中崩溃

    解决方法这是一个已修复的knownbug.目前唯一已知的解决方法是使用较旧版本的FacebookSDK.

  7. ios – Xcode 7 beta 2:LaunchScreen.storyboard无法打开文档

    我在两个不同的Mac(iMac和MacBookpro)上收到这个错误.不知道为什么人们不能再现它,但我需要一些帮助.在运行XX优胜美地10.10.4的Mac上运行Xcode7beta2(15六月’15).甚至无法编译和运行我的项目..我从创建菜单创建了一个视图应用程序项目,就是这样.编辑:我试图删除并重新添加storyboard文件(也可以打开Main.storyboard插件),我仍然得到相同的

  8. osx – 无法创建目录/ var / teamsserver

    OpenSSH_6.2p2,OSSLShim0.9.8r8Dec2011debug1:Readingconfigurationdata/etc/ssh_configdebug1:/etc/ssh_configline20:Applyingoptionsfor*debug1:Connectingto1.2.3.4[1.2.3.4]portPORT.debug1:Connectionestablished.Couldnotcreatedirectory‘/var/teamsserver/.ssh’.debug

  9. ios – 如何在Xcode 4.5中完成代码签名

    解决方法事实证明,从AppStore升级XCode并不会自动升级所有内容.转到首选项/下载,并确保安装最新的命令行工具.

  10. ios – 为具有多个目标和不同平台的项目编写Podfile

    如何让CocoaPods成功整合到我的项目和iOS/Mac目标?我已经阅读了Podfile文档,但发现它在这方面缺乏.解决方法得到它了!从我的每个目标和运行的pod安装中删除libPods-xxxx.a文件,再次执行了我的目标集成.

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部