1. 到mysql官方下载一个源码包,尝试编译安装,编译参数可以参考我们已经安装过的mysql的编译参数。
操作略,查看mysql编译参数的方法是 cat /usr/local/mysql/bin/mysqlbug|grep configure

2. mysql的配置文件my.cnf,是否可以放到除了/etc/目录下的其他目录下?
可以放到其他目录下,不过启动的时候需要指定配置文件,或者在启动脚本中定义一下配置文件的路径
手动启动mysql的命令: /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/my.cnf --user=mysql --datadir=/data/mysql
或者在启动脚本中/etc/init.d/mysqld 中,搜索conf=/etc/my.cnf,并修改

3. 比较一下,lamp环境和lnmp环境编译php时,编译参数有哪些区别?
lamp的php有指定 apxs,lnmp中没有指定;lnmp中有一项叫做 --enable-fpm,lamp没有

4. 安装好php后,比较一下lamp的php和lnmp的php的目录结构有什么不同?
lnmp的php比lamp的php多出来几个目录:sbin, share, var

5. 想一想,lamp环境下的php安装目录 /usr/local/php 是否可以删除?
可以删除掉,因为lamp中的php是作为apache的一个动态模块libphp5.so来调用的,唯一有影响的是如果指定了php的配置文件php.ini在php的目录下,如果删除后则配置文件失效。

6. php的配置文件是什么? php-fpm 的配置文件是什么?
php的配置文件时php.ini, php-fpm的配置文件时 php-fpm.conf

7. 如何检测nginx配置文件是否有错?如何检测php-fpm的配置文件是否有错?
/usr/local/nginx/sbin/nginx -t
/usr/local/php/sbin/php-fpm -t

8. 在本章中,出现了两次 "chmod 755 /etc/init.d/xxx" 其中xxx 为php-fpm 和 nginx, 想一想为什么要更改他们的权限,如果不改,会有什么问题?
因为php-fpm和nginx是启动脚本,脚本执行必须要有执行权限,如果不给执行权限,不能正确把它们加入到系统服务中。

9. nginx是如何做到解析php文件的?它是如何和php联系在一起的?
nginx解析php,是以代理的方式代理的php-fpm,在nginx的配置文件中有这样一段:
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /backup/sphinx/build/html$fastcgi_script_name;
}
这就是用来指定php-fpm的,nginx本身不能解析php,它只是一个简单的web服务软件,但nginx有一个很好的功能就是可以作为代理服务器,而php-fpm是可以解析php的,所以只要nginx代理一下php-fpm就可以解析php啦。

10. 配置nginx的访问日志,并编写日志切割脚本按天切割。
配置nginx的日志,首先需要定义一下日志格式,这个格式在 nginx.conf的 httpd模块下配置,参考格式:
log_format main1 '$proxy_add_x_forwarded_for - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
其中 main1为日志格式的名字,这个会用到。然后在虚拟主机配置段中,也就是server部分中配置加上
access_log /var/log/xxx/access.log main1;
日志切割脚本(已知访问日志为/var/log/xxx/access.log):

#! /bin/bash
d=`date -d "-1 day" +%Y%m%d`
/bin/mv /var/log/xxx/access.log /var/log/xxx/$d-access.log
/bin/kill -HUP `cat /usr/local/nginx/logs/nginx.pid` //其中nginx的pid文件为/usr/local/nginx/logs/nginx.pid

假如脚本的名字为 /usr/local/sbin/nginx_logrotate.sh,加入计划任务
0 0 * * * /bin/bash /usr/local/sbin/nginx_logrotate.sh

11. 配置Nginx域名重定向,比如一个虚拟主机支持多个域名访问,abc.com 和 123.com 那么让123.com的访问跳转到 abc.com
在相应的虚拟配置文件中加入:
if ($host != 'abc.com' ) {
rewrite ^/(.*)$ http://abc.com/$1 permanent;
}

12. 配置Nginx的用户验证
需要先安装 htpasswd命令: yum install -y httpd
htpasswd -c /usr/local/nginx/conf/htpasswd test // 添加test用户,第一次添加时需要加-c参数,第二次添加时不需要-c参数
在nginx相应虚拟主机配置文件中添加
location / {
root /data/www/wwwroot/count;
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}

13. 针对Nginx站点,设置禁止某个目录下的php程序解析
比如说,禁止abc目录下的php解析:

location ~ .*abc/.*\.php?$
{
deny all;
}

14. 使用Nginx代理一个站点
例如,想在我们的nginx服务器上代理www.baidu.com, 可以创建一个新的虚拟配置文件baidu.conf
server {
listen 80;
server_name www.baidu.com;

location / {
proxy_pass http://61.135.169.125/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# access_log /tmp/1.log;
}

15. 配置nginx限制只让某个ip访问
在相应的虚拟主机配置文件中,加入
allow 1.1.1.1;
allow 2.2.2.2;
deny all;

16. 设置Nginx 防盗链,比如只想让www.lishiming.net 这个域名的referer访问,其他站点不能访问
首先一点需要明确,防盗链是针对图片或者其他静态文件来设置的,比如我不想让其他网站引用我网站的图片,就可以这样设置防盗链。
在相应虚拟配置文件中加入:

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {
valid_referers none blocked server_names www.lishiming.net; // 对这些域名的网站不进行盗链。
if ($invalid_referer) {
return 403;
}
}
当还可以写多个白名单域名,或者使用通配符:valid_referers none blocked server_names *.lishiming.net *.baidu.com;
有时,我们也有这样的需求,如果别的网站引用了我们的图片,可以让它显示成我们自己指定的一张图片:
if ($invalid_referer) {
rewrite ^/ http://www.example.com/nophoto.gif;
}

17. Nginx设置根据user_agent来限制访问,比如禁止baidu的蜘蛛访问站点
baidu蜘蛛的user_agent 为 Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
所以,我们可以写成这样:
location / {
if ($http_user_agent ~ 'Baiduspider'){
return 403;
}
}

18. Nginx配置虚拟目录

问题:
www.111.com 站点的root目录为 /data/web/ ,现在想在www.111.com 下放一个站点,www.111.com/abc/
但不能直接在/data/web/下创建abc目录,要放在 /data1/abc/下。

解决办法:
使用nginx的alias功能实现虚拟目录
在配置文件中加入
location ~ /abc/(.*)$ {
alias /data1/abc/$1;
}

19. Php-fpm.conf 中配置多个pool,如何针对每一个pool配置open_basedir 以及slow_log
php-fpm.conf中可以配置多个pool,并且可以针对每一个pool配置open_basedir和slow_log
首先,php-fpm.conf的配置文件格式为:
[global]

...
...
...

[www.domain1.com]

...
...
...

[www.domain2.com]

...
...
...

配置open_basedir和slow_log需要在相应的pool中加入:
slowlog = log/www.default.com.slow
request_slowlog_timeout = 1
php_admin_value[open_basedir]=/data/release/www.domain.com/:/tmp/
其中,open_basedir可以写多个目录,多个目录间使用:分隔;

搭建LNMP架构的更多相关文章

  1. puppet自动化搭建lnmp架构

    puppet自动化安装lnmp架构 3nginx的搭建 mkdir -p /etc/puppet/modules/nginx/{manifests,files} vim /etc/puppet/mod ...

  2. 第十一章 LNMP架构基础介绍

    一.LNMP架构 1.简介 oLNMP是一套技术的组合,L=Linux.N=Nginx.M~=MySQL.P~=PHP不仅仅包含这些,还有redis/ELK/zabbix/git/jenkins/ka ...

  3. 企业级LNMP架构搭建实例(基于Centos6.x)

    1.1 部署LNMP架构说明 1.1.1 LNMP架构内容 01.部署linux系统 02.部署nginx网站服务 03.部署mysql数据库服务 04.部署php动态解析服务 1.1.2 配置LNM ...

  4. Linux LNMP架构搭建

    一.搭建LNMP基本架构 1.L(http) N(nginx) M(mysql) P(php) 2.安装顺序 Mysql-->PHP-->Nginx 3.安装包 Discuz_3. htt ...

  5. LNMP架构下Discuz论坛的搭建

    在上一节中,我们对lnmp架构下的mysql.php.nginx进行源码的安装,并设置了相关的安装参数.现在我们将在上一节的基础上,把三者联系起来进行一个论坛的部署. 一.首先进行Discuz(社区论 ...

  6. Linux:LNMP架构的搭建

    LNMP架构的搭建 centos6.8-i686 MySQL PHP Nginx 搭建前先安装一些必要的rpm和php组件(全新系统) yum install -y wget gcc vim* lib ...

  7. LNMP架构的搭建

    第9章 LNMP架构的搭建 9.1 什么是LNMP 9.1.1 LNMP的组成 L                linux N                nginx:实现静态的服务处理 M    ...

  8. 部署企业LNMP架构搭建bbs

    部署企业LNMP架构 1===============部署Nginx 2===============安装及部署Mysql数据库 3===============安装PHP解析环境 4======== ...

  9. 基于LNMP架构搭建wordpress博客之安装架构说明

    架构情况 架构情况:基于LNMP架构搭建wordpress系统 软件包版本说明: 系统要求 :  CentOS-6.9-x86_64-bin-DVD1.iso PHP版本  :  php-7.2.29 ...

随机推荐

  1. IOS开发,如何用最新的Itunes给手机装ipa文件

    搜了半天,发现网上的很多教“使用Itunes给手机装ipa文件”文字都好几年了,现在的Itunes跟过去几年的功能和界面都有很大改变,话不多说直接两句话讲明白,希望帮到需要的人. 使用Itunes给手 ...

  2. java代码实现 金字塔(倒置)

    在jsp中实现如图所示的金字塔,,代码如下: 大致思路如下: 1.先画出前5行.因为 i+空格数=总行数,所以第一行的空格数是 总行数-i(第几行),然后画出 *,*的数目=2*i-11: 2.在画出 ...

  3. java学习——多线程

    本文内容来源于  历经5年锤练--史上最适合初学者入门的Java基础视频 线程:就是进程中一个负责程序执行的控制单元(执行路径) 每一个线程都有自己运行的内容.这个内容可以称为线程要执行的任务. 多线 ...

  4. hdu 1829 基础并查集,查同性恋

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. PyQt5+python3的FindDialog

    import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt, pyqtSignal class FindDialog(QD ...

  6. jQuery自学笔记(一):初识jQuery

    jQuery 是一个 JavaScript 函数库, jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数,引用jQuery应该注意: <script&g ...

  7. js 邮箱正则匹配

    $(function(){ var valAttr = '746979855qq.com'; \-])+\.)+([a-zA-Z0-]{,})+$/; var tmpresult = mail_fil ...

  8. 使用telnet操作memcache,一般不常用

    使用telnet操作memcache,一般不常用   1.使用方法 1. 连接到memcached telnet 192.168.1.100 11211 add name 0 60 5     [说明 ...

  9. 【结构型】Decorate模式

    装饰模式主要意图是为对象扩展额外的职责,但对于用户来说,在使用行为上并没有任何的变化.在此举一个例子来解释该模式的含义.假如你手上有一张照片,此时可以给它盖上一片玻璃片,同时再套上一个精美的相框.如此 ...

  10. MongoDB insert/update/one2many案例

    以博文与评论为例,博文有标题内容,对应多个评论,评论有评论人.评论内容等. ()插入一条博文: db.blog.insert( {','title':'this is blog title1','co ...