Mariadb 无故宕机

最近有一台VM上的mariadb总是无故crash,在stackoverflow上搜了一下,发现了一些简单的debug方法。

其实对于大部分的mariadb无故crash来说,基本都是内存满了.

1 先检查mariadb状态, 这个不用说大家都会

systemctl status mariadb

2 如果出现了SIGKILL,那基本上都是OOM Killer干掉了, 那你就可以通过如下命令来查看是哪个process被干掉了

dmesg -T | egrep -i 'killed process'

也可以通过下面的命令来查看全部log

dmesg -T | less

 

Stackoverflow上的其他辅助回答:

The first is to look at your configuration for your webserver and the database (and presumably there some application tier in here as well) to ensure that they don’t try to use up more RAM than you have available. Since you didn’t tell us about the application server nor the webserver I can’t really advise (but here’s a hint for pre-fork Apache, optionally with PHP). As for Mariadb – go get a copy of mysqltuner.pl and run it against your installation.

That should prevent you running out of memory most of the time, but you should also reduce the amount of non-existent memory the kernel will hand out:

sysctl vm.overcommit_memory=2
sysctl vm.overcommit_ratio=20

and try lower values for the ratio if you are still seeing OOM killer.

 

Zabbix 5.0 LTS 安装时几个需要关注的点

从Zabbix 5.0 LTS 以上,需要的php 版本为7.2及以上. Centos 7 默认的php 还都是5.4,所以为了省事方便以及简单,以及考虑到性能,

这里建议使用Debian 11, 默认的php版本为7.4

Debian 11 默认的mysql 为mariadb,版本是10.5,已经足够用了,没有必要再去单独添加mariadb 的源,安装10.6甚至10.7的版本

如果你想添加专门的mariadb的源的话,mariadb 官方提供了一个rackspace的源,直接geo到rackspace全球的几个数据中心,非常方便

在安装Zabbix之前,首选需要安装mariadb,直接使用一条命令 apt install mariadb-server 就可以了,他会自动安装mariadb-clients

然后使用mysql_secure_installation设置好mariadb,就可以继续按照zabbix的官方教程去一步步安装zabbix了

Username is not in the sudoers file. This incident will be reported

最近在研究openwrt的编译.

因为openwrt的编译不能使用root用户,所以必须得自己添加一个用户:

adduser openwrt

然后在openwrt用户下使用sudo:

sudo apt update

会报这个错误:

openwrt is not in the sudoers file. This incident will be reported

这是因为openwrt 不在管理组,没有sudo的权限.

解决的办法也很简单,在root用户下把openwrt加入sudo组即可

usermod -aG sudo openwrt 
# a stands for append, G stands for Group, usually use aG together

再或者使用visudo命令,这个命令其实就是编辑/etc/sudoers

往下拉,看到这一行

#User privilege specification

root ALL=(ALL:ALL) ALL

在root的下面添加上自己的用户名:

#User privilege specification

root ALL=(ALL:ALL) ALL

username ALL=(ALL:ALL) ALL

保存退出即可

 

Oracle 云主机默认镜像ubuntu 18.04的坑

开了一台甲骨文的San Jose 数据中心的Cloud VM,默认支持的系统中没有debian,因此退而求其次选择了ubuntu 18.04 minimum.

按照习惯,把SSH端口从22改成了一个其他的端口,但是确发现SSH始终都连不上了.  检查了这个VM的security list,所有的端口都打开了,没有问题,看来问题只能出在ubuntu的默认防火墙上了.

默认的ubuntu 18.04的防火墙是iptables, 默认没有安装ufw,而且oracle 官方也不推荐使用ufw(这是后来才知道的)

可是按照ubuntu/debian的默认安装,防火墙iptables虽然是默认开启的,但是里面没有任何的规则. google了半天才发现原来是Oracle给他的默认的linux 的OS 都写入了默认的规则,路径在/etc/iptables/rules.v4 和rules.v6.

把rules.v4的规则里的两条reject 规则给他comment out,就可以了.

#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited

 

Ubuntu Server安装图形桌面并且开启远程RDP访问

近期有项目需要使用图形桌面来完成,windows server肯定是最好的选择,但是昂贵的授权费用以及不低的硬件配置,让我想到了Ubuntu. Linux 系主要使用centos,debian系虽然也在用,但是确实不熟悉,因此debug确实耗费了不少时间.

主要步骤:

  1. 安装ubuntu 18.04 x64,这个没有什么,直接在你的云服务商上选择就可以了
  2. 安装updates
      apt update
      apt upgrade

3. 安装图形桌面

       apt install ubuntu-desktop

这里不建议使用tasksel来安装,过于复杂,安装时间太长,而且安装了很多没有必要的东西,对于配置低的cloud来说浪费资源,而且tasksel默认安装了很多和xrdp冲突的组件, 我对ubuntu不熟悉,实在没有办法修改

4. 安装xrdp

需要注意的是,ubuntu repo里面的xrdp 的版本有问题,参见这里:

http://c-nergy.be/blog/?p=13390

所以正确步骤是:

apt install xserver-xorg-core
apt install xserver-xorg-input-all
apt install xorgxrdp
apt install xrdp

5. 创建用户远程登录, 这点是和centos不一样的地方,centos 的root 可以干很多事情,debian系的root虽然权限最大,但是很多功能都被锁定了,debian 系推荐的办法是创建一个新的用户,在需要root权限的时候,用sudo提权。假如我们要创建的用户名是ccc,那么步骤是:

adduser ccc(中间会提示你设置密码)
usermod -aG sudo ccc (将ccc加入sudo group, 这样ccc就可以用sudo提权)

 

然后我们就可以用windows的RDP远程登录这台ubuntu服务器了

默认的情况下,这个GUI只有最基本的程序,大部分经常使用的app需要安装,最好是通过command line来安装,比如说安装firefox

apt install firefox

 

 

 

Debian 10 安装配置samba

samba, smb 在IPMI安装OS的时候非常有用,可以实现远程挂载. 对于远程挂载这种服务来说,可以简单配置一下samba就可以实现.

在debian 10 上安装十分的简单:

apt install samba

编辑samba的配置文件:

删掉/etc/samba/smb.conf文件,用下面的内容代替:

[global]
workgroup = WORDGROUP
netbios name = samba
security = user
map to guest = bad user

[share]
comment = Home Directories
path = /samba/share
browsable =yes
writable = no
guest ok =yes
read only = yes

这个表示目录位于/samba/share. 下面重启samba服务并且写入开机自启动服务:

systemctl restart smbd
systemctl enable smbd

十分的简单,这就完成了

需要挂在OS iso文件,直接放入/samba/share下面就可以了