前言
昨天在服务器搭建
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 服务器配置 ftp
-
Docker
配置
安装一些必要的系统工具
$ 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
重启服务,然后就没问题了