Nginx 特性

Nginx 性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。
1、相比 Apache,用 Nginx 作为 Web 服务器:使用资源更少,支持更多并发连接,效率更高。
2、作为负载均衡服务器:Nginx 既可在内部直接支持 Rails 和 PHP,也可支持作为 HTTP 代理服务器对外进行服务。Nginx 用 C 编写而成, 不论是系统资源开销还是 cpu 使用效率都比 Perlbal 要好的多。
3、作为邮件代理服务器:Nginx 同时也是一款非常优秀的邮件代理服务器(最早开发这个产品的目的之一,是作为邮件代理服务器)。

4、反向代理可以根据url将请求转向于不同用途的集群,比如图片请求,转向图片服务器集群;视频请求,转身视频服务器集群。

Nginx是一款轻量级的web服务器/反向代理服务器/电子邮件代理服务器,安装非常简单,配置文件也很简洁(还支持 perl 语法)。Nginx 支持平滑加载新配置,还能够在不间断服务的情况下进行软件版本升级。


Apache 特性
1、Apache 是 LAMP 架构最核心的 Web Server,开源、稳定、模块丰富是 Apache 的优势。但 Apache 的缺点是有些臃肿,内存和 cpu 开销大,性能上有损耗,不如一些轻量级的 Web 服务器(譬如:Nginx、Tengine等)高效,轻量级的 Web 服务器对于静态文件的响应能力来说远高于 Apache 服务器。

2、Apache 做为 Web Server 是负载 PHP 的最佳选择,如果流量很大的话,可以采用 Nginx 来负载非 PHP 的 Web 请求。Nginx 是一个高性能的 HTTP 和反向代理服务器,Nginx 以其稳定、丰富功能集、示例配置文件和低系统资源的消耗而闻名。Nginx 现能支持 PHP 和 FastCGI,也支持负载均衡和容错,可和 Apache 配合使用,是轻量级的 HTTP 服务器的首选。

3、Web 服务器缓存也有多种方案,Apache 提供了自己的缓存模块,也可以使用外加的 Squid 模块进行缓存,这两种方式均可有效提高 Apache 的访问响应能力。Squid Cache 是一个 Web 缓存服务器,支持高效缓存,可作为网页服务器的前置 cache 服务器缓存相关请求以提高 Web 服务器速度。把 Squid 放在 Apache 的前端来缓存 Web 服务器生成动态内容,而 Web 应用程序只需要适当地设置页面实效时间即可。如访问量巨大,则可考虑使用 memcache 作为分布式缓存。

4、PHP 的加速可使用 eAccelerator 加速器,eAccelerator 是一个自由开放源码的 PHP 加速器。它会优化动态内容缓存,提高 PHP 脚本缓存性能,使 PHP 脚本在编译状态下,对服务器的开销几乎完全消除。它还可对脚本起优化作用,以加快其执行效率。 使 PHP 程序代码执效率可提高 1-10 倍。

##以上资料来源:https://www.zhihu.com/question/19697826



wKiom1j0ybKxq_Z1AACRfUwYlUg502.png-wh_50



Nginx优点:

  • 轻量级服务器,相比较apache占用的资源更加少。

  • 高并发。

  • 配置文件的语法等简单易懂

  • 社区活跃。

  • 支持epoll模型。使得Nginx可以支持高并发。

  • 利用Nginx可以对ip限速,可以限制连接数


环境:

centos 6.8 2.6.32-642.15.1.el6.x86_64


软件:

libiconv-1.14.tar.gz

libmcrypt-2.5.8.tar.gz

mcrypt-2.6.8.tar.gz

mhash-0.9.9.9.tar.gz

mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz(二进制版)

PHP-5.6.30.tar.gz

Nginx-1.12.0.tar.gz


提示:在进入正题之前一定要先去了解下Nginx的工作原理和常用场景。

不要死记,多操作,多理解,自然就懂了。

看别人操作,不如自己操作。

要能清晰的了解同类产品的区别。


大纲:

  1. 安装Nginx

  2. 启动Nginx

  3. 配置虚拟主机

  4. 安装MysqL二进制版

  5. 安装PHP

  6. 测试lnmp环境


Nginx

1、安装Nginx

wgethttp://Nginx.org/download/Nginx-1.12.0.tar.gz

tarzxvfNginx-1.12.0.tar.gz

cdNginx-1.12.0/

yuminstallgccgcc-c++zilb.x86_64zlib-devel.x86_64pcre-devel.x86_64pcre.x86_64
openssl.x86_64openssl-devel.x86_64-y

useradd-M-s/sbin/nologinNginx

./configure--help

./configure--prefix=/application/Nginx1.12.0--user=Nginx--group=Nginx--with-pcre
--with-http_ssl_module--with-http_stub_status_module

echo$?

make

echo$?

makeinstall

echo$?

ln-s/application/Nginx1.12.0//application/Nginx

cd/application/Nginx
Nginx目录结构
conf 配置文件
html 默认站点
logs

日志文件

sbin 命令



总结:

1 选择软件一定不能选择最新的,否则出问题不容易解决,因为第一个吃螃蟹。
2 一定要自己创建用户,否则Nginx会给默认用户。
3 编译的参数根据自己的实际情况出发。
4 编译、make、make install要养成echo $?的习惯防止出错。
5 做一个软链接优化路径。



2、启动Nginx

/application/Nginx/sbin/Nginx-t

/application/Nginx/sbin/Nginx

lsof-i:80

curllocalhost

总结:

  • Nginx的检查语法操作是一样的,只是命令名字换了

  • Nginx启动后面不需要任何参数

  • 本地做个访问测试如果能成功则说明网站已经在工作了,在如果外网访问不进来就是其他问题了,比如防火墙iptables、selinux等的问题


3、配置虚拟主机

如果熟悉了Apache的虚拟主机那么Nginx的虚拟主机也很容易理解,而且配置还比Apache简单很多。

虚拟主机:

  • 基于域名的虚拟主机

  • 基于IP的虚拟主机

  • 基于端口的虚拟主机


mkdir/application/Nginx/conf/extra-p
##把我们的虚拟主机文件放在这个扩展目录中,可以在管理网站的时候更加方便

vim/application/Nginx/conf/Nginx.conf
##将主配置文件修改为以下内容
worker_processes1;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication/octet-stream;
sendfileon;
keepalive_timeout65;
includeextra/blog.conf;
includeextra/easy.conf;
includeextra/bad.conf;
}


vim/application/Nginx/conf/extra/blog.conf
##将虚拟主机blog配置文件配置为以下内容,不存在则创建
server{
listen80;
server_namewww.blog.vperson.org.cn;
location/{
roothtml/blog;
indexindex.htmlindex.htm;
	}
}

vim/application/Nginx/conf/extra/easy.conf
##将虚拟主机easy配置为以下内容,不存在则创建
server{
listen80;
server_namewww.easy.vperson.org.cn;
location/{
roothtml/easy;
indexindex.htmlindex.htm;
}
}

vim/application/Nginx/conf/extra/bad.conf
##将虚拟主机bad配置文件修改为以下内容,不存在则创建
server{
listen80;
server_namewww.bad.vperson.org.cn;
location/{
roothtml/bad;
indexindex.htmlindex.htm;
}
}

cd/application/Nginx/html/

fornameinblogbadeasy;domkdir$name;echo"$name.vperson.org.cn">
$name/index.html;
done
##利用for循环创建目录,并向index.html中写入内容

tree./
bad
│└──index.html
├──blog
│└──index.html
├──easy
│└──index.html


vim/etc/hosts
127.0.0.1localhostwww.blog.vperson.org.cnwww.easy.vperson.org.cn##修改本地hosts文件,为了配合我们的基于域名的虚拟主机

ping-c1

ping-c1

ping-c1www.bad.vperson.org.cn

/application/Nginx/sbin/Nginx-sreload
##重启Nginx服务器

curl
blog.vperson.org.cn

curl
bad.vperson.org.cn

curl
easy.vperson.org.cn

提示:使用curl访问域名时返回如上信息即基于域名的虚拟主机搭建成功。


扩展:

* 域名重定向

  • 为什么需要域名重定向,第一是为了防止恶意绑定,最简单的道理就是,域名是别人买的,别人想把域名指向公网中的任意一台主机我们也没有办法。但是用了域名重定向后,可以在使用恶意域名访问我们的服务器后,会在地址栏重定向为我们指定的域名,并访问指定的站点。(理解一个原理,在一个未知域名访问我们的主机时其实是以IP的形式访问,也就是说我们重定向的其实是IP地址)

  • 还有就是多域名指向同意服务器,提高访问量。

------------------------------------------------------------------
vim/application/Nginx/conf/extra/rewrite.conf
##编译rewirte.conf文件不存在则创建,内容如下
server{
listen80;
server_namewww.rewrite.vperson.org;
rewrite^/(.*)http://www.easy.vperson.org.cn/$1permanent;
#^/表示
#
#永久有效
}
----OK------------------------------------------------------------

------------------------------------------------------------------
vim/application/Nginx/conf/Nginx.conf
##修改Nginx的主配置文件,注意include的顺序这个很重要否则域名重定向就没用了
worker_processes1;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication/octet-stream;
sendfileon;
keepalive_timeout65;
includeextra/rewrite.conf;
includeextra/blog.conf;
includeextra/easy.conf;
includeextra/bad.conf;
}
----OK------------------------------------------------------------

/application/Nginx/sbin/Nginx-t

/application/Nginx/sbin/Nginx-sreload

vim/etc/hosts
127.0.0.1localhostwww.blog.vperson.org.cnwww.easy.vperson.org.cn
www.rewrite.vperson.org

ping-c1

curl-Lwww.rewrite.vperson.org

curl-Iwww.rewrite.vperson.org
HTTP/1.1301MovedPermanently
Server:Nginx/1.12.0
Date:Sun,16Apr201714:19:58GMT
Content-Type:text/html
Content-Length:185
Connection:keep-alive
Location:http://www.easy.vperson.org.cn/

隐藏Nginx版本号:

vim/application/Nginx/conf/Nginx.conf
##修改为以下内容
worker_processes1;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication/octet-stream;
sendfileon;
keepalive_timeout65;
server{
listen8080;
server_namewww.vperson.win;
rewrite^/(.*)http://www.blog.vperson.org.cn/$1permanent;
}
includeextra/easy.conf;
includeextra/bad.conf;
includeextra/blog.conf;
server_tokensoff;
}

apache隐藏版本号的方法:

----------------------------

cat/application/apache/conf/extra/httpd-default.conf
.............
ServerTokensprod
ServerSignatureOff
.............

-----------------------


Nginx日志管理

  • 使用mv工具和crontab工具

具体方法如下:

----------------------------------------------------------------------------
vimNginx.conf
worker_processes1;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication/octet-stream;
sendfileon;
keepalive_timeout65;
log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent""$http_x_forwarded_for"';
includeextra/rewrite.conf;
includeextra/bad.conf;
includeextra/blog.conf;
includeextra/easy.conf;
server_tokensoff;
}

vimextra/blog.conf
server{
listen80;
server_namewww.blog.vperson.org.cn;
access_loglogs/blog.access.logmain;
location/{
roothtml/blog;
indexindex.htmlindex.htm;
}
}
##其他的配置文件也一样在server标签里添加日志信息
----OK------------------------------------------------------------

#sed-i'/server_namewww.bad.vperson.org.cn;/a\\taccess_loglogs\/bad.access.log
main;'extra/bad.conf

../sbin/Nginx-t

../sbin/Nginx-sreload

ll../logs/
total220
-rw-r--r--1rootroot110155Apr1715:42access.log
-rw-r--r--1rootroot0Apr1715:42bad.access.log
-rw-r--r--1rootroot0Apr1715:42blog.access.log
-rw-r--r--1rootroot0Apr1715:42easy.access.log
-rw-r--r--1rootroot98802Apr1715:43error.log
-rw-r--r--1rootroot6Apr1622:29Nginx.pid
-rw-r--r--1rootroot0Apr1715:42rewrite.access.log
##可见日志文件已经生成

---------------------------------------------------------------------------------
vim/application/Nginx/logs/backlog.sh
##写一个自动备份的脚本
#!/bin/sh

fornameinrewritebadblogeasy;
do
/bin/mv/application/Nginx/logs/${name}.access.log/applog/Nginx/access/$(date+%F)_${name}.log
if[$?-eq0]
then
echo"$(date+%F)${name}">>/applog/Nginx/access/successfully.txt
else
echo"$(date+%F)${name}">>/applog/Nginx/access/error.txt
fi
done

/bin/find/applog/Nginx/access/-mtime+7-execrm-rf{}\;

---脚本完成------OK------------------------------------------------------------

chmod+x/application/Nginx/logs/backlog.sh

crontab-e
301***/application/Nginx/logs/backlog.sh
##晚上访问量少,适合做备份等工作

mkdir-p/applog/Nginx/access/

总结:

  • 基于域名的虚拟主机普遍常用到,基于IP和端口的一般在公司内部使用

  • 在修改配置文件之前一定要做好备份,一边修改和对比

  • 创建扩张目录,存放虚拟主机的配置,因为在企业里由于需要配合大量的业务,所以配置内容也会随之增加,如果全部都是在Nginx.conf里的话会使得整个文件非常的臃肿。

  • apache的重启:./bin/apachectl restart

  • Nginx的配置文件每句结尾一定要加上;(分号)

  • windows修改hosts的路径:win+R--> system32--> drivers --> etc-->hosts。如果记事本不能修改,请先以管理员运行记事本,在把hosts文件拖入。推荐使用Notepad++。

  • Apache服务器在站点目录下没有index.html时,可以访问并查看整个网站的目录结构,可以通过修改httpd.conf中的“Options Indexes FollowSymLinks”---> "Options -Indexes FollowSymLinks"。Nginx安全新则相对高点,如果没有index.html文件直接报错一般是403.

  • Apache服务器的默认站点目录是DocumentRoot。Nginx是root html。

  • 服务器一定要隐藏版本号,否则容易被攻击。



++++++++++++++++++++++Nginx服务安装完成++++++++++++++++++++++++


MysqL


4、安装二进制MysqL

MysqL分类:

社区版

商业版

集群

wgethttp://dev.MysqL.com/get/Downloads/MysqL-5.5/MysqL-5.5.32-linux2.6-x86_64.tar.gz


tarzxvfMysqL-5.5.32-linux2.6-x86_64.tar.gz

cp-avrMysqL-5.5.32-linux2.6-x86_64//application/

cd/application/

mvMysqL-5.5.32-linux2.6-x86_64/MysqL-5.5.32/

ln-sMysqL-5.5.32/MysqL

useradd-M-s/sbin/nologinMysqL

cdMysqL

mkdir/application/MysqL/data-p

chown-RMysqL:MysqL/application/MysqL-5.5.32/

-----------------------------------------------------------------
./scripts/MysqL_install_db--basedir=/application/MysqL/
--datadir=/application/MysqL/data/--user=MysqL

##初始化数据库
MysqL_install_db根据版本的不同可能存放的路径也不一样
--basedir是MysqL的安装路缙
--datadir是数据文件存放路径
--user是用户名
成功的标准是echo$?没有错误+两个OK没有error
TostartMysqLdatboottimeyouhavetocopy
support-files/MysqL.servertotherightplaceforyoursystem
##想要开机自动启动,就把MysqL.server放到正确的位置即/etc/init.d/MysqLd
/application/MysqL//bin/MysqLadmin-urootpassword'new-password'
/application/MysqL//bin/MysqLadmin-uroot-hvpersonpassword'new-password'
Alternativelyyoucanrun:
/application/MysqL//bin/MysqL_secure_installation
##设置密码的方法
YoucanstarttheMysqLdaemonwith:
cd/application/MysqL/;/application/MysqL//bin/MysqLd_safe&
##运行数据库
YoucantesttheMysqLdaemonwithMysqL-test-run.pl
cd/application/MysqL//MysqL-test;perlMysqL-test-run.pl
##测试数据库

提示:/etc/init.d/MysqLd实质是复制了MysqL.server文件,所以一定不要和cd/application/MysqL/
;/application/MysqL//bin/MysqLd_safe&方法一起用否则会出错

---------------------------------------------------------------

\cpsupport-files/my-medium.cnf/etc/my.cnf

\cpsupport-files/MysqL.server/etc/init.d/MysqLd

--------------------------------------
vim/etc/init.d/MysqLd
..................
basedir=/application/MysqL/
datadir=/application/MysqL/data
...................

或者

#sed-i'46s/\(basedir=\)/\1\/application\/MysqL/p'/etc/init.d/MysqLd
##修改46行为basedir=/application/MysqL,只限定当前环境,其他环境可能有变化

#sed-i'47s/\(datadir=\)/\1\/application\/MysqL\/data/p'/etc/init.d/MysqLd
##修改datadir为/application/mysq/data

----OK---------------------------------

chmod+x/etc/init.d/MysqLd

/etc/init.d/MysqLdstart

echo"exportPATH=/application/MysqL/bin:$PATH">>/etc/profile

source/etc/profile

----------------------------------------------------
MysqL_secure_installation
##以下内容看自己的需求

MysqL-uroot-p

MysqL>showdatabases;

MysqL>useMysqL

MysqL>showtables;

MysqL>selectUser,Hostfromuser;

MysqL>DELETEFROMuserWHEREUser='root'andHost='::1';
##目前是不会用的到的所以删除,如果有需求就不用删除

MysqL>quit

--OK--------------------------------------------------

总结:

a)针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b)根据不同的软件平台环境调整相关的编译参数;
c)针对我们特定应用场景选择需要什么组件不需要什么组件;
d)根据我们的所需要存储的数据内容选择只安装我们需要的字符集;
e)同一台主机上面可以安装多个MysqL;
f)等等其他一些可以根据特定应用场景所作的各种调整。
在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a)对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b)对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c)还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的
时间更长;


PHP


需要下载以下的依赖包,并且编译:

libiconv(libiconv-1.14.tar.gz)

libmcrypt-2.5.8.tar.gz,加密库

mcrypt-2.6.8.tar.gz

mhash-0.9.9.9.tar.gz


5、安装PHP

wget

tarzxvfPHP-5.6.30.tar.gz

cdPHP-5.6.30/

yuminstalllibxml2-devel.x86_64libxml2.x86_64openssl-devel.x86_64
libcurl-devel.x86_64libjpeg-turbo.x86_64libjpeg-turbo-devel.x86_64
png*libpng-devel.x86_64freetype.x86_64freetype-devel.x86_64
libxslt-devel.x86_64libxslt.x86_64zliblibxmllibjpegfreetypelibpnggd
curllibiconvzlib-devellibxml2-devellibjpeg-develfreetype-devel
libpng-develgd-develcurl-devel-y

编译安装libiconv1.14:
==============================================
tarzxvflibiconv-1.14.tar.gz

cdlibiconv-1.14/

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

make

makeinstall
===============================================

编译安装mhash-0.9.9.9:
=================================================
tarzxvfmhash-0.9.9.9.tar.gz

cdmhash-0.9.9.9/

./configure

make&&makeinstall

================================================

编译安装libmcrypt
==================================================
tarzxvflibmcrypt-2.5.8.tar.gz

cdlibmcrypt-2.5.8/

./configure

make&&makeinstall

cp/usr/local/lib/*/usr/local/lib64/-av
##只正对64位操作系统,32为操作系统直接往下走

ln-s/usr/local/lib64/libmcrypt.la/usr/lib64/libmcrypt.la
ln-s/usr/local/lib64/libmcrypt.so/usr/lib64/libmcrypt.so
ln-s/usr/local/lib64/libmcrypt.so.4/usr/lib64/libmcrypt.so.4
ln-s/usr/local/lib64/libmcrypt.so.4.4.8/usr/lib64/libmcrypt.so.4.4.8
ln-s/usr/local/lib64/libmhash.a/usr/lib64/libmhash.a
ln-s/usr/local/lib64/libmhash.la/usr/lib64/libmhash.la
ln-s/usr/local/lib64/libmhash.so/usr/lib64/libmhash.so
ln-s/usr/local/lib64/libmhash.so.2/usr/lib64/libmhash.so.2
ln-s/usr/local/lib64/libmhash.so.2.0.1/usr/lib64/libmhash.so.2.0.1
ln-s/usr/local/bin/libmcrypt-config/usr/bin/libmcrypt-config
##提示我搭好的环境中我并没有在/usr/local/lib64/下找到文件,文件都在/usr/local/lib,
可以把/usr/local/lib/下的文件复制到/usr/local/lib64/下
=================================================

yuminstalllibxslt*-y
##安装libxslt*

编译安装mcrypt-2.6.8:
================================================
tarzxvfmcrypt-2.6.8.tar.gz

cdmcrypt-2.6.8/

./configureLD_LIBRAPY_PATH=/usr/local/lib
##原因未知,这个我是百度搜出来的

make&&makeinstall
================================================

=================================================
vim1.txt
./configure\
--prefix=/application/PHP5.6.30\
--with-MysqL=/application/MysqL\
--enable-MysqLnd	\
--with-pdo-MysqL=MysqLnd		\
--with-iconv-dir=/usr/local/libiconv\
--with-freetype-dir\
--with-jpeg-dir\
--with-png-dir\
--with-zlib\
--with-libxml-dir=/usr\
--enable-xml\
--disable-rpath\
--enable-safe-mode\
--enable-bcmath\
--enable-shmop\
--enable-sysvsem\
--enable-inline-optimization\
--with-curl\
--with-curlwrappers\
--enable-mbregex\
--enable-fpm\
--enable-mbstring\
--with-mcrypt\
--with-gd\
--enable-gd-native-ttf\
--with-openssl\
--with-mhash\
--enable-pcntl\
--enable-sockets\
--with-xmlrpc\
--enable-zip\
--enable-soap\
--enable-short-tags\
--enable-zend-multibyte\
--enable-static\
--with-xsl\
--with-fpm-user=Nginx\
--with-fpm-group=Nginx\
--enable-ftp	\
--enable-embedded-MysqLi	\
--with-MysqLi	\
--with-pdo-MysqL=/application/MysqL
		

cat1.txt|bash

echo$?

make

echo$?

makeinstall

echo$?

ln-s/application/PHP5.6.30//application/PHP

cpPHP.ini-production/application/PHP/lib/PHP.ini
##提醒:如果是做开发的话就把PHP.ini-development复制过去

由于Nginx调用PHP是通过一个fcgi的程序,所以,这个程序也是有配置文件的。

cd/application/PHP/etc/

cpPHP-fpm.conf.defaultPHP-fpm.conf

egrep-v"^$|;"PHP-fpm.conf
------------------------------------------------------------------------
[global]
pid=/app/logs/PHP-fpm.pid
error_log=/app/logs/PHP-fpm.log
log_level=error

rlimit_files=32768

events.mechanism=epoll
[www]
user=Nginx
group=Nginx
listen=127.0.0.1:9000
listen.owner=Nginx
listen.group=Nginx

pm=dynamic
pm.max_children=1024
pm.start_servers=16
pm.min_spare_servers=5
pm.max_spare_servers=20

pm.max_requests=2048


slowlog=/app/logs/$pool.log.slow

request_slowlog_timeout=10
--------------------------------------------------------------------------

../sbin/PHP-fpm-t
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
错误:ERROR:Unabletocreateoropenslowlog(/applog/logs/www.log.slow):Nosuchfileordirectory(2)
解决:mkdir/applog/logs/-p
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

../sbin/PHP-fpm

lsof-i:9000

================================================


我编译PHP遇到的错误:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

错误:configure: error: Don't kNow how to define struct flock on this system,set --enable-opcache=no

解决:

ln -s /application/MysqL/lib/libMysqLclient.so /usr/lib64/

ln -s /application/MysqL/lib/libMysqLclient.so.18 /usr/lib64/

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

问题:checking whether to enable embeddedMysqLi support... yes

checking for MysqL_set_server_optionin -lMysqLclient... no

configure: error: wrong MysqL libraryversion or lib not found. Check config.log for more information.

解决:--with-MysqLi后面不加路径

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

问题:Don't kNow how to define struct flockon this system,set --enable-opcache=no

解决:

以下红色路径看具体MysqL安装路径而定

32位系统:

ln -s /usr/local/MysqL/lib/libMysqLclient.so /usr/lib/

ln -s /usr/local/MysqL/lib/libMysqLclient.so.18/usr/lib/libMysqLclient.so.18

64位系统:

ln -s /usr/local/MysqL/lib/libMysqLclient.so /usr/lib64/libMysqLclient.so

ln -s /usr/local/MysqL/lib/libMysqLclient.so.18 /usr/lib64/libMysqLclient.so.18

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

问题:configure: error: Please reinstallreadline - I cannot find readline.h

解决:yum install readline-devel.x86_64 -y

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

问题:make: *** [sapi/cli/PHP] Error 1

解决:

网上统一的解决方式: makeZEND_EXTRA_LIBS='-liconv'

ln -s /usr/local/lib/libiconv.so.2/usr/lib64/

我自己的解决方式:重新编译安装libiconv(注意编译的的参数--with-iconv-dir的路径)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


=================测试LNMP环境==========================

cd /application/Nginx/


--------------------------------------------------

vim html/blog/index.PHP

<?PHP

PHPinfo();

?>

--------------------------------------------------


vim conf/extra/blog.conf

server {

listen 80;

server_name www.blog.vperson.org.cn;

access_log logs/blog.access.log main;

location / {

root html/blog;

index index.PHP index.html index.htm;

}

location ~ \.PHP$ {

root html/blog;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.PHP;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi_params;

include fastcgi.conf;

}

}

-----------------------------------------------------------------------------


./sbin/Nginx -t


./sbin/Nginx -s reload


curl www.blog.vperson.org.cn


错误集:

  • 如果使用curl 访问时出现502 错误,网上一大堆解决方法,就是没有说道防火墙的。所以PHP服务是自己占用一个端口的,所以需要我们手动开启。iptables -I INPUT -p tcp --dport 9000 -j ACCEPT

  • 错误404和403一般是站点目录和配置文件有错误,或者服务器没起来等问题。



隐藏PHP版本:

vim /application/PHP/lib/PHP.ini

expose_PHP=On


搭建一个自己的开源网站:

opensns、PHPcms、wiki等。

步骤:

  • 下载开源软件包

  • #如http://kaiyuan.hudong.com/

  • 创建数据库

  • #create database wiki;

  • 创建数据库中的用户用于管理这个网站的数据

  • #grant all on wiki.* towiki@’localhost’ identified by ‘wiki’;

  • #flush privileges;

  • #quit

  • 解压开源网站到指定的站点目录

  • #修改权限chown -RNginx:Nginx 目录

  • 用浏览器访问

  • 安装站点


总结:

LNMP搭建对于新手来说是比较困难但是要细心,前后要有呼应,理解。

遇到困难先看错误,别急着百度,因为搜出来的大部分都是复制粘贴的。

记录下来每次的错误方便下次解决。

遇到困难,做了好久的,先放松放松,去散步什么的回来说不定就会了。

二进制的MysqL不推荐新手完,因为他只是预设了一些参数。



网上搜了很多,终于知道测试PHP和MysqL连同的代码了:

<?PHP

//$link_id=MysqL_connect('主机名','用户','密码');

$link_id=MysqL_connect('localhost','root','redhat')or MysqL_error();

if($link_id){

echo"MysqL successful";

}else{

echoMysqL_error();

}

?>

##以上可能有错误,但是还请原谅因为我也是新手,刚刚开始学习linux,请多多指教。

centos 6.8 安装LNMP环境linux+nginx+mysql+php的更多相关文章

  1. 详解使用双缓存解决Canvas clearRect引起的闪屏问题

    这篇文章主要介绍了详解使用双缓存解决Canvas clearRect引起的闪屏问题的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 利用Node实现HTML5离线存储的方法

    这篇文章主要介绍了利用Node实现HTML5离线存储的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. HTML5 Web缓存和运用程序缓存(cookie,session)

    这篇文章主要介绍了HTML5 Web缓存和运用程序缓存(cookie,session),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. 详解前端HTML5几种存储方式的总结

    本篇文章主要介绍了前端HTML5几种存储方式的总结 ,主要包括本地存储localstorage,本地存储sessionstorage,离线缓存(application cache),Web SQL,IndexedDB。有兴趣的可以了解一下。

  5. 在iOS上,缓存绘制的屏幕图像并显示它的最快方法是什么?

    我没有让drawRect每次重绘数千个点,我认为有几种方法可以“在屏幕上缓存图像”和任何其他绘图,我们将添加到该图像,并在drawRect时显示该图像:>使用BitmapContext并绘制到位图,并在drawRect中绘制此位图.>使用CGLayer并在drawRect中绘制CGLayer,这可能比方法1快,因为此图像缓存在图形卡中(并且它不会计入iOS上“内存警告”的RAM使用情况?

  6. ios – NSURLCache和数据保护

    我正在尝试保护存储在NSURLCache中的敏感数据.我的应用程序文件和CoreDatasqlite文件设置为NSFileProtectionComplete.但是,我无法将NSURLCache文件数据保护级别更改为NSFileProtectionCompleteUntilFirstUserAuthentication以外的任何其他级别.这会在设备锁定时暴露缓存中的任何敏感数据.我需要缓存响应,以

  7. iOS Safari多久会清除一次缓存?

    我使用移动Safari缓存来存储我想要持久化的一些数据,所以我希望它们能够在Safari重启和iOS重启后继续存在.但是我已经阅读了somenew和someold报告,Safari在Safari重新启动时清除了它的缓存.但我对Safari8.3的非科学测试表明,有时这个缓存实际上不仅可以在应用程序重启后生存,而且甚至可以重启iOS(!).所以我在这一点上有点困惑.iOSSafari缓存清除的规则是否记录在某处?你们中有谁知道他们并且可以向我解释他们吗?解决方法希望有人发现我错了但是……

  8. ios – 如何获取缓存图像SDWebImage的数据

    我正在使用SDWebImage库来缓存我的UICollectionView中的Web图像:但我想将缓存的图像本地保存在文件中,而不是再次下载它们有没有办法获取缓存图像的数据解决方法SDWebImage默认自动缓存下载的图像.您可以使用SDImageCache从缓存中检索图像.当前应用会话有一个内存缓存,它会更快,并且有磁盘缓存.用法示例:还要确保在文件中导入SDWebImage.(如果您使用的是Swift/Carthage,它将导入WebImage

  9. 缓存 – NSURLCache在iOS5上提供不一致的结果,似乎是随机的

    我刚刚花了很长时间在NSURLCache尖叫我,所以我提供了一些建议,希望别人能够避免我的不幸.这一切都足够合理.我的新应用程序项目只针对iOS5及更高版本,所以我认为我可以利用新的NSURLCache实现我所有的Web缓存需求.我需要一个NSURLCache的自定义子类来处理一些特殊的任务,但是这似乎都被API的有力支持.快速阅读文档,我会参加比赛:我认为一个8MB缓存启动是很好的,我会用更大的

  10. iOS与解析. PFUser.currentuser()没有缓存.应用程序重新启动后返回零

    我正在迅速地用Parse构建一个应用程序.在应用程序停止后,PFUser.currentuser()总是返回nil,并再次运行.我正在使用iOS模拟器,并且启用了本地数据存储.我正在使用这样的东西–而我正在使用的登录当前用户保持到应用程序重新启动,然后重置为零.我甚至试图固定当前用户,但它不起作用.如何检查当前用户是否在本地缓存.任何帮助将不胜感激.谢谢.解决方法对我来说,原因只是以下部分没有执行.注意多线程.通常是这个原因.

随机推荐

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

返回
顶部