Centos 环境配置(持续总结)
本章节收集一下配置一个centos 环境所需要的操作
git
wget
MiniConda(python)
mysql
...
web-vscode
phpredisAdmin(redis web 管理工具)
# 基础配置
# 显示完整文件路径
命令行提示符完全显示完整的工作目录名称:(推荐用法)
export PS1='[\u@\h $PWD]$ '
命令行提示符只列出最后一个目录:
export PS1='[\u@\h \W]$'
命令行提示符显示完整工作目录,当前用户目录会以 ~代替:
export PS1='[\u@\h \w]$'
2
3
4
5
6
命令释义
\u 显示当前用户账号
\h 显示当前主机名
\W 只显示当前路径最后一个目录
\w 显示当前绝对路径(当前用户目录会以 ~代替)
$PWD 显示当前全路径
\$ 显示命令行’$'或者’#'符号
2
3
4
5
6
# vim-server
cp ~/.vimrc ~/.vimrc_bak # bak
curl https://raw.githubusercontent.com/wklken/vim-for-server/master/vimrc > ~/.vimrc
2
# 免密码登陆
$ ssh-keygen -t rsa # 这里生成的公钥为 id_rsa.pub
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAA...
$ ssh <username@remote_ip> # 进入远端服务器
# 初次登录没有authorized_keys,需要手动创建
$ mkdir ~/.ssh && touch ~/.ssh/authorized_keys
$ vi ~/.ssh/authorized_keys # 追加(copy)id_rsa.pub 内容
$ exit # 退出远程服务器
2
3
4
5
6
7
8
此时再登录则无需密码 ssh <username@remote_ip>
# 丢掉ip地址,使用别名登录服务器
ip 地址记忆也是一件麻烦的是,可以为服务器定义别名、
创建 ~/.ssh/config
,为每个服务器创建别名,之后登录仅需要 ssh vps
# vim ~/.ssh/config
Host github
# connect to github by git@github.com
User git
HostName github.com
IdentityFile ~/.ssh/id_rsa
Host coding
HostName e.coding.net
User git
IdentityFile ~/.ssh/coding
Host vps # 别名
HostName 103.99.179.xxx
User root # 账号
IdentityFile ~/.ssh/id_rsa # 对应的私钥
Host remotesvr # 别名
HostName 107.2.214.xx
User root
IdentityFile ~/.ssh/id_rsa
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 必要软件安装
# zsh
$ yum install zsh # 安装zsh
$ cat /etc/shells # 查看所有 shell
$ yum install util-linux-ng # install chsh
$ chsh -s /bin/zsh # 切换shell为zsh
$ echo $SHELL # 查看当前shell
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" # 安装oh-my-zsh
2
3
4
5
6
# ifconfig
$ yum search ifconfig
============================== 匹配:ifconfig ============================================
net-tools.x86_64 : Basic networking tools
$ yum install net-tools.x86_64
2
3
4
# git
$ yum install -y git
# wget
$ yum install -y wget
# 7z压缩
$ yum install epel-release # 安装epel依赖
$ yum install p7zip
2
使用方法
7za a -t7z -r test.7z test
#a 代表添加文件/文件夹到压缩包
-t 是指定压缩类型,这里定为7z,可不指定,因为7za默认压缩类型就是7z。
-r 表示递归所有的子文件夹
7za x test.7z -r -o./
# x 代表解压缩文件,并且是按原始目录树解压(还有个参数 e 也是解压缩文件,但其会将所有文件都解压到根下,而不是自己原有的文件夹下)
# -r 表示递归解压缩所有的子文件夹
# -o 是指定解压到的目录,-o后是没有空格的,直接接目录。这一点需要注意。
# FRE COMMAND
7za test test.7z
7za x test.7z
2
3
4
5
6
7
8
9
10
11
# sz, rz
服务器上传,下载文件,除了使用FTP软件外,lrzsz是一个unix通信套件提供的X,Y,和ZModem文件传输协议,是一个非常强大的文件传输工具,安装方便,使用简单。
rzsz 官网入口:http://freecode.com/projects/lrzsz/ (opens new window)
$ yum -y install lrzsz
sz filename # 下载文件 filename
rz # 上传文件
2
3
# 进程树
yum -y install psmisc
pstree
2
# MiniConda
# 网址
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
下载最新的版本,一般来说是 Miniconda-latest-Linux
$ wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda-latest-Linux-x86_64.sh
$ yum -y install bzip2 # 下载解压软件
$ bash Miniconda-latest-Linux-x86_64.sh
# 添加环境变量
$ echo "export PATH=/root/miniconda2/bin:$PATH" >> .bashrc
$ source ~/.bashrc
# 检查是否成功安装
$ /root/miniconda2/bin/conda -V
conda 4.0.5
2
3
4
5
6
7
8
9
# 配置 Anaconda 仓库镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
2
3
# 设置快捷命令
alias conl="conda env list"
alias conc="conda create -n"
alias cona="source activate"
alias cond="source deactivate"
alias conr="conda remove --all -n"
2
3
4
5
# 新建 python 环境
# 创建新环境 base 并安装python3.6
$ conda create -n base python=3.6
# 查看当前环境
$ conl
# conda environments:
#
base /root/miniconda2/envs/base
root * /root/miniconda2
# 切换为 base 环境
$ cona base
$ which python
/root/miniconda2/envs/base/bin/python # 当前python的地址
2
3
4
5
6
7
8
9
10
11
12
安装必要的库
$ pip install --upgrade pip
$ pip install numpy pandas jsonpath pymysql requests datetime dateutil
2
# shadowsocks
shadowsocks 需要利用 pip
安装
$ sudo pip install shadowsocks
创建配置文件ss.json
# vim ss.json { "server":"*.*.*.*", "server_port":***, "local_server":"0.0.0.0", # 默认127.0.0.1 "local_port":1081, "password":"*****", "timeout":600, "method":"aes-256-cfb" }
1
2
3
4
5
6
7
8
9
10启动ss隧道
# 前台方式运行 /root/miniconda2/envs/base/bin/sslocal -c ss.json # 后台运行 nohup /root/miniconda2/envs/base/bin/sslocal -c ss.json >> ss.log 1>2&
1
2
3
4
# mysql
MariaDB 是由 MySQL 开发的 MySQL的替代版本。如果我们直接在 Centos 上 yum install mysql
# 第零步:查看系统版本号
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
2
# 第一步:安装MySQL
需要到如下网站上去定位需要安装的版本号
https://dev.mysql.com/downloads/repo/yum/
注意:我们使用的CentOs Linux 7 选择下面的第二个
不用试图去点击右手边的 Download
按钮,因为这个会导向一个登陆界面。获取版本号后,直接用 wget 下载
$ wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 下载完了以后,还是可以检查一下是否正常下载
$ md5sum mysql80-community-release-fc30-1.noarch.rpm
$ rpm -ivh mysql80-community-release-fc30-1.noarch.rpm
警告:mysql80-community-release-fc30-1.noarch.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql80-community-release-fc30-1 ################################# [100%]
2
3
4
5
6
7
8
9
10
若是安装错误 repo 源了怎么办?我很不幸就干过
# 查看所有 mysql 源
$ rpm -qa|grep mysql
# 删掉安装错误的 mysql 源
$ rpm -e mysql80-community-release-fc30-1.noarch --nodeps
2
3
4
5
安装 MySQL
$ sudo yum install mysql-server
# 第二步:启动 mysql 服务
sudo systemctl start mysqld
该命令不会返回报错,为了进一步确认 mysql 服务确实启动
$ sudo systemctl status mysqld
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2020-01-28 20:07:00 CST; 6s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 12281 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 12402 (mysqld)
Status: "Server is operational"
Tasks: 39
Memory: 616.5M
CGroup: /system.slice/mysqld.service
└─12402 /usr/sbin/mysqld
2
3
4
5
6
7
8
9
10
11
12
# 第三步:修改默认配置
首先,我们需要修改 MySQL 给我们的默认密码,这个直接从日志中获取即可
cat /var/log/mysqld.log | grep "temporary password"
2020-01-28T12:06:55.699956Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 5H(?khVdysDW
2
初始密码只能用于登录,但是此时你不能进行任何操作,必须修改新的密码
在修改密码之前,你需要做的是修改密码的规格(默认的规格···太严格了)
# validate_password_policy代表密码策略,默认是1:符合长度,且必须含有数字,小写或大写字母,特殊字符。设置为0判断密码的标准就基于密码的长度了。一定要先修改两个参数再修改密码
set global validate_password.policy=0;
# validate_password_length代表密码长度,最小值为4
set global validate_password.length=4;
2
3
4
5
最后,修改为合适的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
如果我们安装的是 MySQL8.0 以上的版本,加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。为了解决兼容性问题,一般来说,我选择把加密等级调低一点。
mysql> select host,user,plugin,authentication_string from mysql.user;
最后需要修改一下,加密规则 和 远程登录
USE mysql;
UPDATE user SET host = '%' where user = 'root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
2
3
4
5
参考资料: CentOS7 安装并配置MySQL8.0 (opens new window) How To Install MySQL on CentOS 7 (opens new window) centos彻底卸载mysql(不保留数据) (opens new window)
# Redis
# 用yum 安装
$ yum install -y redis
2
默认是不设置密码的,我们需要在上面进行更进一步的安全策略配置。之前腾讯云上的一台服务器,由于暴露了无密码的redis接口,就中了 挖矿木马
# /etc/redis.conf
# bind:绑定主机IP,默认值为127.0.0.1
bind 127.0.0.1 # 将这一行指注释掉,可以运行远程访问。不注释,只运行本地访问,安全性很高
# daemonize:是否以后台进程运行,默认为no。Windows下不支持修改 。Linux平台下可以改为yes,这样就不用为了启动Redis而单独保留一个shell窗口。
# pidfile:如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid。Windows下不支持修改。
daemonize yes
port 6379 # 监听端口,默认为6379
timeout 300 # 超时时间,设置为300(秒)
dbfilename dump.rdb # 本地数据库文件名,默认值为dump.rdb
dir /var/lib/redis # 本地数据库存放路径,默认值为 /var/lib/redis
requirepass ABCD123 # 强烈建议设置 连接密码
appendonly yes # 是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no
# 每个配置选项前都有详细的英文注释,如有需要可自行查阅配置。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
以上只是选择了我认为的一些常用的设置,参考来源:邻居小黑 (opens new window) 和 redis 菜鸟教程 (opens new window) 更多的安全策略,可以借鉴 Redis服务安全加固 (opens new window)
yum 安装下来的服务,已经帮我们创建好了服务。我们直接使用重启就可以了
$ systemctl restart redis
● redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/redis.service.d
└─limit.conf
Active: active (running) since 六 2020-03-07 13:39:44 CST; 35s ago
Main PID: 12655 (redis-server)
Tasks: 3
Memory: 1.0M
CGroup: /system.slice/redis.service
└─12655 /usr/bin/redis-server 127.0.0.1:6379
$ redis-cli
127.0.0.1:6379> get abc
(error) NOAUTH Authentication required.
# 再一次的运行 redis-cli 发现已经需要了密码
127.0.0.1:6379> auth YOURPASSWORD
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# docker
docker 安装其实比较麻烦的,感谢 图灵:Docker开发指南
给的安装建议,我们可以直接用别人写好的脚本。
curl https://get.docker.com > install.sh
chmod +x install.sh
cat install.sh # 感兴趣的话,可以研究一下 shell 究竟写了啥
./install.sh
# $ sh -c "$(curl -fsSL https://get.docker.com)"
# 安装完了,记得启动 docker 服务
sudo systemctl start docker
$ docker --version # 查看是否安装成功
amlalinux
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf remove podman buildah
sudo dnf install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker.service
sudo docker version
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# linux下 docker 加速
$ sudo touch /etc/docker/daemon.json
# 添加国内站点
{
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","https://dockerhub.azk8s.cn"]
}
# 重启docker daemon
$ sudo systemctl restart docker
# 查看是否有修改成功
$ docker info
# 查看Register Mirrors的信息
Registry Mirrors:
https://registry.docker-cn.com/
http://hub-mirror.c.163.com/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# docker-compose(github 安装)
有条件的话,参考 docker官方教程 (opens new window) 这一种方法是官方推荐,但是鉴于中国墙,速度有可能非常感人
# 1. 从 github 上下载 docker-compose 命令
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 2. 赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 3. 验证是否安装成功
docker-compose --version
# docker-compose(pip 安装)
一般容易出问题的是 pip 的版本,如果是使用了conda作为包管理的话,可能主要注意pip的版本。我一开始是使用base环境的pip作下载,然后将安装的docker-compose 软连接至
/usr/local/bin
中
pip install docker-compose
# Nginx
sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
2
3
4
5
6
# Selenium + Chrome 环境配置
linux 是无图形化界面,selenium 需要借助图形化的工具,下面我们直接看如何配置。
# 安装selenium
pip install selenium
# 安装chrome-browser
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm --no-check-certificate
yum install ./google-chrome-stable_current_x86_64.rpm
# 或者直接使用yum 安装
yum install google-chrome
# 安装后,注意要查看一下 chrome 的版本号
$ google-chrome --version
Google Chrome 80.0.3987.87
2
3
4
5
6
7
# 下载chromedriver
建议到 淘宝镜像 (opens new window)下载
更全一点的话,有 官方镜像 (opens new window)
$ wget https://npm.taobao.org/mirrors/chromedriver/80.0.3987.16/chromedriver_linux64.zip
# 解压此文件,并将文件移动到/usr/bin目录下
unzip chromedriver_linx64.zip
# 移到 /usr/bin 下后,之后运行的时候就不必特意制定 chromedriver 路径了
mv chromedriver /usr/bin/
2
3
4
5
# 使用selenium
from selenium import webdriver
url='http://bing.com'
option = webdriver.ChromeOptions()
option.add_argument('--no-sandbox')
option.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=option)
driver.get(url)
print(driver.page_source)
2
3
4
5
6
7
8
# JDK 安装
官网地址:下载地址 (opens new window) ,不过加锁了,需要登录 Oracle 账号
我下载的版本:https://download.oracle.com/otn/java/jdk/8u281-b09/89d678f2be164786b292527658ca1605/jdk-8u281-linux-x64.tar.gz?AuthParam=1613800714_03fe610a2922ab554cc9cba2b8493817
安装命令
# jdk 目录创建
mkdir -p /usr/local/java
# jdk 下载
wget https://download.oracle.com/otn/java/jdk/8u281-b09/89d678f2be164786b292527658ca1605/jdk-8u281-linux-x64.tar.gz?AuthParam=1613800714_03fe610a2922ab554cc9cba2b8493817
# 解压到 java 目录
tar -zxvf jdk-8u281-linux-x64.tar.gz\?AuthParam\=1613800714_03fe610a2922ab554cc9cba2b8493817 -C /usr/local/java
2
3
4
5
6
设置环境变量
# 1.编辑 /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_171 # <---这里改成自己的java版本
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
# 2.使环境变量生效
$ source /etc/profile
# 3.添加软链接
ln -s /usr/local/java/jdk1.8.0_171/bin/java /usr/bin/java
# 4.添加 java 版本
java -version
2
3
4
5
6
7
8
9
10
11
# Linux 云服务器搭建 FTP 服务
安装:【腾讯云教程】Linux 云服务器搭建 FTP 服务 (opens new window)
配置安全传输协议SSL/TLS:不安全的服务器,不支持 FTP over TLS (opens new window)
命令总结:
# 安装 vsftpd
yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
netstat -antup | grep ftp # 确认服务是否启动
# 配置 vsftpd
useradd ftpuser
passwd ftpuser
mkdir /var/ftp/test # 创建FTP文件目录
chown -R ftpuser:ftpuser /var/ftp/test
vim /etc/vsftpd/vsftpd.conf
2
3
4
5
6
7
8
9
10
11
主动模式
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
# 关键 IPV6 sockets
#listen_ipv6=YES
2
3
4
5
6
7
8
被动模式
local_root=/var/ftp/test
allow_writeable_chroot=YES
pasv_enable=YES
pasv_address=xxx.xx.xxx.xx #请修改为您的 Linux 云服务器公网 IP
pasv_min_port=40000
pasv_max_port=45000
2
3
4
5
6
创建用户列表
vim /etc/vsftpd/chroot_list # 创建用户列表
输入用户名,一个用户名占据一行
systemctl restart vsftpd # 创建后重启
2
3