免编译解压即用服务器集成环境 LNSP

in Linux with 0 comment

免编译服务器集成环境 LNSP,Linux+Nginx+PHP(支持 SQLITE3)

  1. LNSP是什么

LNSP (Linux Nginx SQLITE3 PHP),好羞愧 ^_^, LNSP原指:LABORATORY FOR NUCLEAR SECURITY AND POLICY(核安全与政策研究实验室,来自MIT)

LNSP是在Linux上适用的免编译解压即可用的 Nginx+PHP(支持SQLITE3)的服务器架构环境,Nginx版本:1.10.2,PHP版本:5.6.29

  1. 我为什么要做这个集成环境?

apachefriends.org上提供一个服务器集成环境xampp,这个环境之所以好是因为它把我们常用的apache,mysql,php,phpmyadmin,proftpd这些软件集成在一起。安装过程非常简单,不需要编译,环境依赖都给我们搞好了,因此使用非常方便.

虽然原来xampp好用,但在我的实际使用中发现它有几方面的不足:

  1. LNSP 有什么优点
  1. LNSP有什么缺点
  1. 如何部署LNSP

进入到linux下的opt目录,wget http://139.162.117.46/lnsp-x64-1.0.tar.gz,直接解压,然后cd sources执行sh configure.sh即可。

注意1:Ubuntu使用dash作为默认的shell,需要修改成bash,执行dpkg-reconfigure dash,然后选择 no 确定即

注意2: Ubuntu 15.04 x86_64及以后要执行 sh configure-ubuntu-15.04-later.sh

这里configure.sh帮我们做了几件事

  1. 帮我们添加nginx,php-fpm运行时用户,这里指定为www,并修改www用户密码,上站就用www用户操作
  2. 帮我们启动nginx,php-fpm
  3. 帮我们添加开机自动启动脚本

注意:centos 7.x x86_64系统的开机启动变化很大,这里在configure.sh运行之后再执行 chmod +x /etc/rc.d/rc.local 即可设置开机启动

注意: Ubuntu 15.04 x86_64及以后开机启动同样有变化需要手动添加, 经测试在Ubuntu 16.04 x86_64 开机启动脚本在/etc/rc.local中, 需要自己添加启动脚本,内容同Ubuntu 16.10(如下)

Ubuntu 16.10开机启动脚本 /etc下没有rc.local,需要自己先建立rc.local如下

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#start the nginx service
/opt/program/nginx/nginx
#start the php-fpm service
/opt/program/php/sbin/php-fpm

exit 0

然后root下 chown root:root /etc/rc.local chmod 755 /etc/rc.local即可

  1. 如何部署网站

在/opt/htdocs下的文件夹下建立自己的目录如 dealdot,再进入dealdot目录建立网站,如mkdir apple.com,然后在/opt/htdocs下运行 sh make.sh即可绑定虚拟主机

  1. 如何过滤违禁词,敏感词

采用淘宝团队成员开发的模块ngx_http_substitutions_filter_module来实现过滤违禁词,敏感词这里命名为subkeywords.conf,放置在 /opt/program/nginx/conf/下,比如我们网站上用了其它公司的名字,造成侵权之类的,只需要把该公司的名字放到subkeywords.conf里就可以在显示的时候过滤掉.

  1. 启动,停止,重启nginx,php-fpm

启动nginx /opt/program/nginx/nginx

停止nginx /opt/program/nginx/nginx -s stop

重新加载 /opt/program/nginx/nginx -s reload

启动php-fpm /opt/program/php/sbin/php-fpm

停止php-fpm kill -INT PID

平滑重启 kill -USR2 PID

注意: PID为php-fpm运行的master 进程 id,shell下执行: ps aux|grep 'php-fpm: master'|grep -v 'grep' 查看

  1. 配置文件,日志文件

php配置文件php.ini 在/opt/program/php/lib

php-fpm配置文件php-fpm.conf 在/opt/program/php/etc

nginx日志文件在 /opt/program/nginx/logs下,由于access.log长时间会比较占用空间,因此这里默认关闭access_log off;

php-fpm 日志文件在 /opt/program/php/var/log下,默认关闭了php的error log

附上网站不带www的跳到带www, 如 mkdir apple.com

server {
        listen 80;
        server_name www.apple.com apple.com;
        if ($host != 'www.apple.com') {
     rewrite ^/(.*)$ http://www.apple.com/$1 permanent;
    }
        index index.html index.htm index.php default.html default.htm default.php;
        root  /opt/htdocs/example/apple.com;
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
}

  1. 实践中的问题
    如果网站放多了有的时候会提示:nginx: [warn] could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 64; ignoring server_names_hash_bucket_size

这时候修改nginx.conf在http节中加入 server_names_hash_bucket_size 512;
然后/opt/program/nginx/nginx -s reload

评论