呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

Linux 服务器初始化部署常用步骤

前言

因为要经常配置新服务器,所以记录一下云服务器从0配置的常用步骤,比如配置 vim、创建新用户、配置安装源等等。

以下教程适应于操作系统:Ubuntu 16.04 LTS x64

创建新用户

创建新用户,不再用 root 直接运行程序。

sudo passwd root        # 设置用户 root 的密码

sudo useradd yym        # 创建用户 yym
sudo passwd yym         # 设置用户 yym 的密码
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

sudo visudo                 # 添加用户 yym 使用 sudo 的权限
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
yym     ALL=(ALL:ALL) ALL   # 添加这一行

cd /home                # 跳转目录到 home
sudo mkdir yym          # 创建 yym 用户目录
sudo chown yym:yym -R yym
su yym                  # 切换到用户 

亚马逊EC2云主机设置无需PEM登陆,用密码登录(可选,适用于亚马逊主机)

sudo vi /etc/ssh/sshd_config

把:

PasswordAuthentication no

修改为:

PasswordAuthentication yes

应用生效:

sudo /sbin/service sshd restart
或者
sudo service sshd restart

之后使用密码即可登陆实例。

ref:https://blog.csdn.net/sinat_37167645/article/details/80300589

挂载数据盘(可选,适用于阿里云)

新用户的数据都将放置在这个数据盘里

yym@iZ2zegis1iqwk7ddw7voqtZ:/home$ sudo fdisk -l    # 查看所有磁盘
...
yym@iZ2zegis1iqwk7ddw7voqtZ:/home$ sudo mount /dev/vdb ~    # 挂载磁盘 /dev/vdb

问题:用新用户登陆后命令行只有一个$
原因:/etc/passwd 中新建用户没有 bash 的权限
解决方法:在新用户权限后添加 /bin/bash

参考资料:Linux 格式化和挂载数据盘

Ubuntu 添加 apt-get 国内源

创建备份,修改 sources.list 文件

cd /etc/apt
sudo cp sources.list sources.list.bak
sudo vi sources.list

添加国内源

# aliyun
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

# tsinghua
# The source image is annotated by default to improve apt update speed and can be 
# uncommented if necessary
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# Pre-release software source is not recommended
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

# ustc
deb http://debian.ustc.edu.cn/ubuntu/ trusty main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ trusty-backports main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ trusty-proposed main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ trusty-security main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ trusty-updates main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-backports main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-proposed main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-security main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-updates main multiverse restricted universe

更新 apt-get

sudo apt-get update

修改 shell 默认配色

方案一:使用 oh-my-bash 一键安装

oh-my-bash 项目地址:https://github.com/ohmybash/oh-my-bash

安装:

# via curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
# via wget
sh -c "$(wget https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh -O -)"

如果重新登录失效,请修改 /etc/profile 文件,在最后添加:

if [ -f ~/.bashrc ]; then
   bash
fi

方案二:dircolors-solarized(有时候不好用)

github上找到的配色解决方案,dircolors-solarized

1、将配色方案clone到本地

cd ~
git clone https://github.com/seebi/dircolors-solarized.git

(需要先安装git,没有安装的先在shell里运行命令apt-get install git)

2、设置配色方案到 .dircolors

cp ~/dircolors-solarized/dircolors.256dark ~/.dircolors

3、重新登录用户

eval `dircolors dircolors.256dark`

运行以上命令可以直接预览配色效果,但是下次登录会恢复默认配色

详情可参考:改变linux默认配色方案(dircolors和dircolors-solarized使用)

在用户根目录下创建 .bashrc 和 .profile(可选)

.bashrc 和 .profile 是系统启动时自动运行的脚本,会自动运行一些配置,方便使用。

在配置之前,如果你是新用户,首先要给新用户添加使用 bash 的权限

sudo vi /etc/passwd

然后在新用户那一行最后添加 /bin/bash

your_user:x:1000:1000::/home/whz:/bin/bash

创建 .bashrc 和 .profile 的方法有两个:

方法一:

直接复制了 root 用户的 .bashrc 和 .profile 过来,并修改权限为当前用户。

sudo cp /root/.profile ~
sudo cp /root/.bashrc ~
sudo chown user:user ~/.profile
sudo chown user:user ~/.bashrc

方法二:

可以直接用别人造好的轮子,我选了一个,原因是安装方便:fnichol/bashrc

执行以下命令即可:

curl -L https://raw.githubusercontent.com/fnichol/bashrc/master/contrib/install-local | bash

vim 配置(可选)

vim 我使用了 github 上 ma6174/vim 的配置,Star 数量 2.9k,搜索 vim 第一条结果就是。

安装十分简单,运行一条命令即可:

wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh -x

问题:使用 vim 编辑 py 文件的时候出现如下错误:

"ex.py" 5L, 87C
Error detected while processing /home/yym/.vim/ftplugin/python/pyflakes.vim:
line   28:
Error: the pyflakes.vim plugin requires Vim to be compiled with +python
Press ENTER or type command to continue

解决方法
链接:https://jingyan.baidu.com/article/3f16e00308b4482591c1030f.html

步骤:

去github重新下载一个pyflakes.vim:

git clone --recursive git://github.com/kevinw/pyflakes-vim.git

将python目录下的所有文件复制到~/.vim/ftplugin目录下:

cp -R ./pyflakes-vim/ftplugin/python/  ~/.vim/ftplugin/

ma6174/vim 使用方法见链接
https://github.com/ma6174/vim/blob/master/tips.md

生成 git 的 ssh 密钥

ssh-keygen -t rsa -C xxxx@qq.com
cat ~/.ssh/id_rsa.pub

配置 git

git config --global user.email xxxx@qq.com
git config --global user.name xxxx

apt-get 一键安装必要软件

sudo apt-get install nginx htop

安装 Python

cd ~
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
tar zxvf Python-3.6.8.tgz
cd Python-3.6.8/
sudo apt-get install -y gcc build-essential python-dev python-setuptools python-pip python-smbus build-essential libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev
sudo ./configure
sudo make
sudo make install
python3

添加 pip 豆瓣源加速安装

使用默认 pip 源安装各种 python 库速度十分慢,经常出现 read time out 超时错误。忍无可忍,换成国内的 pip 豆瓣源。

临时使用豆瓣源

sudo easy_install -i http://pypi.douban.com/simple/ saltTesting 
sudo pip install -i http://pypi.douban.com/simple/ saltTesting

永久使用豆瓣源(linux)

cd ~
mkdir .pip
vi .pip/pip.conf

添加内容

[global] 
index-url = http://pypi.douban.com/simple 
trusted-host = pypi.douban.com

安装测试

sudo pip3 install requests
sudo pip3 install django

永久使用豆瓣源(windows)

  1. 在windows文件管理器中,输入 %APPDATA%
  2. 会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件
  3. 在新建的pip.ini文件中输入以下内容,搞定文件路径:"C:\Users\Administrator\AppData\Roaming\pip\pip.ini"
[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

在用 pip 安装 python 库试试,速度是不是快多了呢? :)

参考于:

国内的pythoner强烈建议使用豆瓣的pypi源 zz

windows环境下永久修改pip镜像源的方法

安装 Golang

cd ~
wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
tar zxvf go1.13.4.linux-amd64.tar.gz
sudo mv go /usr/local
vi ~/.bashrc

在 .bashrc 最后添加 golang 环境变量:

# golang env
export GOPATH=~/go
export GOROOT=/usr/local/go
export GOARCH=amd64
export GOOS=linux
export GOBIN=$GOROOT/bin/
export GOTOOLS=$GOROOT/pkg/tool/
export PATH=$PATH:$GOBIN:$GOTOOLS

使配置生效:

source .bashrc
go version

安装 Docker

# 0. 检查(可选)
# Docker 要求 Ubuntu 系统的内核版本高于 3.10,通过下面的命令查看内核版本:
uname -r


# 1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io

# 2. 安装最新版本的 Docker
# docker-ce(社区版)是免费的,docker-ee(企业版)。
# 这里安装CE社区版,足够用了
# 同时要设置 apt 支持 https 的拉取方式才能安装
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

# 3. 设置apt仓库地址
# 添加 阿里云 的apt仓库(使用国内源)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
     "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
     $(lsb_release -cs) \
     stable"

# 4. 安装最新版的 Docker 软件
sudo apt-get update
sudo apt-get install docker-ce

ref: https://segmentfault.com/a/1190000014066388

以下为旧版本安装教程(不一定有效):

1.选择国内的云服务商,这里选择阿里云为例
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

2.安装所需要的包
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

3.添加使用 HTTPS 传输的软件包以及 CA 证书
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates

4.添加GPG密钥
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

5.添加软件源
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

6.添加成功后更新软件包缓存
sudo apt-get update

7.安装docker
sudo apt-get install docker-engine

8.启动 docker
sudo systemctl enable docker
sudo systemctl start docker

如果出现执行 docker 命令权限不够的情况,可以执行以下命令:

sudo groupadd docker #添加docker用户组
sudo gpasswd -a $XXX docker #检测当前用户是否已经在docker用户组中,其中XXX为用户名,例如我的,liangll
sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组

ref:
https://www.runoob.com/docker/ubuntu-docker-install.html
https://blog.csdn.net/liangllhahaha/article/details/92077065

docker 镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,网易的镜像地址:http://hub-mirror.c.163.com。

配置以下文件,设置 docker 镜像仓库代理(如果没有该文件,就创建一个):

# linux
vi /etc/docker/daemon.json
# windows
%programdata%\docker\config\daemon.json 或者 %USERPROFILE%\.docker\daemon.json
# mac
~/.docker/daemon.json

请在该配置文件中加入:

{
  "registry-mirrors": ["http://hub-mirror.c.163.com","https://registry.docker-cn.com"]
}

配置完成后,别忘了重启 Docker 服务

sudo service docker restart

MongoDB with Docker

拉取 mongo 镜像(最好指定版本,不然会有坑)

docker pull mongo:3.4

创建外部数据卷

mkdir ~/mongodb
mkdir ~/mongodb/data
mkdir ~/mongodb/backup

启动 mongo 容器

docker run --name mongo -p 27017:27017 -v ~/mongodb/data:/data/db -v ~/mongodb/backup:/data/backup -d mongo:3.4 --auth

如果加需要验证就加--auth,不需要验证,就去掉。默认mongodb是不使用用户认证

进入容器,创建管理员账户

docker exec -it mongo /bin/bash
mongo
use admin
db.createUser({user:"admin",pwd:"your_password",roles:["userAdminAnyDatabase"]})

登录管理员账户

use admin
db.auth("admin","your_password") # 返回 1 表示登陆成功

创建普通账户

# use test 是选择认证数据库
# 赋予用户 admin 对 test 数据库的 readWrite 权限
use test 
db.createUser(
{
user:'admin',
pwd:'your_password',
roles:[{role:'readWrite',db:'test'}] 
}
)

恢复本地 mongodb 数据到远程主机

mongorestore.exe -h [remote_ip]:27017 -d xxx -directoryperdb d:\temp\xxx

或者认证后恢复(drop表示清除数据库之后在恢复)

./mongorestore -h [remote_ip] --port 27017 -u admin -p your_password -d xxx --drop ../xxx

ref:
https://www.cnblogs.com/smiler/p/10112676.html
https://gitee.com/elliotxx/my-db

恢复 cron 计划任务

放置 cron 计划任务清单的文件一般在 /var/spool/cron

将原来的清单中的任务复制到新清单中即可恢复

实现Python 3.6与2.7共存及版本切换(CentOS为例)

一般 linux 系统会自带 python 2,所以我们首先安装 python 3。

具体过程可以参考:

安装 shadowsocks 科学上网

# 安装 shadowsocks
pip install shadowsocks
# 启动
nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
echo " nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &" /etc/rc.local   #设置自启动

参考资料: CentOS 7 安装 shadowsocks 客户端

原创声明

转载请注明:呓语 » Linux 服务器初始化部署常用步骤