宝塔面板是真好用,后来要求手机号,就换成了国际版 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 或者恶意解析的域名访问会返回我们设定的代码
但是对于我这样的新手,还需要注意几点:
- 示例中的 server 配置块是添加到站点 nginx 配置文件中的,而不是修改原来的
- LNMP 的空主机头(即默认站点)的 server 块中的 default_server 需要去掉,会报重复配置
listen 80 default_server reuseport;
>>>listen 80 reuseport;
- 针对每个端口,只需要配置一次就行了
比如我在家里的机器上,每个站点使用 [相同的域名+不同的端口] 来访问,这就需要为每个站点端口都配置这个设置
但在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
本文是 居家服务器折腾笔记 的一部分
LNMP以前用过,也手动安装过,后来有bt就懒得折腾,但国内好工具都是开头好,后来就广告,再后来就zc绑架(如现在的手机必需),暂时用老版本bt和国际版,估计也坚持不了多久,所以以后可能还得LNMP或者OneinStack
我也是刚好换VPS,然后也想把家里的服务器系统再搞一次,所以试试一直知道但没试过的 LNMP,不然还是宝塔供着,确实是方便,一站式全搞定,打命令很烦的,尤其出现问题还搞不定的时候。。。