初次上手:CentOS 7 服务器配置
项目服务器选择了CentOS 7这个系统,我对这个系统还不算很熟悉,所以再次配置基本环境时又在网上找了很久,为了方便,这边就对基本环境的配置做一个整合笔记。
远程连接
我选的是阿里云,因此在此用阿里云举例。
首先在“轻量应用服务器管理控制台”上选择“服务器运维”->“远程连接”->“客户端”->“设置密码”设置root密码。
然后打开secureCrt,建立一个Session,选择SSH2,输入服务器公网ip,选择登入账号为root(默认为root用户,虽然可以设置登录普通用户,但是比较麻烦,这里就不折腾这个了,毕竟不重要)。
双击刚刚建好的Session实现远程连接。我尽可能把所有操作在普通用户下执行,所以远程连接后,先sudo su admin切换到普通用户(阿里云默认普通用户为admin)。
升级系统
$ sudo yum update
CentOS的这一条语句就等于Ubuntu的
$ sudo apt update
$ sudo apt upgrade
两条语句了。
查看升级后的系统版本:
$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
安装redis
安装
$ sudo yum install redis -y
配置远程访问
$ sudo vim /etc/redis.conf
找到并注释掉下面一行,或者把127.0.0.1改成0.0.0.0
bind 127.0.0.1
开启服务并允许开机自启
$ sudo systemctl start redis
$ sudo systemctl enable redis
安装mysql
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
安装
$ sudo yum install mariadb-server mariadb -y
配置
安装成功后启动MySQL服务:
$ sudo systemctl start mariadb
初次安装MySQL,会发现root账户是没有密码的
$ mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.64-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
因此先给root账户配置密码:
set password for 'root'@'localhost' = password('*****');
不需要重启数据库即可生效。
接下来建立一个用于一般工作使用的可远程访问的test账户
CREATE USER 'test'@'%' IDENTIFIED BY 'test';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
开启远程访问
阿里云服务器的MySQL默认是不能远程访问的,因为默认防火墙里MySQL端口3306默认是不开的,需要自己添加(如下):

开启服务并允许开机自启
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
安装git及配置SSH密钥连接Github
安装git
$ sudo yum install git -y
设置git账户
执行如下两条命令设置git账户的用户名和密码:
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@domain.com"
查看git config的信息:
$ git config --list
生成SSH公钥(摘自网络)
SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。先确认是否已经有一个公钥了:
$ cd ~/.ssh
/bin/sh: cd: can't cd to /root/.ssh
主要是看是否存在 id_dsa 或 id_rsa 文件。有 .pub 后缀的文件就是 公钥,另一个文件则是密钥。
创建新的SSH密钥
如果已经存在公钥,可跳过这步。如果没有,使用 ssh-keygen 来创建:
$ cd ~
$ ssh-keygen -t rsa -C "youremail@domain.com"
示例:(xxxxxx@126.com 为我的账户邮箱)
~ # ssh-keygen -t rsa -C "xxxxxx@126.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
# 直接回车,则将密钥按默认路径及文件名进行存储。此时也可以输入特定的文件名
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
# 根据提示,你需要输入密码和确认密码。可以不填,设置为空值,直接回车
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:yFt14TcP0H+ixy9VKiILPPJ6DVevkKgrbxVFqk7mn5k xxxxxx@126.com
The key's randomart image is:
+---[RSA 2048]----+
| o. |
| . . o. |
| o . o +. |
| .... ... ..++|
| . o .So . o+|
| + o Bo= . + + .|
| = *.* + o o |
| ++o o o . . .|
| E=++ . |
+----[SHA256]-----+
查看生成的文件:
$ cd ~/.ssh
$ ls
id_rsa id_rsa.pub known_hosts
文件 id_rsa.pub 就是公钥。
在 GibHub 中添加你的公钥
复制公钥 id_rsa.pub 文件中的内容。
我这里使用 XShell 来登录的linux服务器,可以直接复制出来。或在 vim 下,可通过命令 ggVG 全选,+y 复制选中内容到+寄存器,也就是系统的剪贴板,供其他程序使用。
登陆Github网站,选择 Settings –> SSH and GPG keys 菜单,点击 New SSH key 按钮。
粘贴你的密钥到 Key 输入框中并设置 Title 信息,点击 Add SSH key 按钮完成。
连接测试
测试 SSH keys 是否设置成功,执行如下命令:
$ ssh -T git@github.com
当提示如下信息时,说明正常连通了github:
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
如果你是第一次设置连接github.com,会询问你是否继续,输入 yes 即可,这样就会将连接地址记录在本地:
$ ssh -T git@github.com
The authenticity of host 'github.com (192.30.253.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpxxxxxxxxARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
然后就可以将本地的项目用github来管理了。
安装zsh
安装
$ sudo yum install zsh -y
$ sudo chsh -s $(which zsh)
$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
启动zsh
$ sudo vim ~/.bashrc
加入以下内容:
# Launch Zsh
if [ -t 1 ];
then
exec zsh
fi
启动显示
$ sudo vim ~/.zshrc
加入以下内容:
umask 0022
export DISPLAY=localhost:0.0
修改wsl里面查看windows磁盘文件的颜色
$ dircolors -p > $HOME/.dircolors
$ vim $HOME/.dircolors
将 STICKY_OTHER_WRITABLE 后面的数字改成02;32 OTHER_WRITABLE 后面的数字改成01;34
$ sudo vim ~/.zshrc
加入以下内容:
eval $(dircolors -b $HOME/.dircolors)
修改主题
$ sudo vim ~/.zshrc
将下面这一行的值改成ys(个人觉得这个主题很好)
ZSH_THEME="rubbyrussell"
安装jdk
安装之前先检查一下系统有没有自带open-jdk
$ rpm -qa |grep java
$ rpm -qa |grep jdk
$ rpm -qa |grep gcj
如果没有输入信息表示没有安装。
如果安装可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件。
检索包含Java 1.8的列表
$ sudo yum list java-1.8*
安装1.8.0的所有文件
$ sudo yum install java-1.8.0-openjdk\* -y
检查是否安装成功
$ java -version
安装miniconda
因为云服务器不打算安装GUI,所以我这里选择安装轻量的miniconda。
安装
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ sh Miniconda3-latest-Linux-x86_64.sh
# 一直按回车然后输入yes
please answer 'yes' or 'no':
>>> yes
# 选择安装路径, 文件名前加点号表示隐藏文件
Miniconda3 will now be installed into this location:
>>> ~/.miniconda3
# 添加配置信息到 ~/.zshrc文件
Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]
[no] >>> yes
操作完后发现conda指令没有,这时我们需要删掉已经安装好的miniconda文件夹
$ rm -rf /home/admin/miniconda3
然后重复一次安装操作即可。
换清华源
个人觉得conda官方源挺快的,也就没改清华源。不过这边还是做一下记录,若需要修改,则:
显示所有channel
$ conda config --show
#显示出所有conda的config信息
$ conda config --show channels
#只看channels的信息
添加可用的清华源
$ 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
conda config --set show_channel_urls yes的意思是从channel中安装包时显示channel的url,这样就可以知道包的安装来源了。
顺带修改一下安装前的确认
$ conda config --set always_yes false
(这里的意思是安装确认中,不默认yes,而是由我来决定)
然后更新一下所有包
$ conda upgrade --all
安装与配置jupyter notebook
安装并配置远程访问
$ conda install jupyter notebook
安装完成后生成配置文件:
$ jupyter notebook --generate-config
Writing default config to: /home/admin/.jupyter/jupyter_notebook_config.py
接着先生成登陆密码:
$ ipython
Python 3.7.5 (default, Oct 25 2019, 15:51:11)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:f82d919b51bc:bc080b045f2bf8b5e8c41c8c5a3b84ff7c10c25c'
In [3]: exit()
复制输出的那一段值。
接着编辑配置文件:
$ sudo vim /home/admin/.jupyter/jupyter_notebook_config.py
c.NotebookApp.allow_remote_access = True
c.NotebookApp.allow_root = True
c.NotebookApp.ip = '*'
c.NotebookApp.notebook_dir = '/home/notebook'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:f82d919b51bc:bc080b045f2bf8b5e8c41c8c5a3b84ff7c10c25c'
c.NotebookApp.port = 8888
至此,对阿里云服务器来说还未结束,如果访问http://ip:8888发现访问不了,这需要在“云服务器管理控制台”->“云服务器ECS”->“网络和安全”->“安全组”->“配置规则”添加安全组规则:

之后举就可以正常访问了。
安装插件、使用主题
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyterthemes # 安装
jt -t chesterish # 使用chesterish主题(可能需要重启jupyter)
jt -r # 恢复默认主题
后台运行
但是你会发现这样不可以后台运行,退出以后就访问不了了。
这个时候一条命令就可以帮你解决问题。
# cofing 后面对应的刚开始的那个配置文件
$ nohup jupyter notebook --config=/home/admin/.jupyter/jupyter_notebook_config.py > /dev/null 2>&1 &
设置快捷命令
设置别名,方便操作。在文件最后追加以下内容:
$ sudo vim ~/.zshrc
# alias for conda
alias conl="conda env list"
alias conc="conda create -n"
alias cona="source activate"
alias cond="source deactivate"
alias conr="conda remove --all -n"
安装一些常用包
$ conda install pandas numpy tensorflow opencv
安装swagger
安装准备
安装swagger需要用到nodejs和npm,所以,在安装swagger前需要确认云服务器上已安装这两个。
$ node -v
$ npm -v
若没有,则运行以下命令安装:
$ sudo yum install nodejs npm
然后再确认一下是否成功安装。
安装swagger-editor
$ git clone https://github.com/swagger-api/swagger-editor # 克隆swagger后端代码
启动swagger-editor部署
$ npm install -g http-server # npm安装node.js htpp服务器
$ cd swagger-editor/ # 打开swagger后端目录
$ http-server -p 8000 # 启动node.js服务器,端口8000
然后访问http://ip地址:8000/即可
安装swagger-ui
$ git clone https://github.com/swagger-api/swagger-ui # 克隆swagger前端界面代码
启动swagger-ui部署
$ cd .. # 返回上层目录
$ mkdir swagger # 创建 swagger目录
$ cd swagger # 打开 swagger目录
$ touch package.json # 创建 打包文件
$ npm init package.json # npm初始化,一路回车就好
$ npm install express --save # npm安装express
$ mkdir public # 创建public目录
$ cp -r ../swagger-ui/dist/ public/ # 拷贝swagger-ui/dist到public目录
$ touch index.js # 创建index.js
$ vim index.js
添加如下内容:
var express = require('express');
var http = require('http');
var app = express();
app.use('/static', express.static('public'));
app.listen(8005, function () {
console.log('app listening on port 8005!');
});
启动swagger-ui:
$ node index.js
访问:http://ip地址:8005/static/dist/index.html
swagger进程驻留
$ nohup http-server -p 8000 swagger-editor 2>&1 &
$ nohup node index.js 2>&1 &
有可能会驻留失败,反正我是失败了很多次,若反复尝试不行,那么可以试试:
$ sudo nohup http-server -p 8000 swagger-editor 2>&1 &
$ sudo nohup node index.js 2>&1 &
然后
$ ps aux | grep node
将含有sudo的进程kill掉即可。
安装和配置nginx
添加yum源
Nginx 不在默认的 yum 源中,可以使用 epel 或者官网的 yum 源,本例使用官网的 yum 源。
$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装
yum 安装 Nginx,非常简单,一条命令。
$ sudo yum install nginx
配置 Nginx 服务
设置开机启动
$ sudo systemctl enable nginx
启动服务
$ sudo systemctl start nginx
停止服务
$ sudo systemctl restart nginx
重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载。
$ sudo systemctl reload nginx
反向代理
Nginx 是一个很方便的反向代理,配置反向代理可以参考 Module ngx_http_proxy_module 。本文不做累述。
需要指出的是 CentOS 7 的 SELinux,使用反向代理需要打开网络访问权限。
$ sudo setsebool httpd_can_network_connect 1
打开网络权限之后,反向代理可以使用了。
一些常用配置
安装gcc、c++编译器以及内核文件
$ sudo yum -y install gcc gcc-c++ kernel-devel
虚拟机上传下载组件( 支持从windows直接拖拽文件,相当好用)
rz+文件名 上传
sz+文件名 下载
$ sudo yum -y install lrzsz
#PCRE (Perl库,包括 perl 兼容的正则表达式库)
$ sudo yum -y install pcre pcre-devel
zlib (zlib库提供了很多种压缩和解压缩的方式)
$ sudo yum -y install zlib zlib-devel
openssl (OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议)
$ sudo yum -y install openssl openssl-devel
安装wget下载工具
$ sudo yum -y install wget
使用systemctl自动补全服务名称( 因为CentOS7的默认安装类型是最小安装,所以默认没有自动补全的功能)
$ sudo yum -y install bash-completion
centos 64位系统兼容32位运行程序(aapt)
$ sudo yum -y install zlib.i686 libstdc++.i686
安装lsof(list open files)是一个列出当前系统打开文件的工具
$ sudo yum -y install lsof
zip unzip
$ sudo yum -y install zip unzip
make,clang
$ sudo yum -y install make clang
安装/升级Docker客户端
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
$ uname -r

移除旧的版本:
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安装一些必要的系统工具:
$ sudo yum -y install yum-utils device-mapper-persistent-data lvm2
更新 yum 缓存:
$ sudo yum makecache fast
安装 Docker:
$ sudo yum -y install docker
启动 Docker 后台服务
$ sudo systemctl start docker
加入开机自启动
$ sudo systemctl enable docker








