云服务器ECS中配置Nginx和Docker

今天心血来潮买了一个阿里云ECS云服务器,然后想起来以前还买过一个域名一直没用上,就拿来玩玩。

绑定域名

在域名的控制台进行DNS解析,绑定好云服务器的公网IP

  • 记录类型:默认A
  • 主机记录:www ,就是给域名加一个前缀
  • 解析路线:默认
  • 记录值:云服务器的公网ip地址
  • TTL:默认

配置好后,ping 域名 检测一下,可以访问

接下来就可以部署一些自己的应用了


远程连接到服务器 ssh root@IP 输入密码,即可连接

首先对服务器进行升级 sudo apt-get update

Node

参考

wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz 下载源码

xz -d node-v10.15.1-linux-x64.tar.xz tar -xvf node-v10.15.1-linux-x64.tar 解压

rm node-v10.15.1-linux-x64.tar 删除多余文件夹

1
2
ln -s /root/node-v10.15.1-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v10.15.1-linux-x64/bin/npm /usr/local/bin/npm

创建软链接便于全局访问

为了更清晰的管理文件夹

1
2
3
4
5
6
mkdir -p /tool/node/
mv /root/node-v10.15.1-linux-x64/* /tool/node/
rm -f /usr/local/bin/node
rm -f /usr/local/bin/npm
ln -s /tool/node/bin/node /usr/local/bin/node
ln -s /tool/node/bin/npm /usr/local/bin/npm

查看版本发现已经安装成功

Pm2

npm install pm2 -g pm2可以用它来管理node进程 pm2命令

同样要配置软链接,类似于windows中的环境变量 ln -s /tool/node/bin/pm2 /usr/local/bin/

Nginx

Nginx是一个高性能的 HTTP 和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服, 是一个asynchronousservers异步服务器, 一般用来处理高并发

新建一个目录专门存放安装包(不然以后看起来很混乱)mkdir ~/software

下载并解压安装包至指定目录

wget -P ~/software/ http://nginx.org/download/nginx-1.12.2.tar.gz

tar -zxvf nginx-1.12.2.tar.gz -C ~/tool

进入所在目前执行默认配置 ./configure 此步骤会报错因为还有很多依赖包没有安装

1
2
3
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g-dev
apt-get install openssl libssl-dev

安装完毕后编译make 成功后多出一个Makefile文件

然后make install 会安装在 /usr/local/nginx

不知道为什么我在root目录想看不到usr文件夹?

直接 cd /usr/local/nginx 进到nginx目录直接运行./sbin/nginx

结果说我没有安装??

算了不编译了,apt一把梭 apt-get install nginx

运行时提示端口被占用 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

netstat -ntlp 查看端口情况 杀死进程 kill id 重新运行

ps aux|grep nginx 可以查看Nginx进程情况

但此时还不能通过浏览器直接访问,要在阿里云控制台进行安全组配置 分别设置入方向和出方向规则

刷新网站即可看到80端口可以访问了

非常有帮助的参考

Docker

查看位数getconf LONG_BIT 64位

查看系统lsb_release -a

查看内核版本uname -r 4.4.0-170-generic

查看可安装的docker版本apt-cache madison docker-ce 居然没有。。看了要换镜像

apt-get -y install apt-transport-https ca-certificates curl software-properties-common 允许用于通过HTTPS来获取仓库

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 添加 Docker 的官方 GPG 密钥

sudo apt-key fingerprint 0EBFCD88 确认密钥

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" 添加阿里云镜像仓库

更新 sudo apt-get update

再次apt-cache madison docker-ce 就可以看到极多版本的docker了

安装sudo apt-get install docker-ce docker-ce-cli containerd.io

查看docker是否启动 systemctl status docker 未启动则启动 systemctl start docker

尝试允许hello-world 的image,没有问题,安装成功

参考

其他

安装了git方便以后管理代码

本来还想弄个gitbook部署上去,但是域名访问还要备案,内容也还没开始写,同步起来也比较麻烦,还是以后再弄吧

大致步骤是先在本地写好md文件及目录结构,build生成对应的静态文件,其中gitbook的源码还要结合nginx或express,用server.js设置好端口

然后将除modules以外的文件同步到github。服务器clone仓库,进入目录执行npm install安装依赖。 pm2执行server.js即可访问