蚊章汇 - Muhammad Arul
type: channel
link: https://linuxcn.bwsl.wang/author/199/
description: Muhammad Arul
items: 如何 Docker 化 Python Django 应用程序
items: 如何在 Ubuntu 安装 Go 语言编写的 Git 服务器 Gogs
items: 如何在 Ubuntu 16.04 上安装 OTRS （开源问题单系统）
items: 如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用
items: 如何在 Ubuntu16.04 中用 Apache 部署 Jenkins 自动化服务器
items: 如何在 CentOS 7 上安装 Elastic Stack
items: 如何在 CentOS 7 中在 HHVM 和 Nginx 之上安装 WordPress
items: 如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud
items: 如何在 Ubuntu 16.04 中安装 Ceph 存储集群
items: 在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

如何 Docker 化 Python Django 应用程序
type: item
date: 2018-09-13T06:42:00+08:00
description: Docker 是一个开源项目，为开发人员和系统管理员提供了一个开放平台，可以将应用程序构建、打包为一个轻量级容器，并在任何地方运行。Docker 会在软件容器中自动部署应用程序。Django 是一个用 Python 编写的 Web 应用程序框架，遵循 MVC（模型-视图-控制器）架构。它是免费的，并在开源许可下发布。它速度很快，旨在帮助开发人员尽快将他们的应用程序上线。在本教程中，我将逐步向你展示在 Ubuntu 16.04 中如何为现有的 Django 应用程序创建 docker 镜像。我们将学习如何 docker 化一个 Python Django 应用程序，然后使用一个 docker-compose 脚本将应用程序作为容器部署到 docker 环境。为了部署我们的 Python Django 应用程序，我们需要其它 docker 镜像：一个用于 Web 服务器的 nginx docker 镜像和用于数据库的 PostgreSQL 镜像。我们要做什么？安装 Docker-ce安装 Docker-compose配置项目环境构建并运行测试步骤 1 - 安装 Docker-ce在本教程中，我们将从 docker 仓库安装 docker-ce 社区版。我们将安装 docker-ce 社区版和 docker-compose（其支持 compose 文件版本 3）。在安装 docker-ce 之前，先使用 apt 命令安装所需的 docker 依赖项。sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ software-properties-common现在通过运行以下命令添加 docker 密钥和仓库。curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"更新仓库并安装 docker-ce。sudo apt update sudo apt install -y docker-ce安装完成后，启动 docker 服务并使其能够在每次系统引导时启动。systemctl start docker systemctl enable docker接着，我们将添加一个名为 omar 的新用户并将其添加到 docker 组。useradd -m -s /bin/bash omar usermod -a -G docker omar以 omar 用户身份登录并运行 docker 命令，如下所示。su - omar docker run hello-world确保你能从 Docker 获得 hello-world 消息。Docker-ce 安装已经完成。步骤 2 - 安装 Docker-compose在本教程中，我们将使用支持 compose 文件版本 3 的最新 docker-compose。我们将手动安装 docker-compose。使用 curl 命令将最新版本的 docker-compose 下载到 /usr/local/bin 目录，并使用 chmod 命令使其有执行权限。运行以下命令：sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose现在检查 docker-compose 版本。docker-compose version确保你安装的是最新版本的 docker-compose 1.21。已安装支持 compose 文件版本 3 的 docker-compose 最新版本。步骤 3 - 配置项目环境在这一步中，我们将配置 Python Django 项目环境。我们将创建新目录 guide01，并使其成为我们项目文件的主目录，例如包括 Dockerfile、Django 项目、nginx 配置文件等。登录到 omar 用户。su - omar创建一个新目录 guide01，并进入目录。mkdir -p guide01 cd guide01/现在在 guide01 目录下，创建两个新目录 project 和 conf…

如何在 Ubuntu 安装 Go 语言编写的 Git 服务器 Gogs
type: item
date: 2018-02-28T06:31:57+08:00
description: Gogs 是由 Go 语言编写的，自由开源的 Git 服务。Gogs 是一款无痛式自托管的 Git 服务器，能在尽可能小的硬件资源开销上搭建并运行您的私有 Git 服务器。Gogs 的网页界面和 GitHub 十分相近，且提供 MySQL、PostgreSQL 和 SQLite 数据库支持。在本教程中，我们将使用 Gogs 在 Ununtu 16.04 上按步骤指导您安装和配置您的私有 Git 服务器。这篇教程中涵盖了如何在 Ubuntu 上安装 Go 语言、PostgreSQL 和安装并且配置 Nginx 网页服务器作为 Go 应用的反向代理的细节内容。搭建环境Ubuntu 16.04Root 权限我们将会接触到的事物更新和升级系统安装和配置 PostgreSQL安装 Go 和 Git安装 Gogs配置 Gogs运行 Gogs 服务器安装和配置 Nginx 反向代理测试步骤 1 - 更新和升级系统继续之前，更新 Ubuntu 所有的库，升级所有包。运行下面的 apt 命令：sudo apt update sudo apt upgrade 步骤 2 - 安装和配置 PostgreSQLGogs 提供 MySQL、PostgreSQL、SQLite 和 TiDB 数据库系统支持。此步骤中，我们将使用 PostgreSQL 作为 Gogs 程序的数据库。使用下面的 apt 命令安装 PostgreSQL。sudo apt install -y postgresql postgresql-client libpq-dev 安装完成之后，启动 PostgreSQL 服务并设置为开机启动。systemctl start postgresql systemctl enable postgresql 此时 PostgreSQL 数据库在 Ubuntu 系统上完成安装了。之后，我们需要为 Gogs 创建数据库和用户。使用 postgres 用户登录并运行 psql 命令以访问 PostgreSQL 操作界面。su - postgres psql 创建一个名为 git 的新用户，给予此用户 CREATEDB 权限。CREATE USER git CREATEDB; \password git 创建名为 gogs_production 的数据库，设置 git 用户作为其所有者。CREATE DATABASE gogs_production OWNER git; 用于 Gogs 的 gogs_production PostgreSQL 数据库和 git 用户已经创建完毕。步骤 3 - 安装 Go 和 Git使用下面的 apt 命令从库中安装 Git。sudo apt install git 此时，为系统创建名为 git 的新用户。sudo adduser --disabled-login --gecos 'Gogs' git 登录 git 账户并且创建名为 local 的目录。su - git mkdir -p /home/git/local 切换到 local 目录，依照下方所展示的内容，使用 wget 命令下载 Go（最新版）。cd ~/local wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz 解压并且删除 go 的压缩文件。tar -xf go1.9.2.linux-amd64.tar.gz rm -f go1.9.2.linux-amd64.tar.gz Go 二进制文件已经被下载到 ~/local/go 目录。此时我们需要设置环境变量 - 设置 GOROOT 和 GOPATH 目录到系统环境，这样，我们就可以在 git 用户下执行 go 命令。执行下方的命令。cd ~/ echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc 之后通过运行 source ~/.bashrc 重载 Bash，如下：source ~/.bashrc 确定您使用的 Bash 是默认的 shell。现在运行 go 的版本查看命令。go version 之后确保您得到下图所示的结果。现在，Go 已经安装在系统的 git 用户下了。步骤 4 - 使用 Gogs 安装 Git 服务使用 git 用户登录并且使用 go 命令从 GitHub 下载 Gogs。su - git go get -u github.com/gogits/go…

如何在 Ubuntu 16.04 上安装 OTRS （开源问题单系统）
type: item
date: 2017-06-02T16:23:00+08:00
description: OTRS ，即开源 问题单 （ ticket ） 申请系统，是一个用于客户服务、帮助台和 IT 服务管理的开源问题单软件。该软件是用 Perl 和 javascript 编写的。对于那些需要管理票据、投诉、支持请求或其他类型的报告的公司和组织来说，这是一个问题单解决方案。OTRS 支持包括 MySQL、PostgreSQL、Oracle 和 SQL Server 在内的多个数据库系统，它是一个可以安装在 Windows 和 Linux 上的多平台软件。在本教程中，我将介绍如何在 Ubuntu 16.04 上安装和配置 OTRS。我将使用 PostgreSQL 作为 OTRS 的数据库，将 Apache Web 服务器用作 Web 服务器。先决条件Ubuntu 16.04。最小 2GB 的内存。root 权限步骤 1 - 安装 Apache 和 PostgreSQL在第一步中，我们将安装 Apache Web 服务器以及 PostgreSQL。我们将从 ubuntu 仓库中使用最新的版本。使用 SSH 登录到你的 Ubuntu 服务器中：ssh root@192.168.33.14 更新 Ubuntu 仓库。sudo apt-get update 使用 apt 安装 Apache2 以及 PostgreSQL：sudo apt-get install -y apache2 libapache2-mod-perl2 postgresql 通过检查服务器端口确保 Apache 以及 PostgreSQL 运行了。netstat -plntu 你可以看到 80 端口被 apache 使用了，5432 端口被 postgresql 数据库使用了。步骤 2 - 安装 Perl 模块OTRS 基于 Perl，因此我们需要安装一些 OTRS 需要的 Perl 模块。使用这个 apt 命令安装 perl 模块：sudo apt-get install -y libapache2-mod-perl2 libdbd-pg-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libsoap-lite-perl libgd-text-perl libgd-graph-perl libapache-dbi-perl libarchive-zip-perl libcrypt-eksblowfish-perl libcrypt-ssleay-perl libencode-hanextra-perl libjson-xs-perl libmail-imapclient-perl libtemplate-perl libtext-csv-xs-perl libxml-libxml-perl libxml-libxslt-perl libpdf-api2-simple-perl libyaml-libyaml-perl 安装完成后，我们需要为 apache 激活 Perl 模块，接着重启 apache 服务。a2enmod perl systemctl restart apache2 接下来，使用下面的命令检查模块是否已经加载了：apachectl -M | sort 你可以在 “Loaded Modules” 部分下看到 perl\_module。步骤 3 - 为 OTRS 创建新用户OTRS 是一个基于 web 的程序并且运行与 apache web 服务器下。为了安全，我们需要以普通用户运行它，而不是 root 用户。使用 useradd 命令创建一个 otrs 新用户：useradd -r -d /opt/otrs -c 'OTRS User' otrs -r：将用户作为系统用户。-d /opt/otrs：在 /opt/otrs 下放置新用户的主目录。-c：备注。接下来，将 otrs 用户加入到 www-data 用户组，因为 apache 运行于 www-data 用户及用户组。usermod -a -G www-data otrs 在 /etc/passwd 文件中已经有 otrs 用户了。grep -rin otrs /etc/passwd OTRS 的新用户已经创建了。步骤 4 - 创建和配置数据库在这节中，我们会为 OTRS 系统创建一个新 PostgreSQL 数据库，并对 PostgreSQL 数据库的配置做一些小的更改。登录到 postgres 用户并访问 PostgreSQL shell。su - postgres psql 创建一个新的角色 otrs，密码是 myotrspw，并且是非特权用户。create user otrs pass…

如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用
type: item
date: 2017-05-09T17:41:31+08:00
description: pm2 是一个 Node.js 应用的进程管理器，它可以让你的应用程序保持运行，还有一个内建的负载均衡器。它非常简单而且强大，你可以零间断重启或重新加载你的 node 应用，它也允许你为你的 node 应用创建集群。在这篇博文中，我会向你展示如何安装和配置 pm2 用于这个简单的 'Express' 应用，然后配置 Nginx 作为运行在 pm2 下的 node 应用的反向代理。前提：Ubuntu 16.04 - 64bitRoot 权限第一步 - 安装 Node.js LTS在这篇指南中，我们会从零开始我们的实验。首先，我们需要在服务器上安装 Node.js。我会使用 Nodejs LTS 6.x 版本，它能从 nodesource 仓库中安装。从 Ubuntu 仓库安装 python-software-properties 软件包并添加 “nodesource” Nodejs 仓库。sudo apt-get install -y python-software-properties curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - 安装最新版本的 Nodejs LTS：sudo apt-get install -y nodejs 安装完成后，查看 node 和 npm 版本。node -v npm -v 第二步 - 生成 Express 示例 App我会使用 express-generator 软件包生成的简单 web 应用框架进行示例安装。express-generator 可以使用 npm 命令安装。用 npm安装 express-generator：npm install express-generator -g -g ： 在系统内部安装软件包。我会以普通用户运行应用程序，而不是 root 或者超级用户。我们首先需要创建一个新的用户。创建一个名为 yume 的用户：useradd -m -s /bin/bash yume passwd yume 使用 su 命令登录到新用户：su - yume 下一步，用 express 命令生成一个新的简单 web 应用程序：express hakase-app 命令会创建新项目目录 hakase-app。进入到项目目录并安装应用需要的所有依赖。cd hakase-app npm install 然后用下面的命令测试并启动一个新的简单应用程序：DEBUG=myapp:* npm start 默认情况下，我们的 express 应用会运行在 3000 端口。现在访问服务器的 IP 地址：192.168.33.10:3000 ：这个简单 web 应用框架现在以 'yume' 用户运行在 3000 端口。第三步 - 安装 pm2pm2 是一个 node 软件包，可以使用 npm 命令安装。（用 root 权限，如果你仍然以 yume 用户登录，那么运行命令 exit 再次成为 root 用户）：npm install pm2 -g 现在我们可以为我们的 web 应用使用 pm2 了。进入应用目录 hakase-app：su - yume cd ~/hakase-app/ 这里你可以看到一个名为 package.json 的文件，用 cat 命令显示它的内容。cat package.json 你可以看到 start 行有一个 nodejs 用于启动 express 应用的命令。我们会和 pm2 进程管理器一起使用这个命令。像下面这样使用 pm2 命令运行 express 应用：pm2 start ./bin/www 现在你可以看到像下面这样的结果：我们的 express 应用正在 pm2 中运行，名称为 www，id 为 0。你可以用 show 选项 show nodeid|name 获取更多 pm2 下运行的应用的信息。pm2 show www 如果你想看我们应用的日志，你可以使用 logs 选项。它包括访问和错误日志，你还可以看到应用程序的 HTTP 状态。pm2 logs www 你可以看到我们的程序正在运行。现在，让我们来让它开机自启动。pm2 startup systemd systemd： Ubuntu 16 使用的是 systemd。你会看到要用 root 用户运行命令的信息。使用 exit 命令回到 root 用户然后运行命令。sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u yume --hp /home/yume 它会为启动应用程序生成 systemd 配置文件。当你重启服务器的时候…

如何在 Ubuntu16.04 中用 Apache 部署 Jenkins 自动化服务器
type: item
date: 2017-05-08T16:29:33+08:00
description: Jenkins 是从 Hudson 项目衍生出来的自动化服务器。Jenkins 是一个基于服务器的应用程序，运行在 Java servlet 容器中，它支持包括 Git、SVN 以及 Mercurial 在内的多种 SCM（ 源码控制工具 （ Source Control Management ） ）。Jenkins 提供了上百种插件帮助你的项目实现自动化。Jenkins 由 Kohsuke Kawaguchi 开发，在 2011 年使用 MIT 协议发布了第一个发行版，它是个自由软件。在这篇指南中，我会向你介绍如何在 Ubuntu 16.04 中安装最新版本的 Jenkins。我们会用自己的域名运行 Jenkins，在 apache web 服务器中安装和配置 Jenkins，而且支持反向代理。前提Ubuntu 16.04 服务器 - 64 位Root 权限第一步 - 安装 Java OpenJDK 7Jenkins 基于 Java，因此我们需要在服务器上安装 Java OpenJDK 7。在这里，我们会从一个 PPA 仓库安装 Java 7，首先我们需要添加这个仓库。默认情况下，Ubuntu 16.04 没有安装用于管理 PPA 仓库的 python-software-properties 软件包，因此我们首先需要安装这个软件。使用 apt 命令安装 python-software-properties。apt-get install python-software-properties 下一步，添加 Java PPA 仓库到服务器中。add-apt-repository ppa:openjdk-r/ppa 用 apt 命令更新 Ubuntu 仓库并安装 Java OpenJDK。apt-get update apt-get install openjdk-7-jdk 输入下面的命令验证安装：java -version 你会看到安装到服务器上的 Java 版本。第二步 - 安装 JenkinsJenkins 给软件安装包提供了一个 Ubuntu 仓库，我们会从这个仓库中安装 Jenkins。用下面的命令添加 Jenkins 密钥和仓库到系统中。wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb https://pkg.jenkins.io/debian-stable binary/' | tee -a /etc/apt/sources.list 更新仓库并安装 Jenkins。apt-get update apt-get install jenkins 安装完成后，用下面的命令启动 Jenkins。systemctl start jenkins 通过检查 Jenkins 默认使用的端口（端口 8080）验证 Jenkins 正在运行。我会像下面这样用 netstat 命令检测：netstat -plntu Jenkins 已经安装好了并运行在 8080 端口。第三步 - 为 Jenkins 安装和配置 Apache 作为反向代理在这篇指南中，我们会在一个 Apache web 服务器中运行 Jenkins，我们会为 Jenkins 配置 apache 作为反向代理。首先我会安装 apache 并启用一些需要的模块，然后我会为 Jenkins 用域名 my.jenkins.id 创建虚拟主机文件。请在这里使用你自己的域名并在所有配置文件中出现的地方替换。从 Ubuntu 仓库安装 apache2 web 服务器。apt-get install apache2 安装完成后，启用 proxy 和 proxy\_http 模块以便将 apache 配置为 Jenkins 的前端服务器/反向代理。a2enmod proxy a2enmod proxy_http 下一步，在 sites-available 目录创建新的虚拟主机文件。cd /etc/apache2/sites-available/ vim jenkins.conf 粘贴下面的虚拟主机配置。<Virtualhost *:80> ServerName my.jenkins.id ProxyRequests Off ProxyPreserveHost On AllowEncodedSlashes NoDecode <Proxy http://localhost:8080/*> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/ nocano…

如何在 CentOS 7 上安装 Elastic Stack
type: item
date: 2017-04-29T18:36:00+08:00
description: Elasticsearch 是基于 Lucene 由 Java 开发的开源搜索引擎。它提供了一个分布式、多租户的全文搜索引擎（LCTT 译注：多租户是指多租户技术，是一种软件架构技术，用来探讨与实现如何在多用户的环境下共用相同的系统或程序组件，并且仍可确保各用户间数据的隔离性。），并带有 HTTP 仪表盘的 Web 界面（Kibana）。数据会被 Elasticsearch 查询、检索，并且使用 JSON 文档方案存储。Elasticsearch 是一个可扩展的搜索引擎，可用于搜索所有类型的文本文档，包括日志文件。Elasticsearch 是 Elastic Stack 的核心，Elastic Stack 也被称为 ELK Stack。Logstash 是用于管理事件和日志的开源工具。它为数据收集提供实时传递途径。 Logstash 将收集您的日志数据，将数据转换为 JSON 文档，并将其存储在 Elasticsearch 中。Kibana 是 Elasticsearch 的开源数据可视化工具。Kibana 提供了一个漂亮的仪表盘 Web 界面。 你可以用它来管理和可视化来自 Elasticsearch 的数据。 它不仅美丽，而且强大。在本教程中，我将向您展示如何在 CentOS 7 服务器上安装和配置 Elastic Stack 以监视服务器日志。 然后，我将向您展示如何在操作系统为 CentOS 7 和 Ubuntu 16 的客户端上安装 “Elastic beats”。前提条件64 位的 CentOS 7，4 GB 内存 - elk 主控机64 位的 CentOS 7 ，1 GB 内存 - 客户端 164 位的 Ubuntu 16 ，1 GB 内存 - 客户端 2步骤 1 - 准备操作系统在本教程中，我们将禁用 CentOS 7 服务器上的 SELinux。 编辑 SELinux 配置文件。vim /etc/sysconfig/selinux 将 SELINUX 的值从 enforcing 改成 disabled 。SELINUX=disabled 然后重启服务器：reboot 再次登录服务器并检查 SELinux 状态。getenforce 确保结果是 disabled。步骤 2 - 安装 Java部署 Elastic stack 依赖于Java，Elasticsearch 需要 Java 8 版本，推荐使用 Oracle JDK 1.8 。我将从官方的 Oracle rpm 包安装 Java 8。使用 wget 命令下载 Java 8 的 JDK。wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm" 然后使用 rpm 命令安装：rpm -ivh jdk-8u77-linux-x64.rpm 最后，检查 java JDK 版本，确保它正常工作。java -version 您将看到服务器的 Java 版本。步骤 3 - 安装和配置 Elasticsearch在此步骤中，我们将安装和配置 Elasticsearch。 从 elastic.co 网站提供的 rpm 包安装 Elasticsearch，并将其配置运行在 localhost 上（以确保该程序安全，而且不能从外部访问）。在安装 Elasticsearch 之前，将 elastic.co 的密钥添加到服务器。rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 接下来，使用 wget 下载 Elasticsearch 5.1，然后安装它。wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm rpm -ivh elasticsearch-5.1.1.rpm Elasticsearch 已经安装好了。 现在进入配置目录编辑 elasticsaerch.yml 配置文件。cd /etc/elasticsearch/ vim elasticsearch.yml 去掉第 40 行的注释，启用 Elasticsearch 的内存锁。这将禁用 Elasticsearch 的内存交换。bootstrap.memory_lock…

如何在 CentOS 7 中在 HHVM 和 Nginx 之上安装 WordPress
type: item
date: 2017-03-30T23:40:48+08:00
description: HHVM （HipHop Virtual Machine） 是一个用于执行以 PHP 和 Hack 语言编写的代码的虚拟环境。它是由 Facebook 开发的，提供了当前 PHP 7 的大多数功能。要在你的服务器上运行 HHVM，你需要使用 FastCGI 来将 HHVM 和 Nginx 或 Apache 衔接起来，或者你也可以使用 HHVM 中的内置 Web 服务器 Proxygen。在这篇教程中，我将展示给你如何在 Nginx Web 服务器的 HHVM 上安装 WordPress。这里我使用 CentOS 7 作为操作系统，所以你需要懂一点 CentOS 操作的基础。先决条件CentOS 7 - 64位Root 权限步骤 1 - 配置 SELinux 并添加 EPEL 仓库在本教程中，我们将使用 SELinux 的强制模式，所以我们需要在系统上安装一个 SELinux 管理工具。这里我们使用 setools 和 setrobleshoot 来管理 SELinux 的各项配置。CentOS 7 已经默认启用 SELinux，我们可以通过以下命令来确认：# sestatus # getenforce 如图，你能够看到，SELinux 已经开启了强制模式。接下来就是使用 yum 来安装 setools 和 setroubleshoot 了。# yum -y install setroubleshoot setools net-tools 安装好这两个后，再安装 EPEL 仓库。# yum -y install epel-release 步骤 2 - 安装 NginxNginx (发音：engine-x) 是一个高性能、低内存消耗的轻量级 Web 服务器软件。在 CentOS 中可以使用 yum 命令来安装 Nginx 包。确保你以 root 用户登录系统。使用 yum 命令从 CentOS 仓库中安装 nginx。# yum -y install nginx 现在可以使用 systemctl 命令来启动 Nginx，同时将其设置为跟随系统启动。# systemctl start nginx # systemctl enable nginx 为确保 Nginx 已经正确运行于服务器中，在浏览器上输入服务器的 IP，或者如下使用 curl 命令检查显示结果。# curl 192.168.1.110 我这里使用浏览器来验证。步骤 3 - 安装并配置 MariaDBMariaDB 是由原 MySQL 开发者 Monty Widenius 开发的一款开源数据库软件，它由 MySQL 分支而来，与 MySQL 的主要功能保持一致。在这一步中，我们要安装 MariaDB 数据库并为之配置好 root 密码，然后再为所要安装的 WordPress 创建一个新的数据库和用户。安装 mariadb 和 mariadb-server：# yum -y install mariadb mariadb-server 启动 MariaDB 并添加为服务，以便随系统启动。# systemctl start mariadb # systemctl enable mariadb 现在 MariaDB 已经启动了，还需要为 mariadb/mysql 数据库配置 root 用户密码。输入以下命令来设置 MariaDB root 密码。# mysql_secure_installation 提示设置 root 用户密码时，输入新密码进行设置：Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y ... Success! Disallow root login remotely? [Y/n] Y ... Success! Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y ... Success! 这样就设置好了 MariaDB 的 root 密码。现在登录到 MariaDB/MySQL shell 并为 WordPress 的安装创建一个新数据库 wordpressdb 和新用户 wpuser，密码设置为 wpuser@。为你的设置选用一个安全的密码。登录到 MariaDB/MySQL shell：# mysql -u root -p 接着输入你刚刚设置的 root 用户密码。创建数据库和用户：MariaDB [(none)]> create database wordpressdb; MariaDB [(none…

如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud
type: item
date: 2017-02-27T19:51:20+08:00
description: Nextcloud 是一款自由 (开源) 的类 Dropbox 软件，由 ownCloud 分支演化形成。它使用 PHP 和 JavaScript 编写，支持多种数据库系统，比如 MySQL/MariaDB、PostgreSQL、Oracle 数据库和 SQLite。它可以使你的桌面系统和云服务器中的文件保持同步，Nextcloud 为 Windows、Linux、Mac、安卓以及苹果手机都提供了客户端支持。Nextcloud 并非只是 Dropbox 的克隆，它还提供了很多附加特性，如日历、联系人、计划任务以及流媒体 Ampache。在这篇文章中，我将向你展示如何在 CentOS 7 服务器中安装和配置最新版本的 Nextcloud 10。我会通过 Nginx 和 PHP7-FPM 来运行 Nextcloud，同时使用 MariaDB 做为数据库系统。先决条件64 位的 CentOS 7服务器的 Root 权限步骤 1 - 在 CentOS 7 中安装 Nginx 和 PHP7-FPM在开始安装 Nginx 和 php7-fpm 之前，我们还学要先添加 EPEL 包的仓库源。使用如下命令：yum -y install epel-release 现在开始从 EPEL 仓库来安装 Nginx：yum -y install nginx 然后我们还需要为 php7-fpm 添加另外一个仓库。互联网中有很个远程仓库提供了 PHP 7 系列包，我在这里使用的是 webtatic。添加 PHP7-FPM webtatic 仓库：rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 然后就是安装 PHP7-FPM 以及 Nextcloud 需要的一些包。yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel 最后，从服务器终端里查看 PHP 的版本号，以便验证 PHP 是否正确安装。php -v 步骤 2 - 配置 PHP7-FPM在这一个步骤中，我们将配置 php-fpm 与 Nginx 协同运行。Php7-fpm 将使用 nginx 用户来运行，并监听 9000 端口。使用 vim 编辑默认的 php7-fpm 配置文件。vim /etc/php-fpm.d/www.conf 在第 8 行和第 10行，user 和 group 赋值为 nginx。user = nginx group = nginx 在第 22 行，确保 php-fpm 运行在指定端口。listen = 127.0.0.1:9000 取消第 366-370 行的注释，启用 php-fpm 的系统环境变量。env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp 保存文件并退出 vim 编辑器。下一步，就是在 /var/lib/ 目录下创建一个新的文件夹 session，并将其拥有者变更为 nginx 用户。mkdir -p /var/lib/php/session chown nginx:nginx -R /var/lib/php/session/ 然后启动 php-fpm 和 Nginx，并且将它们设置为随开机启动的服务。sudo systemctl start php-fpm sudo systemctl start nginx sudo systemctl enable php-fpm sudo systemctl enable nginx PHP7-FPM 配置完成步骤 3 - 安装和配置 MariaDB我这里使用 MariaDB 作为 Nextcloud 的数据库。可以直接使用 yum 命令从 CentOS 默认远程仓库中安装 mariadb-server 包。yum -y install mariadb mariadb-server 启动 MariaDB，并将其添加到随系统启动的服务中去。systemctl start mariadb systemctl enable mariadb 现在开始配置 MariaDB 的 root 用户密码。mysql_secure_installation 键入 Y ，然后设置 Ma…

如何在 Ubuntu 16.04 中安装 Ceph 存储集群
type: item
date: 2017-02-08T03:42:47+08:00
description: Ceph 是一个高性能、可靠、可扩展的开源存储平台。它是一个自由的分布式存储系统，提供了对象、块和文件级存储的接口，并可以不受单点故障的影响而运行。在这个教程中，我将指导你在 Ubuntu 16.04 服务器上安装建立一个 Ceph 集群。Ceph 集群包括这些组件：Ceph OSD (ceph-osd) - 控制数据存储，数据复制和恢复。Ceph 集群需要至少两个 Ceph OSD 服务器。这次安装中我们将使用三个 Ubuntu 16.04 服务器。Ceph Monitor (ceph-mon) - 监控集群状态并运行 OSD 映射 和 CRUSH 映射。这里我们使用一个服务器。Ceph Meta Data Server (ceph-mds) - 如果你想把 Ceph 作为文件系统使用，就需要这个。前提条件6 个安装了 Ubuntu 16.04 的服务器节点所有节点上的 root 权限我将使用下面这些 hostname /IP 安装：主机名 IP 地址 ceph-admin 10.0.15.10 mon1 10.0.15.11 osd1 10.0.15.21 osd2 10.0.15.22 osd3 10.0.15.23 client 10.0.15.15 第 1 步 - 配置所有节点这次安装，我将配置所有的 6 个节点来准备安装 Ceph 集群软件。所以你必须在所有节点运行下面的命令。然后确保所有节点都安装了 ssh-server。创建 Ceph 用户在所有节点创建一个名为 cephuser 的新用户useradd -m -s /bin/bash cephuser passwd cephuser 创建完新用户后，我们需要给 cephuser 配置无密码的 sudo 权限。这意味着 cephuser 可以不先输入密码而获取到 sudo 权限运行。运行下面的命令来完成配置。echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser chmod 0440 /etc/sudoers.d/cephuser sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers 安装和配置 NTP安装 NTP 来同步所有节点的日期和时间。先运行 ntpdate 命令通过 NTP 设置日期。我们将使用 US 池的 NTP 服务器。然后开启并使 NTP 服务在开机时启动。sudo apt-get install -y ntp ntpdate ntp-doc ntpdate 0.us.pool.ntp.org hwclock --systohc systemctl enable ntp systemctl start ntp 安装 Open-vm-tools如果你正在 VMware 里运行所有节点，你需要安装这个虚拟化工具。sudo apt-get install -y open-vm-tools 安装 Python 和 parted在这个教程，我们需要 python 包来建立 ceph 集群。安装 python 和 python-pip。sudo apt-get install -y python python-pip parted 配置 Hosts 文件用 vim 编辑器编辑所有节点的 hosts 文件。vim /etc/hosts 粘帖如下配置：10.0.15.10 ceph-admin 10.0.15.11 mon1 10.0.15.21 ceph-osd1 10.0.15.22 ceph-osd2 10.0.15.23 ceph-osd3 10.0.15.15 ceph-client 保存 hosts 文件，然后退出 vim 编辑器。现在你可以试着在两个服务器间 ping 主机名来测试网络连通性。ping -c 5 mon1 第 2 步 - 配置 SSH 服务器这一步，我们将配置 ceph-admin 节点。管理节点是用来配置监控节点和 osd 节点的。登录到 ceph-admin 节点然后使用 cephuser 用户。ssh root@ceph-admin su - cephuser 管理节点用来安装配置所有集群节点，所以 ceph-admin 上的用户必须有不使用密码连接到所有节点的权限。我们需要为 'ceph-admin' 节点的 cephuser 用户配置无密码 SSH 登录权限。生成 cephuser 的 ssh 密钥。ssh-keygen 让密码为空。下面，为 ssh 创建一个配置文件vim ~/.ssh/config 粘帖如下配置：Host ceph-admin …

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken
type: item
date: 2016-09-29T22:09:58+08:00
description: Shinken 是一个用 Python 实现的开源的主机和网络监控框架，并与 Nagios like 兼容，它可以运行在所有支持 Python 程序的操作系统上，比如说 Linux、Unix 和 Windows。Shinken 是 Jean Gabes 为了验证一个新的 Nagios 架构思路而编写，但是这个想法被 Nagios 的作者拒绝后成为了一个独立的网络系统监视软件，并保持了与 Nagios 的兼容。在这篇教程中，我将会描述如何从源代码编译安装 Shinken 和向监视系统中添加一台 Linux 主机。我将会以 Ubuntu 16.04 Xenial Xerus 操作系统来作为 Shinken 服务器和所监控的主机。第一步 安装 Shinken 服务器Shinken 是一个 Python 框架，我们可以通过 pip 安装或者从源码来安装它，在这一步中，我们将用源代码编译安装 Shinken。在我们开始安装 Shinken 之前还需要完成几个步骤。安装一些新的 Python 软件包并创建一个名为 shinken 的系统用户：sudo apt-get install python-setuptools python-pip python-pycurl useradd -m -s /bin/bash shinken 从 GitHub 仓库下载 Shinken 源代码：git clone https://github.com/naparuba/shinken.git cd shinken/ 然后用以下命令安装 Shinken：git checkout 2.4.3 python setup.py install 然后，为了得到更好的效果，我们还需要从 Ubuntu 软件库中安装 python-cherrypy3 软件包：sudo apt-get install python-cherrypy3 到这里，Shinken 已经成功安装，接下来我们将 Shinken 添加到系统启动项并且启动它：update-rc.d shinken defaults systemctl start shinken 第二步 安装 Shinken Webui2Webui2 是 Shinken 的 Web 界面（在 shinken.io 可以找到）。最简单的安装 Shinken webui2 的方法是使用shinken CLI 命令（必须作为 shinken 用户执行）。切换到 shinken 用户：su - shinken 初始化 shiken 配置文件，下面的命令将会创建一个新的配置文件 .shinken.ini ：shinken --init 接下来用 shinken CLI 命令来安装 webui2：shinken install webui2 至此 webui2 已经安装好，但是我们还需要安装 MongoDB 和用 pip 来安装另一个 Python 软件包。在 root 下运行如下命令：sudo apt-get install mongodb pip install pymongo>=3.0.3 requests arrow bottle==0.12.8 接下来，切换到 shinken 目录下并且通过编辑 broker-master.cfg 文件来添加这个新的 webui2 模块：cd /etc/shinken/brokers/ vim broker-master.cfg 在第 40 行添加一个模块选项：modules webui2 保存文件并且退出编辑器。现在进入 contacts 目录下编辑 admin.cfg 来进行管理配置。cd /etc/shinken/contacts/ vim admin.cfg 按照如下修改：contact_name admin # Username 'admin' password yourpass # Pass 'mypass' 保存和退出。第三步 安装 Nagios 插件和 Shinken 软件包在这一步中，我们将安装 Nagios 插件和一些 Perl 模块。然后从 shinken.io 安装其他的软件包来实现监视。安装 Nagios 插件和安装 Perl 模块所需要的 cpanminus：sudo apt-get install nagios-plugins* cpanminus 用 cpanm 命令来安装 Perl 模块。cpanm Net::SNMP cpanm Time::HiRes cpanm DBI 现在我们创建一个 utils.pm 文件的链接到 shinken 的目录，并且为 Log_File_Health 创建了一个新的日志目录 。chmod u+s /usr/lib/nagios/pl…