分类 服务器 下的文章

Node.js中文网 http://nodejs.cn/

选择适合自己系统的安装包,复制安装包链接地址

以最新版本为例

cd /usr/local  //进入安装目录
wget https://npm.taobao.org/mirrors/node/v16.11.1/node-v16.11.1-linux-x64.tar.xz  //获取压缩包
tar -xvzf node-v16.11.1-linux-x64.tar.xz //解压缩
mv node-v10.15.3-linux-x64 node  // 修改解压包名称
ln -s /usr/local/node/bin/node /usr/bin/node  --加入node命令软链到环境变量
ln -s /usr/local/node/bin/npm /usr/bin/npm  --包管理工具npm软链到环境变量

如果你觉得npm慢的话,可以安装cnpm

npm install cnpm -g --registry=https://registry.npm.taobao.org

配置node文件安装路径

cd /usr/local/node
mkdir node_global
mkdir node_cache
npm config set prefix 'node_global'
npm config set prefix 'node_cache'

众所周知,操作系统的cache和buff机制极大的提升了系统运行效率,
cache是介于cpu和内存之间的缓冲区,主要用于读缓冲,
buff是介于硬盘和内存之间的缓存区,主要用于写缓存,
然鹅,如果cache和buff占用的内存过高也会影响系统运行速度,
我们可以通过以下命令查看缓存占用情况

free -mh

如下图,该操作系统总内存1.8G,缓存就占了1.4G
WX20210902-092355.png

执行以下命令清理缓存空间

echo 3 > /proc/sys/vm/drop_caches

以下是清理完后的状况
2.png

缓存就降到了251M

在服务器中,一个应用程序只要接收到请求就会产生日志记录,日积月累,会占用很多磁盘空间,也不利于日志跟踪。
很多人会自己写sh脚本定时执行去手动分割日志,其实linux本身自带了一个日志分割轮替神器,就是logrotate。
不需要添加定时脚本,也不需要编写维护sh脚本,只需简单几个配置,就可以实现日志分割轮替。

编辑配置文件 vim /etc/logrotate.conf

weekly --时间参数 weekly按周、yearly按年、monthly按月、daily按日
rotate 4  --转存保留多少份日志
create  --指定转存日志权限
dateext
include /etc/logrotate.d
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}
/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

nignx日志分割,新增 /etc/logrotate.d/nginx 文件
vim /etc/logrotate.d/nginx
新增一下内容

/usr/local/nginx/logs/*.log {
       daily  #每日轮替
       rotate 7  #保留7个日志文件
       compress  #对日志进行压缩
       missingok  #如果日志不存在,则忽略改日志的警告信息
       dateext  #使用日期作为日志轮替文件的后缀
       notifempty #如果日志为空文件,则不进行日志轮替
        sharedscripts  #所有文件分割后在执行后面的脚本
        postrotate #脚本开始标识
         kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
        endscript #脚本结束标识
}

如果是version 2 以上的版本 postrotate/endscript 可以换为

/usr/local/nginx/logs/*.log {
       daily  #每日轮替
       rotate 7  #保留7个日志文件
       compress  #对日志进行压缩
       missingok  #如果日志不存在,则忽略改日志的警告信息
       dateext  #使用日期作为日志轮替文件的后缀
       notifempty #如果日志为空文件,则不进行日志轮替
       copytruncate # 把原日志文件拷贝一份重命名,然后清空原始文件
}