LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2

你是否遇见过:安装LNMP1.3环境后,运行ThinkPHP 3.2,只能打开首页,不能访问控制器,报404错误。

按照以下3步设置,即可解决。

ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,系统默认的PATHINFO模式。

LNMP1.3 一键安装完成后,默认支持REWRITE,需要手动开启 PATHINFO。

第1步修改:php.ini文件
位置:/usr/local/php/etc/php.ini

搜索查找到:cgi.fix_pathinfo 配置项,默认为0,修改为1,开启 pathinfo 选项。

如图1:

第2步修改:nginx的配置文件 (笔者使用的是虚拟域名配置文件:/usr/local/nginx/conf/vhost/*.conf)

找到 server 的配置选项:

默认只有 include enable-php.conf,请注释掉;
然后添加一行:include enable-php-pathinfo.conf

如:

Select Code
1
2
3
#error_page   404   /404.html;
#include enable-php.conf;             # 注册这一行
include enable-php-pathinfo.conf;     # 加入这行

如图2:

继续修改,在添加下面配置信息:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
location ~ .php
{
    set $path_info "";
    set $real_script_name $fastcgi_script_name;
    #如果地址与引号内的正则表达式匹配
    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
    #将文件地址赋值给变量 $real_script_name
    set $real_script_name $1;
    #将文件地址后的参数赋值给变量 $path_info
    set $path_info $2;
    }
    
    #配置fastcgi的一些参数
    fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
    fastcgi_param SCRIPT_NAME $real_script_name;
    fastcgi_param PATH_INFO $path_info;
}

在Nginx,可以通过在Nginx.conf中配置转发规则实现,解决其他不支持PATHINFO的WEB服务器环境。

#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则

Select Code
1
2
3
4
5
6
7
if (!-e $request_filename)
{
	#地址作为将参数rewrite到index.php上。
	rewrite ^/(.*)$ /index.php/$1;
	#若是子目录则使用下面这句,将subdir改成目录名称即可。
	#rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
}

官方出处:http://document.thinkphp.cn/manual_3_2.html#url_rewrite

第3步:重启LNMP环境,配置生效。

最终效果测试:
1. 去掉了 index.php
2. 可以访问控制器下的方法。
3. U 方法正确。

如图3:

参考:笔者配置文件示例:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
server
    {
        listen 80;
        #listen [::]:80;
        server_name tp32.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/tp32.com;

        include other.conf;
        #error_page   404   /404.html;
        #include enable-php.conf;
        include enable-php-pathinfo.conf; #加入这行


        location ~ .php
        {
            set $path_info "";
            set $real_script_name $fastcgi_script_name;
            #如果地址与引号内的正则表达式匹配
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            #将文件地址赋值给变量 $real_script_name
            set $real_script_name $1;
            #将文件地址后的参数赋值给变量 $path_info
            set $path_info $2;
            }
            
            #配置fastcgi的一些参数
            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
        }

        #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
        if (!-e $request_filename)
        {
            #地址作为将参数rewrite到index.php上。
            rewrite ^/(.*)$ /index.php/$1;
            #若是子目录则使用下面这句,将subdir改成目录名称即可。
            #rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
        }

        access_log  /home/wwwlogs/tp32.com.log;
    }

入口文件index.php

Select Code
1
2
//nginx环境下防止U方法输出错误
define('__APP__', '');

参考:
http://www.thinkphp.cn/topic/3138.html

屌炸天:vim 编辑器安装 NERD tree 补丁,显示目录树

既然要在Linux下做开发,当然少不了VIM的使用,今天介绍的这款显示目录树插件,可以解决你想在vim中实现类似Sublime中左边栏显示项目目录文件夹的功能!

NERD tree 插件下载地址:http://www.vim.org/scripts/script.php?script_id=1658

插件安装方法:在 ~/.vim 目录下,解压下载的压缩包。

Unzip the archive into your ~/.vim directory.
That should put NERD_tree.vim in ~/.vim/plugin and NERD_tree.txt in ~/.vim/doc.

搭配快捷键:
ctrl + z // 让 NERD tree 在后台工作
fg // 恢复到前台

:NEDRTree // 进入你的项目文件夹,打开vim编辑器,在vim编辑器的底行输入该命令,显示目录树

最终实现效果:

ab模拟压力测试,iptables防火墙限制同一IP的访问

提示:RPM包安装的apache自带ab命令。

(1) 在客户机上用命令ab命令进行压力测试

Select Code
1
2
ab -n 100000 -c 40 http://106.14.41.112/index.html
# -n 总请求数 -c 每次并发的连接数

(2) 观察服务器的连接数、性能情况

Select Code
1
2
3
4
5
w
# 查看负载情况

netstat -an|grep 80|grep 220.115.189.54|wc -l
# httpd请求数

(3) 加入iptables的规则,来限制对http 80端口的访问

Select Code
1
2
iptables -I INPUT -p tcp --dport 80 -s 220.115.189.54 -m connlimit --connlimit-above 10 -j REJECT
# 控制单个ip的并发访问数量

(4) 在客户端,再一次执行ab命令,查看结果:

Select Code
1
2
3
4
5
6
7
[root@localhost /]# ab -n 1000000 -c 100 http://106.14.41.112/ecshop/index.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 106.14.41.112 (be patient)
apr_socket_recv: Connection refused (111)

CentOS 6.5源码安装PHP7.1

注意:本文章是作者实验安装记录日志。源码安装实验比较久,请勿尝试。

学习总结步骤:

1、源码安装httpd-2.2.*
2、源码安装php7.*

在执行./configure检测环境时,会报错提示:
configure: error: xml2-config not found. Please check your libxml2 installation.

解决办法:
rpm -qa | grep libxml2 # 检查是否安装了libxml2包

# 重新安装libxml2和libxml2-devel包
yum install libxml2
yum install libxml2-devel -y

解决:xml2-config文件不存在的问题。

这样,就在执行./configure就不会报错。然后make, make install

3、配置文件php.ini

4、检查httpd.conf是否开启了php7模块
LoadModule php7_module modules/libphp7.so

摘要:PHP7源码包中的INSTALL文件

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
1. Obtain  the  Apache HTTP server from the location listed above, and
       unpack it:
gzip -d httpd-2_x_NN.tar.gz
tar -xf httpd-2_x_NN.tar

    2. Likewise, obtain and unpack the PHP source:
gunzip php-NN.tar.gz
tar -xf php-NN.tar

    3. Build  and install Apache. Consult the Apache install documentation
       for more details on building Apache.
cd httpd-2_x_NN
./configure --enable-so
make
make install

    4. Now  you  have  Apache  2.x.NN  available under /usr/local/apache2,
       configured  with  loadable  module  support  and  the  standard MPM
       prefork.  To  test  the  installation use your normal procedure for
       starting the Apache server, e.g.:
/usr/local/apache2/bin/apachectl start

       and stop the server to go on with the configuration for PHP:
/usr/local/apache2/bin/apachectl stop

    5. Now,  configure and build PHP. This is where you customize PHP with
       various  options,  like  which  extensions  will  be  enabled.  Run
       ./configure  --help for a list of available options. In our example
       we'll do a simple configure with Apache 2 and MySQL support.
       If  you  built  Apache  from  source, as described above, the below
       example  will match your path for apxs, but if you installed Apache
       some other way, you'll need to adjust the path to apxs accordingly.
       Note that some distros may rename apxs to apxs2.
cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
make
make install

       If  you decide to change your configure options after installation,
       you'll  need to re-run the configure, make, and make install steps.
       You  only need to restart apache for the new module to take effect.
       A recompile of Apache is not needed.
       Note  that  unless told otherwise, 'make install' will also install
       PEAR,  various  PHP  tools such as phpize, install the PHP CLI, and
       more.
    6. Setup your php.ini
cp php.ini-development /usr/local/lib/php.ini

       You  may  edit  your  .ini  file  to set PHP options. If you prefer
       having php.ini in another location, use
       --with-config-file-path=/some/path in step 5.
       If  you  instead  choose php.ini-production, be certain to read the
       list of changes within, as they affect how PHP behaves.
    7. Edit  your httpd.conf to load the PHP module. The path on the right
       hand side of the LoadModule statement must point to the path of the
       PHP  module  on  your  system. The make install from above may have
       already added this for you, but be sure to check.
LoadModule php7_module modules/libphp7.so
    8. Tell  Apache to parse certain extensions as PHP. For example, let's
       have  Apache  parse  .php  files  as PHP. Instead of only using the
       Apache  AddType  directive,  we want to avoid potentially dangerous
       uploads  and  created  files  such  as  exploit.php.jpg  from being
       executed   as   PHP.   Using  this  example,  you  could  have  any
       extension(s)  parse as PHP by simply adding them. We'll add .php to
       demonstrate.
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
       Or,  if we wanted to allow .php, .php2, .php3, .php4, .php5, .php7,
       and  .phtml files to be executed as PHP, but nothing else, we'd use
       this:
<FilesMatch "\.ph(p[2-7]?|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
       And  to  allow  .phps files to be handled by the php source filter,
       and displayed as syntax-highlighted source code, use this:
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>
       mod_rewrite  may  be  used  To  allow any arbitrary .php file to be
       displayed  as  syntax-highlighted  source  code,  without having to
       rename or copy it to a .phps file:
RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
       The  php source filter should not be enabled on production systems,
       where it may expose confidential or otherwise sensitive information
       embedded in source code.
    9. Use your normal procedure for starting the Apache server, e.g.:
/usr/local/apache2/bin/apachectl start

Ubuntu 14.04 安装 Sublime Text 3

在Ubuntu中按CTRL+ALT+T打开命令窗口,按下面步骤和命令进行安装即可:

1、添加sublime text 3的仓库:sudo add-apt-repository ppa:webupd8team/sublime-text-3

2、更新软件库:sudo apt-get update

3、安装Sublime Text 3: sudo apt-get install sublime-text-installer
然后等待安装…………这个过程稍微有些漫长

4、启动办法:/opt/sublime_text/sublime_text

波老师总结:

*******************************
源码包
RPM
packager (pkg)

软件包的后缀名 二进制包的安装命令(工具) 解决依赖性的安装工具
CentOS .rpm rpm yum
Ubuntu .deb dpkg apt

ubuntu软件安装常用命令

安装
sudo apt-get install ***

举例:
sudo apt-get install virtualbox

ubuntu下安装、卸载软件命令

安装:(1) apt-get install name
卸载:(1) apt-get remove name
卸载并清除配置:(1) apt-get remove –purge name
更新信息库:apt-get update www.2cto.com
系统升级:apt-get upgrade
安装deb软件包:dpkg -i pkgname.deb
删除deb软件包: dpkg -r pkgname.deb

*******************************

安装Tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。

代码仓库
https://github.com/alibaba/tengine

最新下载地址
http://tengine.taobao.org/download_cn.html

1) 将安装包上传至Linux服务器,解压缩,进入安装目录。

解压:tar -zxvf tengine-2.2.0.tar.gz
进入安装目录:cd tengine-2.2.0

2) 安装命令。(查看README文档)
图1
安装Tengine

./configure
make
make install

分别执行上述3条命令,安装成功后显示如图:
图2

3) 启动Nginx

cd /usr/local/nginx
./nginx

4) 查看Nginx启动进程

ps aux|grep nginx

图3

5) 访问根目录下的首页文件
图4

图5:预览访问Nginx服务器