如何在CentOS6x86VPS上安装Diaspora

来自菜鸟教程
跳转至:导航、​搜索

状态:已弃用

本文介绍了不再受支持的 CentOS 版本。 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。

原因CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL) ,不再接收安全补丁或更新。 因此,不再维护本指南。

请参阅:本指南可能仍可用作参考,但可能不适用于其他 CentOS 版本。 如果可用,我们强烈建议使用为您正在使用的 CentOS 版本编写的指南。

以下 DigitalOcean 教程可能会立即引起人们的兴趣,因为它概述了在 CentOS 7 服务器上安装 Diaspora:


在 CentOS 6 x86 VPS 上安装 Diaspora


Diaspora 是一个开源的分布式社交网络。 Diaspora 'pods' 可以由任何人托管,而不是由一家公司控制和拥有用户内容的所有权。 Pod 通常经过配置,以便用户可以与其他公共 Pod 上的用户进行交互。

第 1 步:操作系统配置


添加交换空间

如果您正在运行 RAM 少于 2 GB 的 VPS(droplet),则需要在 VPS 上启用交换。 如果您不这样做,某些构建步骤可能会失败。

本教程有关于启用CentOS 6交换的说明。 对于较小的 VPS,添加至少 1 GB 的交换空间。

创建本地非 root 用户

大多数步骤将以具有 sudo 访问权限的非 root 用户身份运行。 本教程将引导您创建一个用户帐户并授予它sudo权力。

添加 EPEL 存储库

EPEL 代表企业 Linux 的额外软件包,它有一些我们需要安装的软件包,这些软件包不是基本 CentOS 存储库的一部分。

以本地用户身份登录并运行:

sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'

安装必备软件包

接下来,您将需要安装 Diaspora 构建和运行所需的软件包。

sudo yum install tar make automake gcc gcc-c++ git net-tools libcurl-devel libxml2-devel libffi-devel libxslt-devel tcl ImageMagick npm mysql-server mysql-devel nginx libyaml libyaml-devel patch readline-devel libtool bison

安装 Redis

Redis 是 Diaspora 所需的开源键值数据存储。 安装它并将其配置为在启动时启动:

sudo yum install redis.x86_64
sudo chkconfig --add redis
sudo chkconfig --level 345 redis on
sudo /etc/init.d/redis start

添加专门的侨民用户

这是将运行 Diaspora 的用户帐户。 您可以随意命名此帐户,但本教程将假定此用户名为 diaspora

sudo useradd diaspora

第 2 步:启动和配置 MySQL


接下来是为 Diaspora 配置 MySQL。

启动 MySQL

MySQL 之前已安装,但尚未运行。 启动 MySQL 服务器。

sudo /etc/init.d/mysqld start

创建侨民数据库和 MySQL 用户

首先,以 root 身份打开 MySQL。

sudo mysql

现在创建一个散居用户和我们将使用的数据库。

CREATE USER 'diaspora'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE diaspora_production;

现在授予创建的用户访问新数据库的权限:

GRANT ALL PRIVILEGES ON diaspora_production.* TO 'diaspora'@'localhost';
FLUSH PRIVILEGES;

输入 exit 退出 MySQL。

将 MySQL 设置为开机启动

将 CentOS 设置为在服务器重新启动时启动 MySQL 守护程序。

sudo chkconfig --level 345 mysqld on

第 3 步:安装和配置 Diaspora


下一步是获取 Diaspora 源并将其配置为在您的 VPS 上运行。 这些命令应该以您之前创建的 Diaspora 用户身份运行。

sudo su - diaspora

修复散居主目录的权限

为了提供 Diaspora 需要的一些文件,Diaspora 主目录权限需要放宽以允许开放读取和执行访问:

chmod ugo+rx ~diaspora

安装 rvm

确保您仍以 Diaspora 用户身份登录并安装 rvm 的 stable 分支:

\curl -s -S -L https://get.rvm.io | bash -s stable

rvm 将为散居用户的登录脚本添加一些环境设置; 为确保这些已设置,最容易注销然后重新登录。

exit
sudo su - diaspora

安装 Ruby

使用 rvm 安装 Diaspora 所需的 Ruby 版本。 可能不完全支持较新版本的 Ruby。

rvm autolibs read-only
rvm install 1.9.3-p448

获取 Diaspora 源代码

现在克隆 Diaspora 的源代码。

git clone git://github.com/diaspora/diaspora.git

输入 git 创建的 diaspora 文件夹。

cd diaspora

切换到 diaspora 目录后,您会看到警告通知:

********************************************************************************
* NOTICE                                                                       *
********************************************************************************
* RVM has encountered a new or modified .rvmrc file in the current directory,  *
* this is a shell script and therefore may contain any shell commands.         *
*                                                                              *
* Examine the contents of this file carefully to be sure the contents are      *
* safe before trusting it!                                                     *
* Do you wish to trust '/home/diaspora/diaspora/.rvmrc'?                       *
* Choose v[iew] below to view the contents                                     *
********************************************************************************
y[es], n[o], v[iew], c[ancel]>

键入 y 以确认您要信任 .rvmrc。

配置侨民数据库

将示例数据库配置文件复制到 Diaspora 期望的位置。

cp config/database.yml.example config/database.yml

调整 database.yml 中的设置以匹配您之前创建的数据库。

emacs config/database.yml

前几行显示了 MySQL 配置。 将用户名和密码更改为您之前在设置 MySQL 数据库时创建的 MySQL 帐户的用户名和密码。 该块最终应该看起来像这样,密码设置为您之前选择的密码:

mysql: &mysql
  adapter: mysql2
  host: "localhost"
  port: 3306
  username: "diaspora"
  password: "password"
  charset: utf8
  collation: utf8_bin

配置散居选项

复制示例配置文件,以便 Diaspora 可以找到它。

cp config/diaspora.yml.example config/diaspora.yml

在文本编辑器中打开此文件以编辑一些设置。

emacs config/diaspora.yml

您将需要更新一些内容:

  • 找到以 url: 开头的行并使用服务器的主机名对其进行更新,并通过删除任何前导 # 符号来取消注释该行。
  • 再往下几行,找到一行 #certificate_authorities: '/etc/pki/tls/certs/ca-bundle.crt' 并删除前导 # 以取消注释。
  • 再往下几行,找到以 require_ssl 开头的行。 删除此行的前导 # 并将值设置为 false。

安装所需的 Gems 和设置数据库

Ruby 需要获取并安装 Diaspora 需要的几个 gem。

RAILS_ENV=production bundle install --without test development

接下来构建数据库模式。

RAILS_ENV=production bundle exec rake db:schema:load

最后,预编译 Diaspora。

RAILS_ENV=production bundle exec rake assets:precompile

第 4 步:开始散居


创建一个初始化脚本,以便轻松启动 Diaspora:

sudo emacs /etc/init.d/diaspora

粘贴以下内容:

#! /bin/sh
# chkconfig: - 86 30
# Author: FABIAN Tamas Laszlo <giganetom@gmail.com>
# Source: https://github.com/netom/diaspora-init/blob/master/init/diaspora

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Diaspora application server"
NAME=diaspora
DIASPORA_HOME="/home/diaspora/diaspora"
STARTSCRIPT="RAILS_ENV=production ./script/server"
LOGFILE=$DIASPORA_HOME/log/startscript.log
SCRIPTNAME=$0
USER=diaspora
STARTUP_TIMEOUT=100

check_unicorn() {
    pgrep -f "unicorn_rails master"
}

check_sidekiq() {
    pgrep -f "sidekiq 2"
}

do_start()
{
    if ! touch $LOGFILE; then
        echo "Could not touch logfile"
        return 2
    fi

    if ! chown $USER $LOGFILE; then
        echo "Could not chown logfile"
        return 2
    fi

    if check_unicorn && check_sidekiq; then
        echo "Diaspora is already running"
        return 1
    fi

    if ! su -l $USER -c "cd $DIASPORA_HOME; $STARTSCRIPT >> $LOGFILE 2>&1 &"; then
        echo "Could not run start script"
        return 2
    fi

    [ "$VERBOSE" != no ] && echo "Waiting for Diaspora processes... "
    c=0
    while ! check_unicorn > /dev/null || ! check_sidekiq > /dev/null; do
        if [ $c -gt $STARTUP_TIMEOUT ]; then
            echo "Timeout waiting for Diaspora processes"
            return 2
        fi
        c=`expr $c + 1`
        sleep 1
        [ "$VERBOSE" != no ] && echo -n "."
    done
    [ "$VERBOSE" != no ] && echo 0
}

do_stop()
{
    for i in `check_unicorn`; do
        [ "$VERBOSE" != no ] && echo "Killing unicorn master with PID $i"
        kill -TERM $i
        [ "$VERBOSE" != no ] && echo $?
    done

    for i in `check_sidekiq`; do
        [ "$VERBOSE" != no ] && echo "Killing sidekiq with PID $i"
        kill -TERM $i
        [ "$VERBOSE" != no ] && echo $?
    done

    return 0
}

case "$1" in
  start)
    [ "$VERBOSE" != no ] && echo "Starting $DESC" "$NAME"
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && echo 0 ;;
        *) [ "$VERBOSE" != no ] && echo 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && echo "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && echo 0 ;;
        2) [ "$VERBOSE" != no ] && echo 1 ;;
    esac
    ;;
  status)
    echo 'Checking for running Diaspora processes'

    unicorn_running=false
    for i in `check_unicorn`; do
        echo "Found unicorn master qith PID $i"
        unicorn_running=true
    done

    sidekiq_running=false
    for i in `check_sidekiq`; do
        echo "Found sidekiq with PID $i"
        sidekiq_running=true
    done

    if $unicorn_running && $sidekiq_running; then
        echo "Diaspora health is OK"
        echo 0
    else
        if $unicorn_running; then
            echo "Unicorn is RUNNING, but sidekiq is DOWN!"
            echo 1
            return 1
        fi
        if $sidekiq_running; then
            echo "Sidekiq is RUNNING, but unicorn is DOWN!"
            echo 1
            return 1
        fi
        echo "All Diaspora processes are DOWN"
        echo 0
    fi
    ;;
  restart|force-reload)
    [ "$VERBOSE" != no ] && echo "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) [ "$VERBOSE" != no ] && echo 0 ;;
            1) [ "$VERBOSE" != no ] && echo "old process is still running" && echo 1 ;;
            *) [ "$VERBOSE" != no ] && echo "failed to start" && echo 1 ;;
        esac
        ;;
      *)
        [ "$VERBOSE" != no ] && echo "failed to stop"
        [ "$VERBOSE" != no ] && echo 1
        ;;
    esac
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
    exit 3
    ;;
esac

:

并授予 exec 权限:

sudo chmod u+x /etc/init.d/diaspora

现在配置 CentOS 在启动时启动它,并运行它来启动我们的 VPS。

sudo chkconfig --add diaspora
sudo chkconfig --level 345 diaspora on
sudo /etc/init.d/diaspora start

这将启动一个 Diaspora 服务器,在端口 3000 上侦听您的 VPS 的 IP,并使其在后台运行。

第五步:配置nginx


nginx 将从网络反向代理连接到 Diaspora 服务器。

调整主要 nginx 配置

sudo emacs /etc/nginx/nginx.conf

http 部分下,添加一行:

server_names_hash_bucket_size       128;

创建 Diaspora nginx 配置

现在打开一个新文件为 Diaspora 创建一个 nginx 配置。

sudo emacs /etc/nginx/conf.d/diaspora.conf

粘贴以下内容。 您需要将 server_name 路径更新为您的主机名。

upstream diaspora {
  server          localhost:3000;
}


server {
  server_name YOURSERVER.COM;
  listen 80;
  gzip on;
  gzip_min_length 1000;
  gzip_types application/json text/css application/x-javascript;

  root /home/diaspora/diaspora/public;
  try_files $uri @diaspora;
  location @diaspora {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://diaspora;
  }
}

重启nginx

现在已经创建了配置文件,重新启动 nginx 以获取更改。

sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start

如果 ngnix 当前没有运行,stop 命令可能会失败,但 start 命令应该会成功。

将 nginx 设置为开机启动

设置 CentOS 在 VPS 重启时启动 nginx 守护进程。

sudo chkconfig --level 345 nginx on

第 6 步:使用侨民!


现在 nginx 和 Diaspora 都已启动并运行,您可以导航到您的 Diaspora 实例并开始使用它。 您可以通过使用 Web 浏览器导航到您的主机名来访问它。 Diaspora 欢迎页面让您变得更好,您可以在其中创建您的第一个本地 Diaspora 帐户。



提交人:http: [[“%3Ca|//jimreardon.us/]] [[“%3C/a|”>吉姆·里尔登]]