惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Stack Overflow Blog
Stack Overflow Blog
量子位
Cyberwarzone
Cyberwarzone
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
D
Darknet – Hacking Tools, Hacker News & Cyber Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Know Your Adversary
Know Your Adversary
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
D
Docker
大猫的无限游戏
大猫的无限游戏
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
Hacker News: Ask HN
Hacker News: Ask HN
SecWiki News
SecWiki News
F
Full Disclosure
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Heimdal Security Blog
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
Cloudbric
Cloudbric
W
WeLiveSecurity
S
Schneier on Security
Project Zero
Project Zero
T
Threat Research - Cisco Blogs
罗磊的独立博客
Schneier on Security
Schneier on Security
G
Google Developers Blog
Cisco Talos Blog
Cisco Talos Blog
L
Lohrmann on Cybersecurity
A
Arctic Wolf
P
Privacy & Cybersecurity Law Blog
小众软件
小众软件
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
S
Security Affairs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园_首页

轶哥博客

blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog
blog
2016-04-28 · via 轶哥博客

  利用Docker部署的服务器环境已经成为目前主流。为了实现高负载、易于拓展,我们采用Nginx作为反代,Redis记录访问日志。(主机服务器环境:CentOS7.3,2017年05月02日19:57:08更新)

1、安装并启动Docker

1. 设置仓库

  在CentOS中设置Docker CE的仓库地址。

sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo yum makecache fast

2. 获取并安装最新版的Docker CE

  在CentOS中安装最新的Docker CE。

sudo yum -y install docker-ce

  设置Docker开启自启动:

sudo systemctl enable docker

  启动Docker:

sudo systemctl start docker

查看docker的信息,检查是否安装成功。

docker info

附:CentOS7的systemctl命令:

systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl --failed #显示启动失败的服务

与老版本对比,以httpd为例,则:

启动服务(等同于service httpd start) systemctl start httpd.service 停止服务(等同于service httpd stop) systemctl stop httpd.service

2、在Docker中安装Nginx

docker run -d -p 80:80 nginx

  这是运行命令,但docker会检测是否存在本地镜像nginx,如果不存在则执行“docker pull nginx”,你会看到下载docker镜像的界面。如果下载成功则会自动执行,如果执行成功,则会输出一串字符串。如下图

docker-stop

  PS:如果自动下载不成功,在安全性要求不高的情况下可以使用国内镜像,否则请使用安全的网络环境和可信来源。运行docker pull nginx可以直接pull到nginx镜像,但不启动。

  这个步骤安装成功后,访问服务器IP地址,则会出现以下页面,说明安装成功!

wellcome-to-nginx

  这时候使用docker ps可以看到正在运行的nginx docker。

docker-stop

  使用docker stop ID可以终止该项目。

  其中“ID”可以用前几个字符,只要能唯一识别即可。例如上图中的容器ID,我们可以使用“1e3c3ce23d5b”,也可以使用“1e3c”来结束容器。同理,其它docker的操作也是类似的。

  docker ps -a可以查看运行过的所有docker,包括已经运行结束了的docker。

  第一个命令中“docker run”后面的“-d”代表是否在后台运行,去掉这个“-d”执行docker run -p 80:80 nginx可以看到访问记录。使用Ctrl + CControl + C结束执行docker容器自动退出。因此在服务器中执行时请带上“-d”参数。

  使用docker images可以查看安装了的所有本地镜像。

3、在Docker中安装Node.js并运行Node.js程序

  docker pull node获取最新版Node.js镜像。安装完毕后可以通过docker run -it --rm node node --version查看node.js版本号。

  接下来上传你的源代码到服务器。确保你的源代码目录下package.json文件配置正确。

然后安装依赖:

docker run --rm -it -v "$(pwd)":/webapp -w /webapp  node npm instal

运行程序:

docker run -itd -p 3000:80 --name WebApp -v "$(pwd)":/webapp -w /webapp  node npm start

  -v后面的:代表分割的路径,前者表示宿主的路径(在这里也就是expressjs项目的主目录),后者表示映射到Docker容器的路径。

  -w:表示将-v映射的/webapp目录设置为work directory,也就是运行node命令的目录。这个设置将覆盖Dockfiie中的设置:/Data。

其中-itd

  * i,容器的标准输入保持打开   * t,Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入   * d:Docker容器跑在后台。

  --rm,运行结束后删除容器。

4、Nginx反代

  利用Nginx反代能够很方便的实现负载均衡等运用。

mkdir config

  在/root目录下创建一个名为config的目录用于存放Nginx的配置文件。;在这个配置文件中配置反向代理vim config/nginx.conf

server {
        listen 80;
        server_name www.abc.com;
        charset utf-8;
        autoindex off;
        location / {
            proxy_pass  http://webapp:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

  需要注意的是,命令中的“pwd/config”代表server文件的本地路径,意思是当前目录下的config文件,将会映射到docker容器的nginx配置路径。而“:”后面的路径则是服务器中的路径,默认的nginx.conf文件中包含“include /etc/nginx/conf.d/*.conf;”,也就是默认载入conf.d文件夹中的.conf后缀的文件。最后执行这个命令会在当前目录下创建logs目录,存放access.log和error.log。刚开始配置的时候,最好去掉“-itd”中的“d”,运行命令查看是否存在问题。如果运行正常,先执行“docker rm $(docker ps -a -q)”清除所有已经执行过的docker,再执行带“d”的命令进入后台运行。