CentOS 7 FAQ
本来一直用的 ArchLinux,不过 Arch 其实不适合作为服务器使用,因为其滚动更新的特性使得服务器不稳定。
CentOS 如何安装最新版本的 GCC 编译器
默认没做任何设置的情况下,yum 安装的 GCC 版本比较陈旧。如果想安装较新的版本,需要如下操作:
GCC 4.9 安装
sh
yum install centos-release-scl -y
yum install devtoolset-3-toolchain -y
scl enable devtoolset-3 bash
gcc -v
GCC 5.2 安装
sh
yum install centos-release-scl -y
yum install devtoolset-4-toolchain -y
scl enable devtoolset-4 bash
gcc --version
Centos7 安装完毕后无法联网的解决方法
进入目录:
/etc/sysconfig/network-scripts/
ls 命令查看网卡配置文件名(在 CENTOS7 中网卡名貌似变成了随机数字,所以每台机器的网卡名并不相同)
比如:ifcfg-enoxxxxxx
将最后一行的 ONBOOT=no 改为 ONBOOT=yes, 如图 最后输入:wq 保存并退出,再重启一下 network:
service network restart
如何增加桌面环境
KDE
sh
yum groupinstall "KDE Plasma Workspaces"
GNOME
sh
yum groupinstall "GNOME Desktop"
启动(基于 systemd)
sh
systemctl get-default
systemctl set-default graphical.target
Yum 和 RPM 常用命令备忘录
yum history
sh
yum history
yum history list <ID>
yum history info <ID>
yum history undo <ID>
yum history redo <ID>
yum update
sh
yum clean all
yum makecache
yum update
rpm 安装卸载
sh
rpm -ivh *.rpm
rpm -qa
rpm -qa|grep *
rpm -e *
rpm -e * --nodeps
如何从 Yum 库下载 rpm 包但不安装
方法一:yum
sh
sudo yum install --downloadonly <package-name>
默认情况下,一个下载的 RPM 包会保存在下面的目录中: /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages
以上的 [repository]
表示下载包的来源仓库的名称(例如:base、fedora、updates)
如果你想要将一个包下载到一个指定的目录(如 /tmp):
sh
sudo yum install --downloadonly --downloaddir=/tmp <package-name>
注意,如果下载的包包含了任何没有满足的依赖关系,yum 将会把所有的依赖关系包下载,但是都不会被安装。 另外一个重要的事情是,在 CentOS/RHEL 6
或更早期的版本中,你需要安装一个单独 yum 插件(名称为 yum-plugin-downloadonly
) 才能使用 --downloadonly
命令选项:
sh
sudo yum install yum-plugin-downloadonly
如果没有该插件,你会在使用 yum 时得到以下错误:
Command line error: no such option: --downloadonly
方法二:Yumdownloader
另外一个下载 RPM 包的方法就是通过一个专门的包下载工具 --yumdownloader。 这个工具是 yum 工具包(包含了用来进行 yum 包管理的帮助工具套件) 的子集。
sh
sudo yum install yum-utils
下载一个 RPM 包:
sh
sudo yumdownloader <package-name>
下载的包会被保存在当前目录中。你需要使用 root 权限,因为 yumdownloader 会在下载过程中更新包索引文件。与 yum 命令不同的是,任何依赖包不会被下载。
下载 lsof 示例:
sh
sudo yumdownloader lsof --resolve --destdir=/data/mydepot/
--resolve
表示为下载依赖
CentOS Samba 服务器配置
Samba 是 SMB 的一种实现方法,主要用来实现 Linux 系统的文件和打印服务。Linux 用户通过配置使用 Samba 服务器可以实现与 Windows 用户的资源共享。守护进程 smbd 和 nmbd 是 Samba 的核心,在全部时间内运行。nmbd 程序使得通过企图计算机可以浏览 Linux 服务器。
一、安装前准备
1、 使用 Samba 服务器需要防火墙开放以下端口
sh
UDP 137 UDP 138 TCP 139 TCP 445
## 配置防火墙端口
sh
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
## 重启防火墙,使规则生效
/etc/rc.d/init.d/iptables restart
2、关闭 CentOS6 系统的 SELinux
sh
vi /etc/selinux/config
## SELINUX=enforcing #注释掉
## SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
## :wq 保存。
## 重启系统
shutdown -r now 或者 init 6
二、安装 Samba
1 、检查 Samba 服务包是否已安装
sh
rpm -qa | grep samba
samba-3.5.4-68.el6.x86_64
samba-common-3.5.4-68.el6.x86_64
samba-client-3.5.4-68.el6.x86_64
samba4-libs-4.0.0-23.alpha11.el6.x86_64
samba-winbind-clients-3.5.4-68.el6.x86_64
说明 samba 已经安装,如果没有安装,运行下面命令安装
sh
[root@ www ~] yum install samba
2、配置 samba
sh
chkconfig smb on ## 设置 Samba 开机自动启动
service smb start ## 启动 Samba 服务
/etc/init.d/smb restart ## 重启
/etc/init.d/smb stop ## 停止
cp /etc/samba/smb.conf /etc/samba/bak_smb.conf_bak ## 备份
cp /etc/samba/bak_smb.conf_bak /etc/samba/smb.conf ## 恢复
vi /etc/samba/smb.conf
sh
[global] ## 找到这一行(全局设置标签),在此行下面添加如下行:
workgroup = WORKGROUP ## 工作组名称改为 Windows 网络所定义的工作组名
server string = Samba Server ## 设置 samba 服务器的主机名称
security = user ## 设置 samba 服务器安全级别为 user,即以账号和口令访问
netbios name = SambaServer ## 设置 Samba 服务器访问别名
#在配置文件的末尾添加以下自定义内容
[SambaServer] ## 在 Windows 网上邻居中看到的共享目录的名字
comment = SambaServer ## 在 Windows 网上邻居中看到的共享目录的备注信息
path = /home/SambaServer ## 共享目录在系统中的位置
public = no ## 不公开目录
writable = yes ## 共享目录可以读写
valid users=SambaServer ## 只允许 SambaServer 用户访问
## 保存配置
3、添加访问 linux 共享目录的账号 SambaServer
用户家目录为 /home/SambaServer, 用户登录终端设为 /bin/false(即使之不能登录系统)
sh
mkdir -p /home/SambaServer #建立 SambaServer 文件夹
cd /home/SambaServer
touch samba.txt #创建测试文件 samba.txt
useradd SambaServer -d /home/SambaServer -s /bin/false
chown SambaServer:SambaServer /home/SambaServer -R
4、将用户 SambaServer 添加入到 Samba 用户数据库,并设置登录共享目录的密码为:123456
sh
smbpasswd -a SambaServer
New SMB password: ## 输入该用户用于登录 Samba 的密码
Retype new SMB password: ## 再次确认输入该密码
Added user SambaServer.
## 备注:这里设置的密码是 SambaServer 用户登录该机的 Samba 共享的密码,非登陆 OS 的密码;
5、重启 Samba 服务器
sh
/etc/init.d/smb restart
6、浏览共享信息 在 Windows 客户端输入 \\ip
或者 \\SambaServer
服务器别名
回车之后,会跳出来登录框,输入账号 SambaServer , 密码 123456 , 即可访问共享目录
至此,CentOS 6 linux samba 服务器配置完成。
服务名:smb 配置目录:/etc/sabma/
主配置文件:/etc/sabma/smb.conf
问题: 如果无法访问共享目录的内容,请把防火墙停止;
sh
service iptables stop
「RPM」Error in PREUN scriptlet … file was supposed to be removed but is not
Sometimes a yum/RPM package would get “stuck” and just won’t go away. Actually usually the package is already gone but yum/rpm fails to update it’s internal DB and still thinks it is there.
The error one usually sees in such cases is something like:
sh
Error in PREUN scriptlet in rpm package stlinux23-sh4_uclibc-which
stlinux23-sh4_uclibc-which-2.16-5.sh4_uclibc was supposed to be removed but is not!
So in my case the package stlinux23-sh4_uclibc-which-2.16-5.sh4_uclibc is causing problems, it will be soemthing different in your case
To fix the problem run:
yum --setopt=tsflags=noscripts remove stlinux23-sh4_uclibc-which.sh4_uclibc
You can add more than one package file to the end of the command.
「Java」org.quartz.SchedulerException: Couldn't get host name!
<https://blog.csdn.net/Lumia10200/article/details/52670231 >
使用 quartz 做集群任务的时候,在本地和测试环境正常,部署上线的时候, 启动异常:org.quartz.SchedulerException: Couldn't get host name!
这个是 org.quartz.simpl.SimpleInstanceIdGenerator 中获取主机名异常了
java
public class SimpleInstanceIdGenerator implements InstanceIdGenerator {
public String generateInstanceId() throws SchedulerException {
try {
return InetAddress.getLocalHost().getHostName() + System.currentTimeMillis();
} catch (Exception e) {
throw new SchedulerException("Couldn't get host name!", e);
}
}
}
处理方法:
进入线上环境(centOs6.x):
1, 查看主机名(命令) : hostname
2, 打开 hosts 文件: vi /etc/hosts
查看是否有乱码等异常内容
3, 确保有: 127.0.0.1 后跟上面用 hostname 命令查看到的主机名, 如果没有则加上
如 : hostname -> USER-1234
则: 127.0.0.1 USER-1234
程序正常, 定时任务正常