音乐播放器
Thinker's Space
 
文章 标签
8

Powered by Gridea | Theme: Fog
载入天数...
载入时分秒...

初次上手: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默认是不开的,需要自己添加(如下):

image.png

开启服务并允许开机自启

$ 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_dsaid_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”->“网络和安全”->“安全组”->“配置规则”添加安全组规则:

image.png

之后举就可以正常访问了。


安装插件、使用主题

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
image.png

移除旧的版本:

$ 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