说说 LNMP 面板

宝塔面板是真好用,后来要求手机号,就换成了国际版 aaPanel , 但又看到了一些风言风语,纯手动又不会,而且累,暂时不想用 Docker,就换成了 LNMP 试试  

第一个感受就就简单,看看这个帮助菜单,一眼过去就知道能做什么,简单但又解决了一大堆的问题

关于安装

有提供懒人一键安装包,不知道什么原因,在家里和VPS上用编译安装都失败了,二进制安装挻好,小机玩玩就好

常用的一些目录

是一些我用到的目录 ,以及一些默认的配置,记录一下

  • nginx 配置文件  >>> /usr/local/nginx/conf/vhost/***.conf
  • 默认主机配置文件 >>> /usr/local/nginx/conf/nginx.conf
  • 站点目录>>>  /home/wwwroot  
  • 站点日志文件目录 >>> /home/wwwlogs/
  • 默认权限账户>>>  www:www 

一些碰到的问题

相比使用宝塔时碰到的问题,LNMP的问题真的少,尤记得使用宝塔当时 MySQL 被搞得死活启不来,最后重装的血泪记忆,虽然我也不知道应不应该怪宝塔

默认用户是 www 

当存在不同工具使用同一目录时,得用 sudo -u www -g www --command-- 来指定用户身份启用程序,不然可能存在站点程序无权写入或读取的问题,比如 Aria2 的下载目录FileRun里的目录重叠,如果不使用相同的用户身份启动,那可能发生 FileRun 无法读取或编辑的问题

使用 PHP 的 open_basedir 模块得配置 Nginx 配置文件

我使用FileRun 作为云盘面板,数据目录设置在站点目录之外,需要配置 open_basedir 模块,我尝编辑站点目录下的 .user.ini 文件,将数据目录添加进去,但是不生效,phpinfo 中也确实也认不到这个目录,后来在官方的常见问题里找到了答案,LNMP 1.4 以上需要将 /usr/local/nginx/conf/fastcgi.conf 里的   fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/" 配置注释掉,,然后重启 nginx           

空主机头与恶意解析

LNMP 安装完会有一个默认站点,用来显示一些基本信息,但日常是不用的,所以要隐藏,但 LNMP 并没有闭关站点的功能,只能设置解析保护来达到目的,同时这个方法也是防止其它人恶意解析,或者使用IP直接访问,在nginx 配置文件(/usr/local/nginx/conf/nginx.conf 或者 /usr/local/nginx/conf/vhost/*.yywr.net.conf )中添加下列示例配置:

# Start: Set Allow Domain Can Access/
server {
  listen 80 default_server;    
  # Set default server
  server_name _;
  return 444;
  # OR 500 403,建议开始的时候使用 500,这样一访问就知道有没有生效
  # 注意注释必须另起一行,不能跟进在配置项后面
}

server {
        listen 443 default_server;
        server_name _;
        access_log off;
	#ssl on; 
	#Don't need set this option after nginx 1.15.0
        #For Https, Need set certificate and key
        ssl_certificate /etc/letsencrypt/live/yywr.net/fullchain.pem ;
        ssl_certificate_key /etc/letsencrypt/live/yywr.net/privkey.pem ;
        return 444;
        }
# End:Set only Allow Domain Can access /

设置完之后,只有绑定的域名才能访问,使用 IP 或者恶意解析的域名访问会返回我们设定的代码

但是对于我这样的新手,还需要注意几点:

  1. 示例中的 server 配置块是添加到站点 nginx 配置文件中的,而不是修改原来的
  2. LNMP 的空主机头(即默认站点)的  server 块中的 default_server 需要去掉,会报重复配置
    listen 80 default_server reuseport; >>> listen 80 reuseport;
  3. 针对每个端口,只需要配置一次就行了
    比如我在家里的机器上,每个站点使用 [相同的域名+不同的端口] 来访问,这就需要为每个站点端口都配置这个设置
    但在VPS上,每个站点都使用 [不同域名+相同的端口] 来访问( 80 和 443 ),那只配置两个就行了,而且只要配置在一个配置文件上就可以,默认的nginx 配置文件(  /usr/local/nginx/conf/nginx.conf )  引用了所有 vhost 站点 的配置文件,如果重复添加,nginx 根本无法重载配置,会报配置重复

配置文件的注释需要单独占一行

由于是第一个正儿八经的手动修改 ngnix 配置文件,在设置空主机头的时候发现怎么都不生效,后来在使用 nano 修改配置时发现一个情况,怎么有些注释不是彩色的,这才发现这些配置文件里的注释不能跟在配置项目后面,必须另起一行,不然这行配置就失效了,不看文档瞎搞的新手就是这么走的弯路,也幸好 nano 默认了一些彩色显示,cat 就没有   

教训与忠告

在操作某些需要很长时间才能完成的工作时,记得使用 nohup 或者 screen ,我在 VPS 将MySQL 升级安装为 MariaDB 时,LNMP给的方法默认是使用编译安装,当时在公司,在手机上的 Termux 使用 SSH 连过去跑了几个小时,到了 90%+,然后断连了,感受到了恶意,还好能退回 MySQL,当时傻得都忘记了截屏

参考:

  • 手把手地教添加站点    >>>  https://blog.csdn.net/qq_28616789/article/details/79266249
  • open_basedir 防跨目录设置 >>>  https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini
  • 官方常见问题 >>>  https://www.lnmp.org/faq.html
  • 恶意解析到网站的解决方法 >>> https://bbs.vpser.net/thread-1794-1-1.html

本文是 居家服务器折腾笔记 的一部分

5 thoughts on “说说 LNMP 面板”

  1. LNMP以前用过,也手动安装过,后来有bt就懒得折腾,但国内好工具都是开头好,后来就广告,再后来就zc绑架(如现在的手机必需),暂时用老版本bt和国际版,估计也坚持不了多久,所以以后可能还得LNMP或者OneinStack

    1. 我也是刚好换VPS,然后也想把家里的服务器系统再搞一次,所以试试一直知道但没试过的 LNMP,不然还是宝塔供着,确实是方便,一站式全搞定,打命令很烦的,尤其出现问题还搞不定的时候。。。

Leave a Reply

Your email address will not be published. Required fields are marked *