腾讯云Linux从零开始环境搭建及学习V1

2021-05-18 16:35:13 浏览数 (1)

前言

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)

安装效果

image-20210516214322636image-20210516214322636
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
image-20210517000030498image-20210517000030498
1.9 配置安全组

配置新的安全规则只开放一些常用的端口

image-20210517002358208image-20210517002358208
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命令
image-20210516201512827image-20210516201512827
2. free命令
image-20210516201600858image-20210516201600858
3. ip连接命令
代码语言:txt复制
lsof -i | grep IP
image-20210516201811289image-20210516201811289
4. 初始文件夹
image-20210516202044237image-20210516202044237

0 人点赞