前言
昨天在服务器搭建 vpn
的时候,不负众望的又爆掉了,作为一个纯前端工程师,搭建服务器这条路走的果然异常艰辛,前前后后因为各种问题已经挂掉两次了。究其原因,不外乎对运维知识毫无了解,自己摸索然后踩了无数的坑。然而自己也在不断地错误中对知识掌握的更加深刻。这次服务器初始化实例,也终于有机会从0开始记录一下自己搭建网站的全过程,这么想来居然也是一个不错的机会。好了废话就到这里,下面正文开始。
搭建步骤
本篇博客我们会从下面几个步骤去搭建服务器
wget
:安装一些系统常用的软件zsh
:首先就是配置shell
了,系统自带的shell
实在是太难用。ssh
:接下来配置ssh
、方便我们使用自己的电脑管理服务器。vim
、python3
: 这里升级vim8
,需要用到python3
的环境- 开一个普通用户,下面的操作我们都在普通用户中进行。
ftp
:用于传输文件等Docker
:这里配置Docker
及项目服务
基础配置
- 首先更新一下
yum
$ yum update
- 然后安装一些常用的系统软件,这里我的系统里预装过了
$ yum install curl wget
安装 git
$ yum install git
- 配置
yum
国内源
我们首先备份原配置
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载网易的源然后改名放到 /etc/yum.repos.d/
目录
对应系统需要下载对应的文件
CentOS5:http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS6:http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS7:http://mirrors.163.com/.help/CentOS7-Base-163.repo
$ wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
$ mv CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
- 安装
zsh
我们刚连接的服务器是灰色的,界面简直 low 到爆,为了更高的效率和更好的心情,我们配置一个好看的shell
$ yum install zsh
查看本机中的 shell
$ cat /etc/shells
没有问题的话继续安装 on-my-zsh
// 下面都可以安装,选择其一即可
$ wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
$ sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
出现下面标志性的界面就成功了
更改默认的 shell
// 查看当前的 shell
$ echo $SHELL
// 更改默认的 shell
$ sudo chsh -s /bin/zsh
重启服务器,然后连接,可以看到界面已经变了,瞬间舒服很多
然后挑一款自己喜欢的主题修改就好了,我这里使用的是 cloud
,主题列表
修改方法如下
$ vim ~/.zshrc
修改字段 ZSH_THEME="cloud"
,然后保存更新配置
$ source ~/.zshrc
- 配置
ssh
连接
我们首先去阿里云的控制台查看,22
端口是配置过安全组,可以对外访问的
根据不同系统,配置连接就。
windows
用户需要下载 Xshell
,安装时选择学习使用不需要激活,然后新建一个连接就可以使用了
Mac
下直接使用终端就可以连接,输入 ssh <用户 root>@<主机 ip 地址>
然后输入密码就可以,例如 ssh root@0.0.0.0
注意的是,终端连接服务器长时间不操作会中断连接。Xshell
的话,我目前还没有遇到,长时间不操作也是连接着的。
- 添加一个普通用户
$ adduser test
$ passwd test
然后设置用户权限,使用户可以使用 root
命令
这里 /etc/sudoers
是默认只读的,切换到 root
用户先去把权限修改了
// 提示 cmooand not found
$ sudoers
// 查找文件位置
$ whereis sudoers
// 查看权限
$ ls -l /etc/sudoers
// 修改权限
$ chmod -v u+w /etc/sudoers
添加你的新用户
$ vim /etc/sudoers
然后把权限写回
$ chmod -v u-w /etc/sudoers
这时我们的普通用户就已经有 sudo
的权限了
然后我们 su
进入用户后,发现 shell
还是使用自带的,非 root
用户每次安装的目录都是 /root/.oh-my-zsh
导致非 root 用户 oh-my-zsh
没有效果,这里需要手动安装,步骤如下
下载代码到指定位置
$ git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
更新配置文件(重要
)
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
修改默认 shell
// 查看当前的 shell
$ echo $SHELL
// 更改默认的 shell
$ sudo chsh -s /bin/zsh
如果修改失败使用下面的命令修改,test
修改为你的用户名
$ sudo usermod -s /bin/zsh test
然后重新进入用户,这里默认的 shell
已经修改了
这里每个系统用户的配置是不一样的,按照上面的修改方法自行修改主题配置就可以了
- 升级
vim
到版本 8
先简单介绍下,yum
只可以使用 python2.7
的版本,而 vim8
需要 python3
的版本,这里配置坑很多,要多多注意
首先我们查看 跑 python
安装在什么地方
$ whereis python
查看信息,可以看到 python
默认是指向 2.7
版本的
$ ll /usr/bin/python*
这里我们配置 python
指向 3
、python3
指向 3
、python2
指向 2
首先安装 python3
的编译环境
$ yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
下载 python3
的包
$ wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
添加 epel
扩展源
$ yum -y install epel-release
安装pip
$ yum install python-pip
变异 python3
的源码包
// 解压
$ xz -d Python-3.6.4.tar.xz
$ tar -xf Python-3.6.4.tar
// 进入解压后的目录
// 依次执行下面命令进行手动编译
$ cd Python-3.6.4
$ ./configure prefix=/usr/local/python3
$ make && make install
添加软链接
// 将原来的链接备份
$ mv /usr/bin/python /usr/bin/python.bak
// 添加 python3 的软链接
$ ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
// 测试,如果出现 3 点多的版本则成功
$ python -V
更改 yum
的配置,yum
需要 python2
的依赖
把下面文件中第一行的 python
改为 python2
$ vi /usr/bin/yum
$ vi /usr/libexec/urlgrabber-ext-down
下面就可以升级 vim
了
下载源码
$ git clone https://github.com/vim/vim.git
编译
$ cd vim
$ ./configure --enable-pythoninterp=yes
$ make -j 8
$ make install
$ cp src/vim /usr/bin
都跑完以后查看一下版本
看到已经是 8.1
了
ftp
配置
我的另一篇文章里有详细的配置,可以去参考,CentOS 服务器配置 ftpDocker
配置
安装一些必要的系统工具
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装 Docker
$ yum -y install docker
启动 Docker
服务
$ service docker start
// 开机自启动
$ systemctl enable docker
安装镜像加速,加快获取官方镜像的速度
$ vim /etc/docker/daemon.json
添加如下配置
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
镜像地址去找阿里云或者网易的都可以,阿里云的主机还有独自的镜像地址,如下图,有服务器的可以去查找
上面的示例代码使用网易的镜像地址
查看服务启动情况
$ systemctl list-units --type=service
如果有错误的话,按照下面日志排查错误
// 查看日志
$ cat /var/log/nginx/error.log
// 查看启动错误信息,可以查询到 Systemd 的启动日志
$ journalctl -xe
错误处理
- yum 损坏重新安装
我在配置python
的时候把yum
损坏了,这里先贴出yum
的安装方法
删除原来的旧包
$ rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps
$ whereis yum |xargs rm -frv
去这里的地址找到下面四个包,版本号会更新所以需要自己去页面中找,地址传送门
1、yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
2、yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
3、yum-3.2.29-81.el6.centos.noarch.rpm
4、python-iniparse-0.3.1-2.1.el6.noarch.rpm
下载命令
$ wget url
例如下载第一个包,如下
$ wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
把上面的包下载到服务器的随便一个文件夹
然后使用 rpm
安装对应的包
$ rpm -ivh yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
这里如果有依赖错误的话,加 --nodeps
执行命令,如下
$ rpm --nodeps -ivh yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
且 yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
和 yum-3.2.29-81.el6.centos.noarch.rpm
需要同时安装
进入 /etc/yum.repos.d
文件夹下更新配置
$ wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
删除原来的配置文件
$ rm -rf CentOS-Base.repo
修改新配置文件名
$ mv CentOS7-Base-163.repo CentOS7-Base.repo
然后就可以了
- Postfix 服务启动失败
执行 journalctl -xe 命令后发现如下报错
parameter inet——interfaces: no local interface found for :: 1
修改方法
$ vim /etc/postfix/main.cf
修改文件配置
inet_interfaces: all
inet_protocol: all
重启服务,然后就没问题了