Linux VPS建站工具LNMP 1.4安装与使用-SSL自动配置续期和多版本PHP支持

很多人害怕用Linux VPS建站的原因,不外乎两个原因:一个是不知道如何使用Linux,第二个就是习惯了使用面板管理。但是从部落自己的建站经验来看,VPS建站最好还是不要用面板,使用LNMP这类的一键安装包定制性和实用性更强。

与自己配置Web环境不同的是,LNMP一键安装包差不多就是一个集成工具了,只要使用几行命令就可以快速搭建Nginx/MySQL/PHP/Apache。不会Linux的站长或Linux新手想使用Linux作为生产环境,建议前期花一点学习一下命令,后面维护就简单了。

本文要分享的LNMP一键安装包来自lnmp.org,建站的朋友都应该听过或者使用过它,基本上lnmp.org已经成为了LNMP代名词,稳定且不断更新。目前LNMP 1.4增加了PHP 7 和多PHP版本共存、Let’s Encrypt自动部署与续期、http2支持等几个亮点。

Linux VPS建站工具LNMP 1.4安装与使用-SSL自动配置续期和多版本PHP支持

更多的关于服务器、邮件邮件和建站经验方面的,可以看看:

  1. 利用MailChimp建立RSS邮件订阅平台-每月免费12000封邮件可加2000用户
  2. 服务器虚拟化面板SolusVM安装与使用-支持新建管理OpenVZ, KVM和Xen VPS
  3. 再见-那段8年的部落之旅,你好-即将开始未知的坚持:挖站否?

一、LNMP 1.4快速安装方法

LNMP一键安装包是一个用Linux Shell编写的可以为CentOS、Debian、Ubuntu、Raspbian或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生产环境的Shell程序。

1.1  LNMP 1.4安装要求

LNMP 1.4官网:https://lnmp.org/,每年的6月1号会进行一次大的版本升级,大家可以关注官网的动态。

LNMP 1.4安装主要有以下几点注意事项:

需要5GB以上硬盘剩余空间 。

需要128MB以上内存(如果为128MB的小内存VPS,Xen的需要有SWAP,OpenVZ的至少要有128MB以上的vSWAP或突发内存)。

安装MySQL 5.6或5.7及MariaDB 10必须1G以上内存。

1.2  LNMP 1.4安装命令

LNMP 1.4安装命令其实只有几行,大部分时间都交由脚本自动下载与配置,命令如下:

screen -S lnmp
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp

注意:默认安装lnmp可不写,如需要安装LNMPA或LAMP,将./install.sh 后面的参数替换为lnmpa或lamp即可。如需更改网站和数据库目录先修改安装包目录下的 lnmp.conf 文件。

1.3   LNMP 1.4安装过程

运行LNMP 1.4一键安装时,首先会要你选择MysqL版本和设置一个MysqL密码。

Linux VPS选择MysqL版本

然后是问你要不要安装PHP,以及数PHP本号。如果你的程序兼容最新的,请选择7.0和7.1以上,因为根据测试7.0以上的PHP性能有质的提升。

Linux VPS选择PHP版本

最后就是耐心地等待LNMP 1.4安装完成了,耗时至少要半个小时以上。安装完成后,当你看到如下界面就表示已经成功了。

Linux VPS成功安装

打开你的IP地址,你就可以看到LNMP默认的首页了。该页面已经有了探针、PHPmyAdmin、扩展组件等链接,你可以直接点击查看。

Linux VPS默认页面

二、LNMP 1.4管理网站与SSL证书

LNMP 1.4配置SSL是在创建网站时自动申请Let’s Encrypt证书并配置的,所以如果你打算使用SSL证书的话建议你在创建网站时就申请好。当然,如果在创建网站时忘记了,你也可以自己修改Nginx代码,这个稍后再讲。

2.1  LNMP 1.4创建网站

首先你需要进入到LNMP解压目录中,因为这些命令都在这个目录当中。然后执行命令:lnmp vhost add。接下来会要你绑定网站域名、网站根目录(可以直接回车)、URL重写规则(默认有WP、DZ可选)、以及是否开启日志。

LNMP 1.4添加主机

2.2  LNMP 1.4自动安装SSL

要想让LNMP 1.4自动安装Let’s Encrypt证书,你需要先将自己的域名解析到你的VPS主机。

LNMP 1.4先解析好域名

然后回到刚刚创建网站的界面,设置数据库名称和用户名、密码,在是否设置SSL证书时选择是,然后选择Let’s Encrypt证书。

LNMP 1.4添加SSL证书

稍等一会儿,LNMP 1.4就已经自动创建好了网站,同时也自动部署好了SSL证书了。

LNMP 1.4自动部署证书

用浏览器打开域名,你就可以看到域名已经成功访问并上了SSL证书了。

LNMP 1.4正常访问

三、安装memcached等附加组件

LNMP 1.4默认的并没有安装memcached等缓存,我们需要自己手动安装。执行命令:./addons.sh,然后你就可以eAccelerator、 XCache、Memcached、opcache、Redis、apcu、imageMagick、 ionCube Loader等共8个附加组件可以一键安装。

LNMP 1.4安装附加组件

安装好了后,你就可以在LNMP探针中查看是否已经成功。

LNMP 1.4探针显示成功

opcache安装成功后,LNMP已经有了一个网页查看工具,打开IP+ocp.php,你就可以看到自己的opcache缓存情况了。opcache是PHP官方的缓存插件,建议安装PHP 7以上的配备,效果非常好

LNMP 1.4查看缓存情况

如果来查看memcached是否成功使用呢?一个方法就是下载一个memcached网页工具:http://pecl.php.net/get/memcache-3.0.8.tgz,备用:https://www.ucblog.net/memcache-3.0.8.tgz。解决找到memcache.php这个文件,然后打开修改登录名与密码,同时添加127.0.0.1服务器,把其它的服务器注释掉。

LNMP 1.4修改代码

将memcache.php文件上传到你的网站根目录,接着用浏览器打开访问,输入你账号设置的账号与密码,这时你就可以直观看到自己的网站的memcached是否已经启用,memcached缓存的命中率是多少,也可以在线重置memcached缓存。(点击放大)

LNMP 1.4查看memcached

另一个方法就是直接使用命令查看。输入:telnet 127.0.0.1 11211,看如下图时再输入:stats,就可以进入到memcached连接了。

LNMP 1.4直接用命令查看

命令会详细列出memcached的信息,包括了总缓存大小,已经命中次数,未命中次数,你只需要将已命中次数除以总缓存大小得到的结果就是memcached命中率了。相关说明如下:

STAT pid 22972
STAT uptime 709
STAT time 1497577962
STAT version 1.4.36
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 0.200000
STAT rusage_system 0.084000
STAT curr_connections 5
STAT total_connections 13
STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 5 #总共获取次数
STAT cmd_set 3
STAT cmd_flush 1
STAT cmd_touch 0
STAT get_hits 3  #已命中次数
STAT get_misses 2 #没有命中次数
STAT get_expired 0
STAT get_flushed 1
STAT delete_misses 0
STAT delete_hits 1
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 305
STAT bytes_written 8111
STAT limit_maxbytes 67108864  #缓存大小
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 0  #当前使用多少缓存
STAT curr_items 0
STAT total_items 3
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0

使用此命令可以清空缓存:stats reset。要退出 telnet,输入组合键 Ctrl+] 出现telnet>,然后输入 q 即可退出。

四、LNMP 1.4建站的几个问题

LNMP 1.4的安装包里会一个Tools工具,这里有备份脚本 backup.sh,nginx日志切割脚本 cut_nginx_logs.sh,SSH防护安装脚本denyhosts.sh 和 fail2ban.sh,MySQL/MariaDB root密码重装工具 reset_mysql_root_password.sh及PHP函数辅助删除工具 remove_disable_function.sh。

LNMP 1.4工具包

4.1  网站文件与数据库备份

打开backup.sh,然后修改你要备份的网站路径,支持添加多个网站,目录用双引号括起来,多个目录空格隔开。要备份数据库的话,把数据库的名称还有Root的密码填写进去。mysqldump路径保持不变,如果是mariadb替换/usr/local/mysql为/usr/local/mariadb。

LNMP 1.4修改路径

修改好了后,重新上传backup.sh,然后进入该目录执行命令:./backup.sh,即实现手动备份。

LNMP 1.4开始备份

如果你想实现定时备份,你需要将该路径下的命令添加到定时任务中,执行:crontab -e,输入以下命令保存表示每天凌晨1点开始自动备份:

00 01 * * * /bin/bash /root/lnmp1.4/tools/backup.sh 

4.2  日志切割并自动删除日志

如果你开启了日志,那么随着时间的推移,你的日志文件会越来越大,有的甚至可以达到几十个GB,这很容易占用大量的服务器空间。LNMP 1.4有日志切割工具,自动把每天的日志按照时间划分,并设置过期时间自动删除日志。

打开cut_nginx_logs.sh,编辑你要切割的日志名称,保存再次上传。

LNMP 1.4切割日志

执行:crontab -e,输入以下命令保存表示每天凌晨2点开始自动切割日志。

00 02 * * * /bin/bash /root/lnmp1.4/tools/cut_nginx_logs.sh

日志会按照日期来分类的,默认的是过期3天,3天后会自动删除日志。你也可以自己设置好保留的时间

LNMP 1.4日志分类

4.3  LNMP 1.4 PHP多版本

多PHP版本只支持LNMP模式,LNMPA、LAMP模式下不支持。要使用多PHP先安装多PHP版本,在lnmp1.4源码目录下运行:./install.sh mphp,然后选择你要安装的PHP版本就好了。

LNMP 1.4 多PHP版本

已安装好多PHP版本的话,lnmp vhost add 时会在设置完日志名称后提示当前已经存在的PHP版本,按提示的数字选择就可以。如果已经存在的虚拟主机要更改PHP为指定版本需要修改虚拟主机的配置文件。

配置文件为 /usr/local/nginx/conf/vhost/域名.conf ,将里面的include enable-php.conf; 替换为 include enable-php7.1.conf; 前面的7.1为php版本,可以根据自己的需要进行修改,但必须要对应的多php版本已经安装,要不然会提示502错误。

4.4  LNMP 1.4 做301跳转

强制http跳转到Https。默认,LNMP并没有自动配置好Http跳转到Https,你只需要进入:/usr/local/nginx/conf/vhost/域名.conf,打开域名配置文件,添加以下代码在listen 80那个server代码段中。

if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

如下图:

LNMP 1.4_添加301代码

强制www跳转到非www。不想使用www这样的域名,你可以强制将www跳转到非www上,同上在域名配置文件listen 443那个server代码添加以下代码:

if ($host != wzfou.com) {
    rewrite ^/(.*)$ $scheme://wzfou.com/$1 permanent;
    }

这里给出我的LNMP的域名配置文件,你可以参考此代码手动添加自己的SSL证书,或者设置301跳转。

server
    {
        listen 80;
        #listen [::]:80;
        server_name wzfou.com www.wzfou.com ;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/lnmp14.freehao123.info;

        include wordpress.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;
        if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/lnmp14.freehao123.info.log;
    }

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name wzfou.com www.wzfou.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/lnmp14.freehao123.info;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/lnmp14.freehao123.info/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/lnmp14.freehao123.info/privkey.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

        include wordpress.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;
        if ($host != wzfou.com) {
        rewrite ^/(.*)$ $scheme://wzfou.com/$1 permanent;
         }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/lnmp14.freehao123.info.log;
    }

五、 总结

LNMP 1.4是一个快速搭建PHP\MysqL\Nginx的好工具,虽然说LNMP 1.4支持安装Apache,还可以选择LAMP和LNMPA模式,但是经过我的测试,还是选择LNMP模式无论是后期维护还是优化升级都要好一些。

LNMP 1.4支持的缓存插件很多,但是建议你不要安装太多的缓存插件,只选择一个就好。PHPMyAdmin目录强烈建议将此目录重命名为其不容易猜到的名字,phpmyadmin可自己从官网下载新版替换。

文章出自:挖站否 https://wzfou.com/lnmp-1-4/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。


分享到:
Avatar for Qi
关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。
已有 27 条评论
  1. Avatar for 梦寒 梦寒

    network error:software caused connection abort 哈哈哈 竟然又失败

    2018年2月8日 23:11 回复
    • Avatar for Qi Qi

      国内的VPS?

      2018年2月10日 12:17 回复
      • 恩!香港的!只有安装面板成功过,装其他的,装到一半都显示这个英文断开连接

        2018年2月10日 13:46 回复
  2. 很久没折腾vps了,20G硬盘是不是重装centos系统后实际只有10G硬盘使用,还剩10G需要挂载啊! 🙁

    2018年2月5日 10:27 回复
    • Avatar for Qi Qi

      嗯,安装后基本上就是这样了。

      2018年2月5日 17:33 回复
      • Avatar for 梦寒 梦寒

        我每次安装这个都卡在 等待LNMP 1.4安装完成 等了一个小时都没反应

        2018年2月8日 21:13 回复
  3. Avatar for 随心所欲 随心所欲

    博主一般都是自己编译安装Nginx的吗?还是选择LNMP一键安装呢?

    2017年10月21日 13:57 回复
    • Avatar for Qi Qi

      都是用的一键安装包,方便些。

      2017年10月22日 12:34 回复
  4. Avatar for Jo Jo

    非常nice,博主可以写个在Linux运行EXE程序的教程么,网上找的用wine基本都不行啊

    2017年6月26日 04:26 回复
    • Avatar for Qi Qi

      要在Linux跑Windows程序只能选择Wine,经过测试大部分程序如QQ等都是可以运行的。博主为什么不安装一个Windows系统?Linux与Windows也是可以双系统的。

      2017年6月26日 10:53 回复
      • Avatar for Jo Jo

        在VPS上的,只能Linux

        2017年6月26日 19:07 回复
  5. 还是这么详细的风格。我比较烦缓存,所以一直没装任何缓存。阿里云香港的速度还可以。

    2017年6月21日 22:12来自iPhone 回复
  6. lnmp对于内存小的服务器运行网站挺合适的
    对了,站长的静态档案切换到又拍CDN的二级网域了,载入的速度很快

    2017年6月21日 07:44 回复
    • Avatar for Qi Qi

      是呀,之前用了七牛的,后来发现七牛不是用的Http 2.于是换成又拍了,虽然又拍贵一些,但是操作方面还是可以,修改什么配置都是立即生效。

      2017年6月21日 09:04 回复
      • 又拍后台管理确实比七牛完善很多,去年也换到又拍了,流量不多,又拍联盟送的券也没用完。

        2017年6月21日 09:12 回复
      • 七牛麻烦在于融合云之间的配合速度太慢了,不如又拍云自建节点来的有弹性,
        而且HTTP/2对于性能加速来说效果显著,特别是网页元素请求多的时候非常快

        2017年6月21日 22:00 回复
        • Avatar for Qi Qi

          博主每次的评论都要进入到审核序列,很奇怪。七牛价格便宜,可能是用了第三方的CDN,在配置方面生效特别慢。HTTP/2貌似对速度提升有帮助。参考七牛的Http1.0

          2017年6月21日 22:03 回复
  7. 很好,学习了😊😊😊

    2017年6月20日 23:17来自移动端 回复
  8. 坐等OneinStack放大招,哈哈😄

    2017年6月20日 18:43 回复
  9. 因为上次博主去我博客留了一个言,让我终于下决心解决了早就该解决的一个我博客的问题,感谢! 😀

    2017年6月20日 15:40 回复
    • Avatar for Qi Qi

      我使用的过程中,发现国外的空间可能无法连接到腾讯的服务器,从而导致无法发送邮件。

      2017年6月21日 09:09 回复
      • 因为以前我都用插件,而且这种小功能,完全没注意到这些,总的来说还是经验不足,以前看部落的文章看得太少。

        2017年6月21日 09:30 回复
        • Avatar for Qi Qi

          我现在也懒了,不想改代码,只想用插件,现在博客装好二十来个。找机会我再给他们瘦身。

          2017年6月21日 10:56 回复
  10. 很详细的一篇教程,以后玩vps的时候试试不用面板。

    2017年6月20日 10:42 回复
  11. 小内存和小空间都不可能流畅运行 mysql5.7,还是安心用5.6

    2017年6月20日 00:44 回复
    • Avatar for Qi Qi

      小内存的话还是老版本吧。

      2017年6月20日 08:37 回复
  12. 前排支持

    2017年6月19日 22:24 回复