标签 LNMP 下的所有文章

LNMP环境下的网站运维经验分享,主攻基于WordPress的网站开发,所以基本都是结合MySQL的优化、排错等运维经验。

使用GoAccess分析Nginx日志,LNMP环境安装部署最快步骤

使用Nginx的服务器进程会碰到流量异常,被各种扫描的现象。这时候我们就需要对服务器的访问日志进行分析,我的一台LNMP服务器Nginx日志为/home/wwwlogs/access.log,有100多M,文本打开后基本不能用肉眼看到多少有效信息,需要一款日志分析工具的帮助,最好能有图表化功能。目前开发者推荐最多的日志分析工具是GoAccess,这里记录一下安装和部署步骤。

首先跑去 GoAccess官方 找到最新版和安装方法
登录服务器,运行以下命令:
$ wget https://tar.goaccess.io/goaccess-1.5.6.tar.gz
$ tar -xzvf goaccess-1.5.6.tar.gz
$ cd goaccess-1.5.6/
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install

查看详细 »

LNMP1.7更新Let’s Encrypt SSL证书失败的解决方法

最近发现去年安装LNMP1.7的两台云主机,无论是自动续期还是手动输入命令安装Let’s Encrypt SSL证书都不成功。输入lnmp ssl add命令后按提示操作,报错信息是这样的:

搜了一遍网络,原因应该是这个 https://github.com/acmesh-official/acme.sh/wiki/Change-default-CA-to-ZeroSSL

解决方式是运行以下命令后再安装证书即可:

#如果是LNMP1.6版本需要先升级,再执行后面的命令
/usr/local/acme.sh/acme.sh --upgrade

#LNMP1.7直接运行此条命令
/usr/local/acme.sh/acme.sh --set-default-ca --server letsencrypt

LNMP安装Jemalloc,配置MySQL内存优化

Jemalloc是一款服务器内存优化组件,在LNMP环境的安装包中可以选择安装。一般来说一台服务器上运行3-5个访问量不大的WordPress网站是绰绰有余的,所以很长一段时间里,我并没有特意研究过服务器内存优化,每次装LNMP的时候会选择不安装。

最近碰到一台服务器内存吃得很厉害,无论怎么调php-fpm配置都降不下来,不时还来个502报错。摆在面前的只有2个选项了,要么服务器升级加内存,要么试试内存优化工具再压榨一下服务器性能。于是抱着尝试心态试试Jemalloc。

安装jemalloc

yum install jemalloc

查看详细 »

LNMP定期自动备份MySQL数据库到阿里云OSS详细步骤

研究了一下项目运维中自动备份数据库到阿里云OSS的步骤,记录一下阿里云后台和服务器的一系列操作。

阿里云后台准备工作

进入阿里云对象存储OSS后台,先开一个Bucket,命名为“brain-backup-db”。因只是做备份数据库用,所以存储类型选最便宜的“归档存储”即可,其他选项用不着的就都不开。关于费用,本文最后一节会做介绍。
创建OSS Bucket
OSS Bucket列表

然后进入这个Bucket的概览页面,找到外网访问的Endpoint,记录下来。

如果你的ECS和OSS是在同一地区的,也可以根据实际网络情况,这里的Endpoint选第二或第三个,存储速度飞快。特别说明,一般购买阿里云ECS,默认网络是经典网络,也就是说同区域的ECS数据备份到OSS上,大部分情况下可以选绿框圈出的那个;跨区域或者用的是非阿里云ECS服务器的,则选红框圈出的。

查看详细 »

LNMP升级操作记录

近期阿里云的几台主机都到了续费时间,想着续费就顺便都升级一下硬件配置。升级了硬件配置就又免不了想把几台服务器的旧版环境也升级一下,又可以榨取一下性能,本篇就记录一下LNMP升级的操作。

首先我尝试LNMP官网的操作,把LNMP新版直接下载到本地,然后通过运行upgrade1.x-1.7.sh脚本升级。结果直接报错提示我缺少各种包。可能是漏了什么操作了,但是也实在没工夫去深入研究,所以改为尝试卸载旧版LNMP,重新安装新版。

卸载之前系统提示我一定要备份数据库,因为卸载LNMP会把MySQL连同数据都删掉。所以必须先把MySQL数据整个dump出来备份一下。

进入MySQL安装目录/usr/local/mysql/bin/,运行命令
mysqldump -uroot -p --all-databases > /home/backup2020.sql
这样就在home目录下生成了一个backup2020.sql备份文件,卸载LNMP不会把它删掉,可以放心操作后面的。 查看详细 »

LNMP自动生成Let’s Encrypt ssl证书失败问题解决记录

今天在给一个新网站生成SSL证书的时候,系统提示
Couldn't download https://raw.githubusercontent.com/certbot/certbot/v1.5.0/letsencrypt-auto-source/letsencrypt-auto.

搜索了一圈解决方法,提示是certbot这个版本太老,自动升级的那个URL又失效导致的

其实我只是装一个免费证书应该很简单,老的脚本能用就行,根本没必要因为安装脚本不能升级就卡在那里,那么应该只要禁用这个脚本的自动升级,让它不去请求那个已经打不开的URL就行了。根据这个思路,找到lnmp的脚本文件,我这台主机的lnmp版本是1.4,在“/usr/bin/lnmp”下,打开这个文件,找到这一行
/bin/certbot certonly --email ${email} --agree-tos -n --webroot -w ${vhostdir} ${letsdomain}
改成:
/bin/certbot --no-self-upgrade certonly --email ${email} --agree-tos -n --webroot -w ${vhostdir} ${letsdomain}
然后重启一下lnmp,再运行lnmp ssl add命令,这下就成功完成了证书安装

我的LNMP版本较老,当前最新版LNMP1.7没有这个问题。对于使用LNMP配置WordPress环境的用户,一般都建议选择最新版的CentOs镜像,安装最新版LNMP,可最大限度地规避这些过时的兼容问题。

LNMP环境下PHP error日志的分段存储

之前记录过一篇如何建立并查看PHP报错日志的文章,见这里:https://blog.brain1981.com/1824.html

最近治下某个网站遭到攻击,产生了大量的PHP报错日志,甚至大量占用了磁盘空间。PHP日志文件是持续写入的,如果一直生成新的日志,这一个文件就会变得很大,无法打开。我又不想彻底关闭报错日志记录,只能对其进行分段,把每天的日志分为不同文件存储。 查看详细 »

非root用户状态下安装LNMP准备工作

在非root用户登录的情况下,安装LNMP会提示“You must be root to run this script, please use root to install lnmp”。这时候并不一定是当前用户的权限不够,而是lnmp的设定需要由用户名root的用户来安装。

如果操作系统是ubuntu,输入命令行

sudo su

如果当前用户有root权限,提示符就会跳为root@hostname,可以直接安装了。如果没有root权限,则要求输入正确密码。

如果操作系统是centos、fedora,输入命令行

su

其他步骤差不多。

记录一下备忘。

检查LNMP上MySQL宕机并自动重启服务的脚本和使用方式

近期发现服务器上MySQL又经常宕机了,平均每周一次,应该和最近新挂上去的几个WordPress网站有关,毕竟一台配置不算豪华的主机上挂了10个WP网站,压力太大难免会内存不够造成宕机。每次宕机都需要自己重启MySQL也比较麻烦,如果是客户自己发现的,感觉更不好,所以网上找了个无人值守的脚本先用起来。 查看详细 »

解决阿里云用LNMP在某些时候FTP无法使用的问题

今天在咖啡厅办公,发现一台在家里和公司都能正常使用的阿里云主机无法用FTP列目录了,当然上传文件也是不能了,其症状是可以正常登录,但到了列目录的时候就卡住:
解决阿里云用LNMP在某些时候FTP无法使用的问题

碰到这种服务器问题还是只能采用搜索大法,先去LNMP论坛兜了一圈,大致可以确认的是防火墙问题,建议开放端口20000-30000,然后换成被动模式登录。
开放端口命令:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT

照做后发现能列出根目录,但要进入任何子目录后FTP又卡住了,感觉是不是还有另外一道无形的墙把我阻隔了?突然灵光一现,记得阿里云后台有个安全组和iptables有着差不多的作用,那边还没有开放这个端口段,可以一试 查看详细 »