一、前言

1、环境说明

基础环境Linux+Nginx+MysqL+PHP

linux:7.2

Nginx:1.10.2

MysqL:5.6.17

PHP:5.5.12

2、部署说明

PHP安装目录:/usr/local/PHP

PHP.ini配置文件路径:/usr/local/PHP/etc/PHP.ini

Nginx安装目录:/usr/local/Nginx

Nginx配置文件路径:/etc/Nginx/Nginx.conf

Nginx网站根目录:/usr/local/Nginx/html


二、准备工作

1、最小化安装Centos7.2

#建立一个软件包目录存放
mkdir-p/usr/local/src/
#清理已经安装包
rpm-ehttpd
rpm-eMysqL
rpm-ePHP
yum-yremovehttpd
yum-yremoveMysqL
yum-yremovePHP
#搜索apache包
rpm-qahttP*
#强制卸载apache包
rpm-e--nodeps查询出来的文件名
#检查是否卸载干净
rpm-qa|grephttP*

selinux可能会致使编译安装失败,我们先禁用它。

永久禁用,需要重启生效

sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config

临时禁用,不需要重启

setenforce0

2、安装必备工具

yum-yinstallmakegccgcc-c++gcc-g77flexbisonfilelibtoollibtool-libsautoconfkernel-devellibjpeglibjpeg-devellibpnglibpng-devellibpng10libpng10-develgdgd-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglib2glib2-develbzip2bzip2-devellibeventlibevent-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-devellibidnlibidn-developensslopenssl-develgettextgettext-develncurses-develgmp-develpspell-develunziplibcaplsof


三、安装MysqL5.6.17

1、准备工作

按照标准需要给MysqL创建所属用户和用户组

#创建群组
groupaddMysqL
#创建一个用户,不允许登陆和不创主目录
useradd-s/sbin/nologin-gMysqL-MMysqL
#检查刚创建的用户
tail-1/etc/passwd

centos最小化安装后,会有MysqL的库因此先卸载!

#检查安装与否
rpm-qa|grepMysqL
#强制卸载
rpm-erpm-eMysqL-libs-5.1.73-3.el6_5.x86_64--nodeps

MysqL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。因此,我们首先要在系统中源码编译安装cmake工具。

wgethttp://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
tarzxvfcmake-2.8.12.2.tar.gz
cdcmake-2.8.12.2
./configure
make&&makeinstall

2、使用cmake来编译安装MysqL 5.6.17

wgethttp://dev.MysqL.com/get/Downloads/mysql-5.6/mysql-5.6.17.tar.gz
tarzxvfmysql-5.6.17.tar.gz
cdmysql-5.6.17
cmake\
-DCMAKE_INSTALL_PREFIX=/usr/local/MysqL\
-DMysqL_DATADIR=/usr/local/MysqL/data\
-DSYSconfdIR=/etc\
-DWITH_MYISAM_STORAGE_ENGINE=1\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_MEMORY_STORAGE_ENGINE=1\
-DWITH_READLINE=1\
-DMysqL_UNIX_ADDR=/var/lib/MysqL/MysqL.sock\
-DMysqL_TCP_PORT=3306\
-DENABLED_LOCAL_INFILE=1\
-DWITH_PARTITION_STORAGE_ENGINE=1\
-DEXTRA_CHARSETS=all\
-DDEFAULT_CHARSET=utf8\
-DDEFAULT_COLLATION=utf8_general_ci\
-DMysqL_USER=MysqL\
-DWITH_DEBUG=0\
-DWITH_SSL=system

make&&makeinstall

#修改/usr/local/MysqL权限
chmod+w/usr/local/MysqL
chown-RMysqL:MysqL/usr/local/MysqL

关于my.cnf配置文件:

在启动MysqL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索”$basedir/my.cnf”就是安装目录下/usr/local/MysqL/my.cnf,这是新版MysqL的配置文件的默认位置!注意:在最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字。如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MysqL的正确配置,造成无法启动。由于我们已经卸载了最小安装完成后的MysqL库所以,就没必要操作了。

cdsupport-files/
#如果还有my.cnf请备份
mv/etc/my.cnf/etc/my.cnf.bak
cpmy-default.cnf/etc/my.cnf
#执行初始化配置脚本,创建系统自带的数据库和表,注意配置文件的路径
/usr/local/MysqL/scripts/MysqL_install_db--defaults-file=/etc/my.cnf--basedir=/usr/local/MysqL--datadir=/usr/local/MysqL/data--user=MysqL
#拷贝MysqL安装目录下support-files服务脚本到init.d目录
cpsupport-files/MysqL.server/etc/init.d/MysqLd
#赋予权限、设置开机自启并启动
chmod+x/etc/init.d/MysqLd
chkconfigMysqLdon
serviceMysqLdstart
#或者
/etc/init.d/MysqLstart

MysqL5.6.x启动成功后,root默认没有密码,我们需要设置root密码。设置之前,我们需要先设置PATH,否则不能直接调用MysqL

#修改/etc/profile文件
vim/etc/profile
#在文件末尾添加
PATH=/usr/local/MysqL/bin:$PATH
exportPATH
#让配置立即生效
source/etc/profile
#登陆测试,默认是没有密码,直接回车就可进入
MysqL-uroot-p
#设置MysqL密码
/usr/local/MysqL/bin/MysqLadmin-uroot-ppassword'你的密码'
#登陆进命令行模式
MysqL-uroot-p
#查看用户
>selectuser,hostfromMysqL.user;
#删除不必要的用户
>dropuser""@localhost;
>dropuserroot@'::1';
#赋予账号远程访问的权限
>GRANTALLPRIVILEGESON*.*TO'root'@'127.0.0.1'IDENTIFIEDBY'你的密码';
>GRANTALLPRIVILEGESON*.*TO'root'@'localhost'IDENTIFIEDBY'你的密码';
#其它一些信息查询:
#检查MysqL版本
MysqL-uroot-p"密码"-e"selectversion();"

MysqL安装完毕!


四、安装PHP5.5.12

1、安装依赖关系

yuminstalllibmcryptlibmcrypt-develmcryptmhash

2、下载并编译安装PHP

wgethttp://mirrors.sohu.com/PHP/PHP-5.5.12.tar.gz
tarzxvfPHP-5.5.12.tar.gz
cdPHP-5.5.12
./configure--prefix=/usr/local/PHP--with-config-file-path=/usr/local/PHP/etc--enable-fpm--with-fpm-user=www--with-fpm-group=www--with-MysqL=MysqLnd--with-MysqLi=MysqLnd--with-pdo-MysqL=MysqLnd--with-iconv-dir--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir=/usr--enable-xml--disable-rpath--enable-magic-quotes--enable-safe-mode--enable-bcmath--enable-shmop--enable-sysvsem--enable-inline-optimization--with-curl--with-curlwrappers--enable-mbregex--enable-mbstring--with-mcrypt--enable-ftp--with-gd--enable-gd-native-ttf--with-openssl--with-mhash--enable-pcntl--enable-sockets--with-xmlrpc--enable-zip--enable-soap--without-pear--with-gettext--disable-fileinfo--enable-maintainer-zts
make&&makeinstall

下面的警告说明已自带不需启用或安装,可忽略:


继续:

#修改fpm配置PHP-fpm.conf.default文件名称
mv/usr/local/PHP/etc/PHP-fpm.conf.default/usr/local/PHP/etc/PHP-fpm.conf
#复制PHP.ini配置文件
cpPHP.ini-production/usr/local/PHP/etc/PHP.ini
#复制PHP-fpm启动脚本到init.d
cpsapi/fpm/init.d.PHP-fpm/etc/init.d/PHP-fpm
#赋予执行权限
chmod+x/etc/init.d/PHP-fpm
#添加为启动项
chkconfig--addPHP-fpm
#设置开机启动
chkconfigPHP-fpmon
#按照标准,给PHP-fpm创建一个指定的用户和组
#创建群组
groupaddwww
#创建一个用户,不允许登陆和不创主目录
useradd-s/sbin/nologin-gwww-Mwww
#立即启动PHP-fpm
/etc/init.d/PHP-fpmstart

PHP安装完毕!


五、安装Nginx1.10.2

1、准备工作

#添加用户与属组
groupadd-rNginx
useradd-s/sbin/nologin-gNginx-MNginx
#创建目录
mkdir-pv/var/tmp/Nginx/client/
#解压安装包
tarzxvfNginx-1.10.2.tar.gz

2、编译安装

./configure\
--prefix=/usr/local/Nginx\
--sbin-path=/usr/local/Nginx/bin/Nginx\
--conf-path=/usr/local/Nginx/conf/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

敲黑板:注意sbin、conf、pid、local的path要和后续的控制脚本保持一致!

make&&makeinstall

3、为Nginx提供SysV init脚本

cat/etc/init.d/Nginx

#!/bin/sh

#

# Nginx - this script starts and stops the Nginx daemin

# chkconfig: - 85 15

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

# proxy and IMAP/POP3 proxy server

# processname: Nginx

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

# pidfile: /run/Nginx/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/sbin/Nginx"

prog=$(basename $Nginx)

Nginx_CONF_FILE="/usr/local/Nginx/conf/Nginx.conf "

lockfile=/var/lock/Nginx.lock

start() {

[ -x $Nginx ] || exit 5

[ -f $Nginx_CONF_FILE ] || exit 6

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 -eq 0 ] && rm -f $lockfile

restart() {

configtest || return $?

stop

start

reload() {

echo -n $"Reloading $prog: "

killproc $Nginx -HUP

RETVAL=$?

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

restart|configtest)

reload)

rh_status_q || exit 7

force-reload)

force_reload

status)

rh_status

condrestart|try-restart)

*)

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

exit 2

esac

类似的脚本网上很多,注意config、pid、sbin的路径保持和编译一致即可。

chmod+x/etc/init.d/Nginx
chkconfig--addNginx
chkconfigNginxon
#然后就可以启动服务了
systemctlrestartNginx.service
#或
/etc/init.d/Nginxstart

Nginx安装完毕 ,下面开始整合Nginx与PHP


六、整合Nginx与PHP

1、编辑Nginx.conf,启用如下选项:

cd/usr/local/Nginx/conf/
catNginx.conf

location ~ \.PHP$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.PHP;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi_params;

}

2、编辑/etc/Nginx/fastcgi_params,将其内容更改为如下内容:

#mvfastcgi_paramsfastcgi_params.bak
#catfastcgi_params

fastcgi_param GATEWAY_INTERFACE CGI/1.1;

fastcgi_param SERVER_SOFTWARE Nginx;

fastcgi_param QUERY_STRING $query_string;

fastcgi_param REQUEST_METHOD $request_method;

fastcgi_param CONTENT_TYPE $content_type;

fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param REQUEST_URI $request_uri;

fastcgi_param DOCUMENT_URI $document_uri;

fastcgi_param DOCUMENT_ROOT $document_root;

fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param REMOTE_ADDR $remote_addr;

fastcgi_param REMOTE_PORT $remote_port;

fastcgi_param SERVER_ADDR $server_addr;

fastcgi_param SERVER_PORT $server_port;

fastcgi_param SERVER_NAME $server_name;

在所支持的主页面格式中添加PHP格式的主页,类似如下:

location/{

roothtml;

indexindex.PHPindex.htmlindex.htm;

}

#重新载入配置
#/etc/init.d/Nginxreload

3、在/usr/local/Nginx/html目录下新建index.PHP测试页面

cat>/usr/local/nignx/htmlindex.PHP<<EOF

<?php

PHPinfo();

?>

可通过浏览器 访问此测试页面,验证Nginx连接PHP配置是否成功。页面应该如下图

至此CenOS72下LNMP编译安装完毕!

CentOS7.2编译安装LNMP的更多相关文章

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

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

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

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

  3. iOS – 友好的NSDate格式

    我需要在我的应用程序中显示帖子的日期给用户,现在我用这种格式:“5月25日星期五”.如何格式化NSDate以阅读“2小时前”的内容?使其更加用户友好.解决方法NSDateFormatter不能做这样的事情;你将需要建立自己的规则.我想像:所以这是打印’x分钟前’或’x小时前’从日期起24小时,通常是一天.

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

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

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

  6. xcode7 – 谁在创建文件“/private/var/tmp/Untitled-*.uicatalog”?

    我正在调查为什么TeamCity构建代理程序用完了磁盘,并且在/private/var/tmp中找到了超过11,000个文件,它们都以Untitled-.uicatalog行命名.每个文件至少0.6MB.总磁盘占用空间约为4GB.这些文件可以追溯到几个月,所以他们能够重新启动.谁在创造他们?Xcode在编译至少有一个图像的xcassets目录时创建这些目录.我可以删除它们吗?

  7. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  8. ios – Client.ipa不包含文件

    从过去的几天开始,我就把这头发错了.当我尝试提交基于cordova的iOS应用程序时,我收到一个错误,即符号工具失败.这就是我在日志中的内容:以下是尝试提交到应用商店时所述错误的屏幕截图:请帮忙.解决方法我有同样的错误,因为应用程序包中错误地包含了几个静态库(libXXX.a).它们显示在主.App下的最终上传确认框(列出权利和证书)中.我的解决方案是从项目中删除对这些静态库的所有引用,在链接器标

  9. ios – 如何获得.ipa文件路径

    我的应用程序包含敏感数据,所以我想为.ipa文件生成哈希键,是否可以这样做?

  10. ios – 在设备上运行时Swift应用程序崩溃 – dyld:未加载库:@ rpath / libswiftCore.dylib

    我是ios/xcode世界的新手,并尝试在运行iOSv8.0.2的iphone5上测试一个简单的Swift应用程序.该应用程序在xcode(版本6.1(6A1052d))中成功构建,但当它尝试在iphone上运行时,它崩溃并出现以下错误:我已经尝试过大多数建议,这些建议帮助了遇到此错误的其他人,但却没有运气.使用其他团队成员的构建环境构建时,相同的应用程序工作正常.我比较了构建设置,发现它们是相同

随机推荐

  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架构–可能与问题有关!

返回
顶部