前言
1. 服务器及系统版本
文章基于腾讯云服务器Linux CentOS7.9
Linux命令行参考我的文章Linux常用命令V1
2. 为什么重装系统
腾讯云刚买的时候安全组默认全开,防火墙默认关闭
我操作redis的时候没设置密码就允许外部访问了,很轻易的被入侵了,通过redis修改了authorized_keys文件中实现免密登陆,看了下ip有韩国和美国的
最近虚拟币很猖獗,你知道的不知道的,毫无生产力,毫无意义却浪费大量的资源
看下自己 的服务器/usr/share目录打开config_background.json文件看看有没有被挖矿
他们连我就没得连了,无法登陆远程腾讯云,只能通过VNC方式登录,腾讯云的工程师VNC远程登录也没办法解决,索性直接重装系统
3. 文章版本
- 5月18日版本V1
搭建一些开发必备的软件,都是亲测有效的
第一章 Linux基础环境搭建
1.1 安装zsh和oh-my-zsh
查看系统有几种shell
代码语言:txt复制cat /etc/shells
安装zsh
代码语言:txt复制sudo yum install zsh
#默认安装位置
/bin/zsh
为 root 用户设置 zsh 为系统默认 shell:
代码语言:txt复制chsh -s /bin/zsh root
sudo chsh -s /bin/zsh
查看默认的shell
代码语言:txt复制echo $SHELL
如果你要重新恢复到 bash
代码语言:txt复制chsh -s /bin/bash root
安装zsh框架oh-my-zsh
代码语言:txt复制#需要安装git才可以,这个域名有时候大陆无法访问
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
#安装位置
/root/.oh-my-zsh
#强大的 d 命令,d 命令会列出我们最近进入的目录历史
d
修改主题
代码语言:txt复制# vim .zshrc
#默认主题
ZSH_THEME="robbyrussell"
#设置为”random”每次登陆oh-my-zsh会随机选择一个主题
#[参考文章](https://zhuanlan.zhihu.com/p/63585679)
安装效果
1.2 更新sudo
代码语言:txt复制#修复漏洞编号CVE-2021-3156
yum update sudo
1.3 安装 git
代码语言:txt复制yum install git
#查看安装位置
find . -name "git" |grep git
#默认安装位置
/usr/bin/git
#[参考文章](https://cloud.tencent.com/developer/article/1640614)
1.4 安装 jdk
方式一:
代码语言:txt复制#查看可以安装的jdk版本
yum list | grep java
#默认安装位置为/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el7_9.x86_64/bin/java
yum install -y java-11-openjdk.x86_64
方式二:
代码语言:txt复制#解压
tar -zxvf jdk-8u211-linux-x64.tar.gz
#配置环境变量
vim /etc/profile
export JAVA_HOME=/DATA/jdk/jdk1.8.0_211
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
#刷新环境变量
source /etc/profile
#查询
java -version
1.5 设置本地电脑免密码登陆
免密登陆方式一:
代码语言:txt复制#本地生成 rsa
ssh-keygen
#上传本地公钥至服务器,此处要输入root 密码
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx
#免密登录
ssh root@xxx.xxx.xxx.xxx
#[密钥登录](https://goodgoodstudy.blog.csdn.net/article/details/113694654)
免密登陆方式二:
代码语言:txt复制#将本地电脑中~/.ssh目录下id_rsa.pub中内容(即公钥)
#拷贝到云服务器的~/.ssh目录下的authorized_keys文件中
注意:
代码语言:txt复制docker和redis如果开放端口且不设置密码,很容易以这种方式被入侵。
1.6 修改hostname
代码语言:txt复制# 重新登陆生效
# 1.方法一
vi /etc/hostname
# cloudserver,:wq保存退出
hostname -F /etc/hostname
# 2.方法二
hostname -b cloudserver
1.7 增加连接超时时间
代码语言:txt复制vim /etc/ssh/sshd_config
#在此文件中找到以下配置项:
#ClientAliveInterval 0
#ClientAliveCountMax 3
#去掉注释,改成
#这两行的意思分别是
#1、服务端每隔多少秒向客户端发送一个心跳数据
#2、客户端多少次没有相应,服务器自动断掉连接
ClientAliveInterval 30
ClientAliveCountMax 120
#重启sshd服务
service sshd restart
#参考文章
#https://cloud.tencent.com/developer/article/1163845
1.8 流量监控小工具iftop
安装 iftop 工具
代码语言:txt复制 yum install iftop -y
安装 lsof。
代码语言:txt复制yum install lsof -y
运行 iftop
代码语言:txt复制iftop
根据iftop 中消耗流量的 IP查看连接该 IP 的进程
代码语言:txt复制lsof -i | grep IP
1.9 配置安全组
配置新的安全规则只开放一些常用的端口
1.10 配置防火墙
查看防火墙状态
代码语言:txt复制firewall-cmd --state
开启防火墙
代码语言:txt复制#开启systemctl start firewalld #关闭systemctl stop firewalld
添加需要开放的端口
代码语言:txt复制#在running 状态下,向firewall 添加需要开放的端口#永久的添加该端口。去掉--permanent则表示临时。
firewall-cmd --permanent --zone=public --add-port=8080/tcp firewall-cmd --zone=public --add-port=3306/tcp --permanent
关闭开放的端口
代码语言:txt复制firewall-cmd --zone=public --remove-port=8080/tcp --permanent
加载防火墙配置,使得修改有效
代码语言:txt复制firewall-cmd --reload
查看防火墙某一端口是否开放
代码语言:txt复制firewall-cmd --zone=public --query-port=80/tcp
#查看所有开放的端口
firewall-cmd --permanent --zone=public --list-ports
1.11 安装nginx
代码语言:txt复制#首先要安装PCREPCRE作用是让Nginx支持Rewrite。
#下载nginx
wget http://nginx.org/download/nginx-1.20.0.tar.gz
#下载pcre
wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2
#解压
tar zxvf nginx-1.20.0.tar.gz
tar xvf pcre-8.44.tar.bz2
#安装依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
yum install -y gcc-c
#编译安装pcre
cd pcre-8.44
./configure
make && make install
#生成Makefile
cd ../nginx-1.20.0
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=../pcre-8.44
# 编译安装
make
make install
#安装位置
usr/local/nginx
#nginx三个主要的命令
# 启动
/usr/local/nginx/sbin/ ./nginx
# 停止 Nginx
/usr/local/nginx/sbin/ ./nginx -s stop
# 重新载入配置文件
/usr/local/nginx/sbin/ ./nginx -s reload
#[参考文章](https://www.runoob.com/linux/nginx-install-setup.html)
1.12 安装tomcat
代码语言:txt复制wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.46/bin/apache-tomcat-9.0.46.tar.gz
tar zxvf apache-tomcat-9.0.46.tar.gz
1.13 安装mysql
代码语言:txt复制#centos7默认没有mysql的yum源下载c7的
#https://dev.mysql.com/downloads/repo/yum/
#下载yum源
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
#软件安装需要切换root用户:使用root账户安装yum源
rpm -vih mysql80-community-release-el7-3.noarch.rpm
#检测yum源是否成功安装
yum repolist enabled | grep "mysql.*-community.*"
#查看默认安装版本
yum repolist all | grep mysql
#选择安装版本
##禁用8.0版本的
yum-config-manager --disable mysql80-community
##启用5.7版本的
yum-config-manager --enable mysql57-community
#开始安装
yum install mysql-community-server
#启动mysql
systemctl start mysqld
#查看mysql是否启动
systemctl status mysqld
#重启 mysql
systemctl restart mysqld.service
#查看mysql临时密码
cat /var/log/mysql.log
#或者搜索mysql临时密码
grep 'temporary password' /var/log/mysqld.log
#A temporary password is generated for root@localhost: A&0&cSh_F,AB
#登陆mysql
mysql -uroot -p'A&0&cSh_F,AB'
#不改密码会报错
#You must reset your password
#You have an error in your SQL syntax;
show databases;
#必须修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql5@Root';
flush privileges;
#重新登陆
mysql -uroot -pmysql5$Root
创建授权用户
代码语言:txt复制create user "lane"@"IP" identified by "Mysql@1234";
#创建用户xsge,密码SQLxsge1. 授权所有权限(all),允许正在任意主机登录(%),任意库任意表(*.*)
grant all on *.* to 'lane'@'%' identified by 'Mysql@1234';
##修改xsge主机访问权限范围(前提,该用户lane已经存在)
#修改xsge账户访问范围:localhost只能在Linux系统本机访问
update mysql.user set host='localhost' where user='lane';
#修改权限
#给lane授权查询,更新,test库中所有表(test.*)
Grant select,update on test.* to 'lane'@'%';
禁止MySQL进行更新
代码语言:txt复制#将下列代码放到你的/etc/yum.conf文件中
exclude=mysql-community-client,mysql-community-common,mysql-community-libs,mysql-community-server
设置防火墙开放端口
代码语言:txt复制####设置防火墙开放端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
数据库乱码问题
代码语言:txt复制#登录MySQL查看编码问题
show variables like 'character_set%';
#修改mysql配置文件/etc/my.cnf
vim /etc/my.cnf
#修改为utf8
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
设置免密登陆
代码语言:txt复制#/etc/my.cnf添加如下
[client]
host=localhost
user='root'
password='youpassword'
default-character-set=utf8
[mysql]
default-character-set=utf8
设置开机启动
代码语言:txt复制systemctl enable mysqldsystemctl daemon-reload
参考文章
Linux系统安装MySQL(2020最新最详细) - 净重21克 - 博客园 (cnblogs.com)
CentOS7使用yum安装MySQL - 简书 (jianshu.com)
1.14 安装redis
代码语言:txt复制#下载
wget https://download.redis.io/releases/redis-6.2.2.tar.gz
#解压
tar zxvf redis-6.2.2.tar.gz
#跳转
cd redis-6.2.2
#编译
make
#创建文件
mkdir /usr/local/redis
mkdir /usr/local/redis/bin
mkdir /usr/local/redis/conf
#移动文件
mv redis.conf /usr/local/redis/conf
mv src/redis-benchmark /usr/local/redis/bin
mv src/redis-check-aof /usr/local/redis/bin
mv src/redis-check-rdb /usr/local/redis/bin
mv src/redis-cli /usr/local/redis/bin
mv src/redis-sentinel /usr/local/redis/bin
mv src/redis-server /usr/local/redis/bin
mv src/redis-trib.rb /usr/local/redis/bin
#跳转bin文件
cd /usr/local/redis/bin
#不占用窗口启动redis
./redis-server ../conf/redis.conf &
./redis-cli
#测试
set aa aa
get aa
##关闭服务端连接
127.0.0.1:6379> shutdown
not connected> exit
#设置密码
vim ./conf/redis.conf
#修改requirepass redispass
#可以删除源文件了 rm -rf redis-6.2.2
1.15 安装docker
代码语言:txt复制# 安装
yum -y install docker
# 启动
systemctl start docker.service
# 开机自启动
systemctl enable docker.service
# 验证
docker info
#安装位置
/var/lib/docker
#参考文章(https://cloud.tencent.com/developer/article/1822270)
附录 Linux开始的状态
1. top命令
2. free命令
3. ip连接命令
代码语言:txt复制lsof -i | grep IP