lnmp平台菜鸟入门级笔记

              LNMP平台搭建

Mysql安装 同lamp 不多说

wget  http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz

PHP安装

5.下载php:wget http://am1.php.net/distributions/php-5.3.27.tar.gz

6..解压:tar -xvzf php-5.3.27.tar.gz

7.提前安装依赖软件

yum install -y libxml2-devel

yum install -y openssl openssl-devel

yum install -y bzip2 bzip2-devel

yum install -y libpeng libpng-devel

yum install -y libpng libpng-devel

yum install -y freetype freetype-devel

yum install -y epel-release

yum install -y libmcrypt-devel

yum install -y libtool-ltdl-devel

编译安装

./configure \

--prefix=/usr/local/php \

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

--enable-fpm \

--with-fpm-user=php-fpm \

--with-fpm-group=php-fpm \

--with-mysql=/usr/local/mysql \

--with-mysql-sock=/tmp/mysql.sock \

--with-libxml-dir \

--with-gd \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-zlib-dir \

--with-mcrypt \

--enable-soap \

--enable-gd-native-ttf \

--enable-ftp \

--enable-mbstring \

--enable-exif \

--enable-zend-multibyte \

--disable-ipv6 \

--with-pear \

--with-curl \

--with-openssl

make && make install

8.修改php配置文件

cp php.ini-production /usr/local/php/etc/php.ini

vim /usr/local/php/etc/php-fpm.conf

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

[www]

listen = /tmp/php-fcgi.sock

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

Php-fpm.conf 文件为php进程配置文件。Aphache调启用php处理时启用的php子进程都是有这个文件控制。

详解配置文件于nginx 虚拟主机有关

PHP配置文件

/usr/local/php/sbin/php -fpm -t 测试

/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

重要目录:

/usr/local/php/sbin/php-fpm

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

/usr/local/php/etc/php.ini

启动php-fpm

/usr/local/php/sbin/php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

关闭:php-fpm

重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm.conf 管理服务配置文件。 php.ini全局配置。

php-fpm.conf配置文件

1.清空原有配置文件。

>/usr/loca/php/etc/php-fpm.conf

2.写入模板文件

Vim /usr/local/php/etc/php-fpm.conf

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log  错误日志存放区。

[www]可定义。不通站点定义可以定义不同的php进程池。

listen = /tmp/www.sock  监听的不通端口或sock 配置必须和nginx 虚拟主机配置文件中配置相同。不然会提示502错误。

user = php-fpm

group = php-fpm

Listen.owner = nobody  因为5,3版本之后的版本socket没有权限所以需要我们定义一下。

Listen.group = nobody

pm = dynamic   动态形式启动。 可以配置为静态,如static建议配置为dynamic

pm.max_children = 50  动态最大启动50个子进程。

pm.start_servers = 20  默认开始启动20个

pm.min_spare_servers = 5 空闲时最小启动5个

pm.max_spare_servers = 35  空闲最大启动35个。

pm.max_requests = 500   每一个子进程,生命周期内最多可以接受35个请求自动销毁。

rlimit_files = 1024 每个子进程打开多少个文件句柄。

slowlog = /tmp/www_slow.log 脚本执行追踪日志存放路径。

Reguest_slowlog_timeout = 1 超过1s记录

php_admin_value[open_basedir]=/data/www/:/tmp/

添加性能追踪日志。如在slowlog = /tmp/www_slow.log

Reguest_slowlog_timeout = 1 脚本执行超过1s 就去记录日志在/tmp/www_slow.log 这个名字 自定义即可,每一个池子都可以添加不同的日志追踪机制。

Apache可以定义open_basedir nginx下也可以定义open_basedir目录。如:php_admin_value[open_basedir]=/data/www/:/tmp/  把执行php的用户限定在指定目录下,来缩小权限访问范围来达到安全的目的。

注意php5.4版本中定义的默认tmp/sock文件为只读,没有执行权限。如果没有定义listen.owner那么那个nginx调用的时候就没有权限。所以我们的需要定义listen.owner=nobody listen.group=nobody

检查配置:/usr/local/php/sbin/php-fpm -t

配置启动:cp /usr/local/src/php-5.3.27/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod 755 /etc/init.d/php-fpm

service php-fpm start

设置开机启动:

chkconfig php-fpm on

ps aux |grep php-fpm

安装nginx

Nginx.cof 详解http://www.ha97.com/5194.html

下载nginx

wget http://nginx.org/download/nginx-1.4.4.tar.gz

解压

tar zxvf nginx-1.4.4.tar.gz

提前安装pcre 组件。

yum install -y pcre-devel

配置编译

cd nginx-1.4.4

./configure \

--prefix=/usr/local/nginx \

--with-http_realip_module \

--with-http_sub_module \

--with-http_gzip_static_module \

--with-http_stub_status_module  \

--with-pcre

make && make install

编写nginx启动脚本,并加入系统服务。

vim /etc/init.d/nginx

#!/bin/bash

# chkconfig: - 30 21

# description: http service.

# Source Function Library

. /etc/init.d/functions

# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"

NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

NGINX_PID="/usr/local/nginx/logs/nginx.pid"

RETVAL=0

prog="Nginx"

start() {

echo -n $"Starting $prog: "

mkdir -p /dev/shm/nginx_temp

daemon $NGINX_SBIN -c $NGINX_CONF

RETVAL=$?

echo

return $RETVAL

}

stop() {

echo -n $"Stopping $prog: "

killproc -p $NGINX_PID $NGINX_SBIN -TERM

rm -rf /dev/shm/nginx_temp

RETVAL=$?

echo

return $RETVAL

}

reload(){

echo -n $"Reloading $prog: "

killproc -p $NGINX_PID $NGINX_SBIN -HUP

RETVAL=$?

echo

return $RETVAL

}

restart(){

stop

start

}

configtest(){

$NGINX_SBIN -c $NGINX_CONF -t

return 0

}

case "$1" in

start)

start

;;

stop)

stop

;;

reload)

reload

;;

restart)

restart

;;

configtest)

configtest

;;

*)

echo $"Usage: $0 {start|stop|reload|restart|configtest}"

RETVAL=1

esac

exit $RETVAL

保存退出更改权限。

chmod 755 /etc/init.d/nginx

chkconfig --add nginx

chkconfig nginx on

更改nginx配置

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

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

写入如下内容:

user nobody nobody;

worker_processes 2;

error_log /usr/local/nginx/logs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 6000;

}

http

{

include mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 3526;

server_names_hash_max_size 4096;

log_format combined_realip ‘$remote_addr $http_x_forwarded_for [$time_local]‘

‘$host "$request_uri" $status‘

‘"$http_referer" "$http_user_agent"‘;

sendfile on;

tcp_nopush on;

keepalive_timeout 30;

client_header_timeout 3m;

client_body_timeout 3m;

send_timeout 3m;

connection_pool_size 256;

client_header_buffer_size 1k;

large_client_header_buffers 8 4k;

request_pool_size 4k;

output_buffers 4 32k;

postpone_output 1460;

client_max_body_size 10m;

client_body_buffer_size 256k;

client_body_temp_path /usr/local/nginx/client_body_temp;

proxy_temp_path /usr/local/nginx/proxy_temp;

fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

fastcgi_intercept_errors on;

tcp_nodelay on;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 8k;

gzip_comp_level 5;

gzip_http_version 1.1;

gzip_types text/plain application/x-javascript text/css text/htm application/xml;

server

{

    listen 80;

    server_name localhost;

    index index.html index.htm index.php;

    root /usr/local/nginx/html;

 

    location ~ \.php$ {

        include fastcgi_params;

        fastcgi_pass unix:/tmp/php-fcgi.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

    }

 

}

}

保存配置后,先检验一下配置文件是否有错误存在:

/usr/local/nginx/sbin/nginx  -t

如果只有一个站点那就无需配置虚拟站点。如果多站点需要将红色字体部分去除,在最后加入include vhosts/*.conf;  (指定虚拟主机的.conf站点配置文件 需要在/usr/local/nginx/conf/ 下创建vhosts目录 在创建虚拟主机站点配置文件如:默认配置文件:default.conf ,及其他站点。默认情况下第一个默认站点禁止访问。)

配置如下:vim default.conf

添加server部分

 

server

{

    listen 80 default_server;

    server_name localhost;

    index index.html index.htm index.php;

    root /tmp/1233;  

    deny all;

   

}

由于默认让其无法访问,所以没有必要配置php解析,删除php解析部分,设置默认访问站点为tmp/1233.并设置其站点目录 为deny all 禁止访问。并创建1233目录 mkdir /tmp/1233

除了默认站点,我配置一下 下一个站点 如域名为test.com 的站点test.conf

Vim test.conf

server

{

    listen 80;

    server_name test.com;

    index index.html index.htm index.php;

    root /data/www;

 

    location ~ \.php$ {

        include fastcgi_params;

        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

    }

 

}

保存退出即可。注意网站更目录我没配置的是/data/www  监控为:127.0.0.1:9000 这里可以自定义选择fastcgi_pass unix:/tmp/www.sock; 次出配置必须和php-fpm.conf 进程配置文件配置一样,否则报错502.  注意:每个站点都可单独指定不同的php运行进程数。需要在php-fpm.conf文件中添加。在虚拟站点文件中指定即可。

502错误

502 报错1.定义nginx虚拟主机中监听端口或sock路径配置错误。默认为 127.0.0.1 保持它与php.fpm.conf文件中配置一样。

502 权限问题:版本问题报错502 ,默认sock文件没有执行权限需要在虚拟主机配置文件grup 项后添加:listen.owner = nobody listen.group = nobody

 

 

启动nginx:

service nginx start

ps aux |grep nginx

检查配置文件 重启安装discuz测试 ok

1.nginx 用户认证

虚拟主机配置文件中添加:

location ~ .*admin\.php$ {

auth_basic "aminglinux auth";

auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

include fastcgi_params;

fastcgi_pass unix:/tmp/www.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

}

设置密码用户添加密码

/ls /usr/local/apache2/bin2/bin/htpasswd 工具创建

如果没有yum install htpasswd -y 安装后设置。

htpasswd -c /usr/local/nginx/conf/.htpasswd aming

New password: 设置密码回车即可。

登录直接下载。

添加配置文件中加载php项-蓝色字体 ,即可解决php解析问题。

2.在虚拟站点配置文件中加入:

if ($host != ‘test.com‘)

{

rewrite ^/(.*)$ http://test.com/$1 permanent;

}

保存即可。

配置完成后如下所示:

server

{

listen 80;

server_name test.com www.test.com www.aaa.com;

 if ($host != ‘test.com‘)

    {

        f ($host != ‘test.com‘)

    {

rewrite ^/(.*)$ http://test.com/$1 permanent;

}rewrite ^/(.*)$ http://test.com/$1 permanent;

}

index index.html index.htm index.php;

root /data/www;

location ~ .*admin\.php$ {

auth_basic "aminglinux auth";

auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

include fastcgi_params;

fastcgi_pass unix:/tmp/www.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

}

location ~ \.php$ {

include fastcgi_params;

fastcgi_pass unix:/tmp/www.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

}

302 301 参考文档:http://ask.apelearn.com/question/4840

查看权重百度site:www.aaa.com

2.Nginx配置不记录指定文件类型的日志

Nginx 主配置文件中有:

log_format aming ‘$remote_addr $http_x_forwarded_for [$time_local]‘

‘$host "$request_uri" $status‘

‘"$http_referer" "$http_user_agent"‘;项

log_format 日志格式为log_format

日志名字aming 可自定义。

$remote_addr 远程ip

 forwarded_for 代理的ip

 [$time_local]‘ 时间。服务器里请求开始写入本地的时间,请求发生时间有前有后,所以会时间顺序前后错乱。

 $http_referer  $http_user_agent 之前提到过apache

修改部分:虚拟主机配置文件中:location标签之前加:

access_log /tmp/access.log aming;

location ~ .*\.(gif|jpg|jpeg|png|bmg|swf)$

{

access_log off;

}

loccess_log /tmp/access.log aming;cation ~ (static|cache)

{

access_log off;

}

不想记录那些日志都可自定义匹配。保存退出 -t 检测,-s reload加载一下。测试ok

Nginx 日志切割

不通apache有切割工具,nginx需要写脚本进行切割。

vim  /usr/local/sbin/nginx_logrotate.sh

#!bin/bash

d=`date -d "-1 day" +%F`

[ -d /tmp/nginx_log ] || mkdir /tmp/nginx_log

mv /tmp/access.log /tmp/nginx_log/$d.log

/etc/init.d/nginx reload >/dev/null

cd /tmp/nginx_log/

gzip -f $d.log

保存退出即可。

sh -x /usr/local/sbin/nginx_logrotate.sh

ls /tmp/nginx_log/ 列出日志压缩文件。

最后写一个计划任务:每天0点0分执行 即可。

3.Nginx 静态文件缓存。即缓存过期时间

同样使用location 标签

在虚拟主机配置文件中location中添加 expires xxh/d等如:

Vim test.com

location ~ .*\.(gif|jpg|jpeg|png|bmg|swf)$

{

access_log off;

expires 15d; 设置gif|jpg|jpeg|png|bmg|swf文件缓存时间为15天。

}

 location ~ \.(js|css)

    {   access_log off;

expires 2h; 设置以js /css结尾的文件缓存时间为2小时。

 }

如测试成功

curl -x127.0.0.1:80 ‘http://test.com/static/image/common/online_admin.gif‘ -I

查看最大缓存时间。

4.Ngin 设置防盗链

也是在location 中设置

在location 中加入

valid_referers none blocked *.test.com *.aaa.com *.wyl.com;

        if ($invalid_referer)

        {

           return 403;

         }

解释:*.test.com *.aaa.com *.wyl.com; 域名白名单,只有这些域名的网站可以使用test.com图片等。

最终配置如下:location中的条件可以随便添加。

    location ~ .*\.(gif|jpg|jpeg|png|bmg|swf|flv|rar|zip|gz|bz2)$

   {

        access_log off;

        expires 15d;

        valid_referers none blocked *.test.com *.aaa.com *.wyl.com;

        if ($invalid_referer)

        {

           return 403;

         }

    }

保存退出加载后测试

1.Nginx 访问控制

根据ip设置访问规则

方法一

根据局部设置可在location 模块中设置想要的限制条件目录

在其后加入allow 192.168.2.192;

Deny all; (白名单设置)

保存退出即可,如果针对全局可以直接写个Dney 127.0.0.1; 黑名单设置

Dney 192.168.2.0/24; 后面的allow可以省略,如果针对,nginx 不区分allow 与Deny all 的前后顺序而apache不同,它是区分前后顺序的。

测试:curl -x192.168.2.192:80 test.com/admin.php -I 进行测试 符合要求。

方法二:在nginx的conf目录下建立deny.ip配置文件

写入:deny 192.168.1.11;

deny 192.168.1.23;

deny 192.168.1.2;

或者写:allow 192.168.1.101;

allow 1.1.1.2;

aeny all;

其次在虚拟主机配置文件中加入:include deny.ip;

报存,重新加载即可。

Nginx 禁止指定user_agent

服务器压力过大的情况下或者被一些垃圾搜索引擎抓取,访问,这样就会耗费我们php资源,所以我们可以禁止有道,bin 360等 搜索引擎访问。

配置: 在虚拟主机配置文件中同样在location 中配置:

Location /

{

if ($http_user_agent ~* ‘baidu|sougou|360‘)

     {

    return 403;         

     }  

}

保存退出即可,也可直接去掉location /{}标签,直接if(){} 设置即可如果所示:

上面只是以百度,搜狗,360为例,~*不区分大小写匹配。

测试:curl -A "lobaidu" -x192.168.2.192:80 test.com/forum.php -I

2.nginx代理解释

参考文档:http://www.itnpc.com/news/web/146111097157413.html

在conf目录下 新建vim prosy.conf文件并写入配置内容如下

vim prosy.conf

server {

    listen 80;

    server_name www.baidu.com;

     location / {

     proxy_pass http://61.135.169.121;

    #proxy_set_header Host $host;

      }

} 保存退出。没有负载均衡,配置负载均衡需要指定地址池。如:proxy_pass http://www_server_poos; 负载均衡后面再说。

解释:通过prosxy_pass 功能把用户的请求交由上面反向代理upstream定义的www_server_pools服务池处理。服务池名字可以自定义,如aming

安装:dig命令获取域名解析到那些ip。如 dig www.baidu.com  获取百度其他ip地址安装yum install bind*

获取后添加到prosxy_pass 后面。如上所述。

简单负载均衡:配置负载均衡地址池子需要添加upstram xxx(自定义)设置ip或者ip加端口

如:upstream aming {

   server 61.135.169.125:80;

   server 61.135.169.121;

}  proxy_pass http://61.135.169.121;改为proxy_pass http://aming; 指向地址池。后面继续添加proxy_set_header Host $host;项目不然会502错误。

配置如下:

 vim prosy.conf

  upstream aming {

   server 61.135.169.125:80;

   server 61.135.169.121:80;

                }

server {

    listen 80;

    server_name www.baidu.com;

     location / {

     proxy_pass http://aming;

     proxy_set_header Host $host;

              }

       }

简单配置完毕如图所示:

时间: 2024-10-05 04:27:40

lnmp平台菜鸟入门级笔记的相关文章

搭建完全分离式LNMP平台的简单案例

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 案例拓扑图 安装配置nginx服务器 编译安装nginx时,需要事先安装 开发包组"Development Tools"和"Server Platform Development",同时还需专门安装pcre-devel包. # yum -y groupinstall "Development Tools" # yum -y groupinstal

Puppet基于Master/Agent模式实现LNMP平台部署

前言 随着IT行业的迅猛发展,传统的运维方式靠大量人力比较吃力,运维人员面对日益增长的服务器和运维工作,不得不把很多重复的.繁琐的工作利用自动化处理.前期我们介绍了运维自动化工具ansible的简单应用,本期带来的是运维自动化神器puppet基于Master/Agent模式实现LNMP平台部署. Puppet 简介 Puppet是基于ruby语言开发的一种Linux.Unix.Windows平台的集中配置管理系统,可以C/S模式或独立运行,使用自有的puppet描述语言,可管理配置文件.用户.c

LNMP平台搭建---Linux系统安装篇

在互联网网站开发领域,有一个名词,大家一定不陌生,那就是LAMP,经典的Web服务器环境,由Linux+Apache+MySQL+PHP组成,,后来,一个名叫Nginx的Web服务器开源出来了,因其更高的并发性,系统资源利用率更高,在市场上的占有率也逐步提升,在Netcraft网站上看到的数据,在1995年到2015年间,每种服务器的使用趋势: 可以看到,Apache依然是最受欢迎的Web服务器,Nginx属于后起之秀,很快占有市场.Nginx的几大特点如下: 1. 对静态资源的高速并发缓存和访

LNMP平台搭建---Nginx安装篇

在上一篇博文<LNMP平台搭建---Linux系统安装篇>中,我们安装了CentOS版本的Linux操作系统,现在,我们来安装一个Web服务器,大标题写着LNMP,其中的N就是Nginx,开始安装前,先大致了解一下Nginx这个后起之秀的Web服务器吧. Nginx第一次正式发布是在2004年10月,它是一款免费开源的高性能HTTP服务器和反向代理服务器,并且可作为邮件服务器,在它的官网:http://www.nginx.org 可以了解更多,当前最新的稳定版本是1.10.2,12年来,在全世

LNMP平台搭建---MySQL安装篇

在前两篇中,安装了一个基本的Web服务器,但是只能提供静态网页查看,要做成动态网站,就必须要数据库或其他编程语言支持了,这里先介绍MySQL数据库的安装. MySQL是一个开源的数据库,在互联网行业应用的很广泛,下面来记录一下从源码安装的步骤,当然,MySQL也有其他安装方式,比如,使用yum下载安装rpm包,或者二进制方式安装,如果机器比较多,可以自己搭建yum源,然后定制rpm包,这样更方便于使用ssh多机自动安装. 源码安装的mysql版本为5.5.32,使用cmake编译安装,下面开始记

Linux菜鸟入门级命令大全

1. man 对你熟悉或不熟悉的命令提供帮助解释eg:man ls 就可以查看ls相关的用法注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行.2. ls 查看目录或者文件的属*,列举出任一目录下面的文件eg: ls /usr/manls -la.d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link)b.表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x).3. cp 拷贝文件eg: cp

部署LNMP平台和相关的实验

该实验分为四个部分,实验一为搭建LNMP平台,实验二为测试能否解析php的文件 和连接数据库的效果,实验三为实现地址重写的功能,实验四为不同的浏览器,给出不同样式的页面 实验一:部署LNMP环境 一.目标 安装部署Nginx.MariaDB.PHP环境 安装部署Nginx.MariaDB.PHP.PHP-FPM: 启动Nginx.MariaDB.FPM服务: 并测试LNMP是否工作正常. 二.各软件的安装 1.安装源码包安装时需要的依赖包 yum -y install gcc openssl-d

LNMP平台部署及应用

LAMP平台应该是目前应用最为广泛的网站服务器架构,但随着Nginx在企业中的使用越来越多,LNMP(或LEMP)架构也受到越来越多Linux系统工程师的青睐,其中"E"来自于Nginx的发音[engine x] 构建LNMP网站平台 构建LNMP平台需要Linux服务器.Nginx服务器.MySQL数据库.PHP解析环境,具体方法和LAMP差不多,Nginx服务器的搭建方法上篇博客已经介绍了,下面以安装好的Nginx服务器为基础,搭建LNMP平台 1. 安装MySQL数据库 MySQ

脚本_部署LNMP平台

#!bin/bash#功能:部署LNMP平台,实际运行脚本时,需要去除备注.#作者:liusingbonfunction menu {                //定义函数menu         clear         echo " ##############----Menu----##############"         echo "# 1. Install Nginx"         echo "# 2. Install MySQ