金钱(警告)
状态: 被贬低
本文涵盖了不再受支持的 CentOS 版本. 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议升级或迁移到受支持的 CentOS 版本。
** 原因** : CentOS 6 已于 2020 年 11 月 30 日到期(EOL)并且不再收到安全补丁或更新。
** 参见相反** :本指南可能仍然有用作为参考,但可能不适用于其他 CentOS 版本. 如果可用,我们强烈建议使用为您使用的 CentOS 版本撰写的指南。
美元
介绍
挑战永远不会真正结束,特别是如果你是计算机编程的某个领域的新人,在这种情况下,我们的主题是Rails和如何在线获得基于Ruby On Rails的Web应用程序 - 最简单和最快的方式。
通过 Ruby 编程语言和 Rails Web 应用程序开发框架来解决应用程序的难题后,当是时候与世界其他人分享您的应用程序时,您可能会对所有可用的选择和无限数量的可能的组合感到困惑。
在这篇DigitalOcean文章中,我们将向您展示 - 从开始到结束 - 如何使用最新的可用的CentOS操作系统(即在线发布)使用岩石坚实的Rails应用部署,以其稳定性而闻名。
** 注意: ** 在此步骤中,建议您查看并阅读提供的链接的内容,它们将帮助您提高性能,安全等。
词汇
1. Web 应用部署、服务器及其角色
- Phusion 乘客应用服务器 2. Nginx HTTP 服务器以反向代理方式运行
2 准备部署服务器
- 更新和准备操作系统 2. 设置 Ruby 环境和 Rails 3. 下载和安装服务器应用程序
3 准备部署的应用程序
- 创建一个样本应用程序 / 上传您的源代码 2. 创建 Nginx 管理脚本 3. 配置 Nginx
4 阅读更多
Web 应用部署、服务器及其角色
当涉及到部署 Web 应用程序,或将其在线时,通常有多个应用程序层用于此目的. 肯定一个可以做这项工作,但可能不是很好的,因为它们不适合所有用途。
在本教程中,我们将使用Phusion Passenger作为应用程序服务器,应用程序服务器的工作包括包含现代Web应用程序(例如Ruby Rack,Python WSGI等),并作为接入Web请求的次要入口点。
Nginx,另一方面,是从头到尾设计的,以作为一个多用途的HTTP服务器。它能够非常好地服务静态文件(如图像,文本文件等),平衡连接,并处理某些剥削尝试。
Phusion 乘客应用服务器
Passenger今天已成为Ruby on Rails应用程序的推荐服务器,它是一个成熟的,功能丰富的产品,旨在满足必要的需求和应用部署领域,同时极大地简化设置和启动程序。
Passenger 非常受欢迎,在许多生产场景中被广泛使用,很容易接触并找到专家,并在网上解决您的问题。
我们将使用的开源版本具有 multi-process single-threaded 操作模式,其企业版本可以配置为单线或多线。
要了解更多关于旅客的信息,您可以访问其官方网站位于 https://www.phusionpassenger.com/。
Nginx HTTP 服务器运行为反向代理
Nginx是一个非常高性能的网页服务器,它因其轻量、相对易于使用和易于扩展(通过插件/插件)而变得非常受欢迎。由于其架构,它能够处理大量的请求(几乎无限),这取决于您的应用程序或网站的负载,可能很难使用其他一些较旧的替代方案来解决。
** 请记住:** 处理
连接在技术上意味着不放弃它们,并能够为它们提供服务 something. 你仍然需要你的应用程序和数据库正常运作,以便让 Nginx 服务客户 responses 不是错误消息。
由于其受欢迎性和成功,我们将部署我们的应用程序运行在 Nginx 后面,以获益于其强大的功能。
要了解更多关于 Nginx 的信息,您可以访问其官方网站,位于 nginx.com。
准备部署服务器
在本节中,我们将执行以下步骤,以获得一个坚固的服务器,准备为您的应用程序服务。
- 更新操作系统 * 获取部署所需的基本工具 * 安装 Ruby、 Rails 和库 * 安装应用程序(即乘客)和 HTTP 服务器 (Nginx)
更新和准备操作系统
為了安裝 Ruby 和其他必要的應用程式(例如我們的伺服器),我們需要先準備最少發送的 CentOS 滴,並將其配備一些途中需要的開發工具。
运行以下命令来更新您的 CentOS 基于 dropplet 的默认工具:
1yum -y update
2
3# This command will update all the base applications
4# that come with CentOS by default. Which are mostly
5# reserved for use by the operating system.
通过执行以下命令安装包含开发工具的包:
1yum groupinstall -y 'development tools'
2
3# With more recent versions of CentOS, such as 6.5 in our case,
4# you can simply run:
5# yum groupinstall -y development
6# instead.
7
8# This bundle of applications contains various tools
9# Such as: gcc, make, automake, binutils, git etc.
我们在本教程中需要的一些包(如 libyaml-devel、nginx 等)在官方 CentOS 存储库中找不到。为了简化事情,而不是手动安装它们,我们将添加用于 YUM 和其他包管理器的 EPEL 软件存储库。
1# Enable EPEL Repository
2sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'
3
4# Update everything, once more.
5yum -y update
最后,要让 Passenger 与 Nginx 合作,我们将在接下来的部分安装,我们需要一个curl-devel
库和纳米文本编辑器,对于 Rails,我们也需要一个sqlite-devel
。
要安装curl-devel
和nano,请执行以下操作:
1yum install -y curl-devel nano sqlite-devel libyaml-devel
设置 Ruby 环境和铁路
注: 本节是我们专门文章的摘要 如何在CentOS 6.5上安装Ruby 2.1.0。
我们将使用 Ruby Version Manager (RVM) 来下载和安装 Ruby 解释器(或 RVM 所称的rubies
)。
运行以下两个命令来安装 RVM 并为 Ruby 创建系统环境:
1curl -L get.rvm.io | bash -s stable
2source /etc/profile.d/rvm.sh
最后,为了在我们的系统上完成安装Ruby,让我们让RVM下载并安装Ruby版本 2.1.0:
1rvm reload
2rvm install 2.1.0
在 Ruby 之后,我们可以使用 RubyGems 包管理器来帮助我们放松基于 Ruby 的工具,例如 Rails 框架。
由于 Rails 首先需要一个 JavaScript 解释器来工作,我们还需要设置 Node.js. 为此,我们将使用默认系统包管理器 YUM。
运行以下操作以使用 yum 下载和安装 nodejs:
1yum install -y nodejs
使用 RubyGems 的「」,執行以下命令來下載和安裝「rails」:
1gem install bundler rails
下载和安装服务器应用程序
** 注意:** 如果您的 VPS 具有不到 1 GB 的 RAM,您需要执行以下简单的程序来准备一个 SWAP 磁盘空间以作为临时数据持有器(RAM 替代品)使用。
1# Create a 1024 MB SWAP space
2sudo dd if=/dev/zero of=/swap bs=1M count=1024
3sudo mkswap /swap
4sudo swapon /swap
Phusion 乘客
Red Hat Linux 的默认包管理器 RPM (RPM Package Manager) 将包含在 .rpm
文件中的应用程序导航。不幸的是,在 Passenger 的情况下,它们相当过时,因此,我们将再次使用 RubyGem 来下载和安装 Passenger 的最新版本 - version 4。
使用下面的命令,简单地下载和安装 Passenger:
1gem install passenger
2
3# This command will fetch Passenger v4.0(.35+) for you.
要测试乘客是否下载并正确设置,请尝试运行乘客
。
你应该看到一个类似于下面的输出:
1Phusion Passenger Standalone, the easiest way to deploy Ruby web apps.
2
3Available commands:
4
5 passenger start Start Phusion Passenger Standalone.
6
7..
名称: Nginx
通常情况下,要下载和安装 Nginx,你可以添加 EPEL 存储库并通过 yum 获取 Nginx. 但是,要让 Nginx 与 Passenger 合作,其源必须编译必要的模块。
运行以下操作以开始使用原生乘客模块编译 Nginx:
1passenger-install-nginx-module
运行命令后,按 Enter 并确认您的语言(语言)选择(即 Ruby,在我们的情况下)。
1Use <space> to select.
2If the menu doesn't display correctly, ensure that your terminal supports UTF-8.
3
4 ‣ ⬢ Ruby
5 ⬢ Python
6 ⬢ Node.js
7 ⬡ Meteor
在下一步中,选择第 1 项:
11. Yes: download, compile and install Nginx for me. (recommended)
2 The easiest way to get started. A stock Nginx 1.4.4 with Passenger
3 support, but with no other additional third party modules, will be
4 installed for you to a directory of your choice.
然后按 Enter 继续。
现在,Nginx源将被下载,编译和安装在乘客支持中。
** 注意: ** 此操作可能需要一段时间 - 可能比你想要或期望的更长时间!
准备部署的应用程序
** 注意: ** 在本节中,我们将以一个非常简单的Ruby On Rails应用程序为例工作,对于您的应用程序的实际部署,您应该上传您的代码库,并确保安装所有依赖性。
创建样本应用程序 / 上传您的源代码
让我们开始在我们的家庭目录中创建一个非常基本的 Rails 应用程序,以便与 Passenger 和 Nginx 服务。
执行以下命令,让 Rails 在 /var/www
目录中创建一个名为 my_app 的新应用程序:
1# Create a sample Rails application
2cd /var
3mkdir www
4cd www
5rails new my_app
6
7# Enter the application directory
8cd my_app
9
10# Create a sample resource
11rails generate scaffold Task title:string note:text
12
13# Create a sample database
14RAILS_ENV=development rake db:migrate
要测试您的应用程序是否正确设置,并且一切正常运行,请输入应用程序目录并运行一个简单的服务器:
1# Enter the application directory
2cd /var/www/my_app
3
4# Run a simple server
5rails s
6
7# You should now be able to access it by
8# visiting: http://[your droplet's IP]:3000/tasks
9
10# In order to terminate the server process,
11# Press CTRL+C
** 注意:** 对于实际部署,当您想将代码库上传到服务器时,您可以使用SFTP或图形工具(如FileZilla)安全地传输和管理远程文件。
- 要了解如何使用 SFTP,请参阅文章: 如何使用 SFTP。 * 要了解有关FileZilla的信息,请参阅该主题的文章: 如何使用FileZilla。
创建 Nginx 管理脚本
在编译 Nginx 后,为了轻松控制它,我们需要创建一个简单的管理脚本。
运行以下命令来创建脚本:
1nano /etc/rc.d/init.d/nginx
复制并粘贴下面的内容:
1#!/bin/sh
2. /etc/rc.d/init.d/functions
3. /etc/sysconfig/network
4[ "$NETWORKING" = "no" ] && exit 0
5
6nginx="/opt/nginx/sbin/nginx"
7prog=$(basename $nginx)
8
9NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
10
11lockfile=/var/lock/subsys/nginx
12
13start() {
14 [ -x $nginx ] || exit 5
15 [ -f $NGINX_CONF_FILE ] || exit 6
16 echo -n $"Starting $prog: "
17 daemon $nginx -c $NGINX_CONF_FILE
18 retval=$?
19 echo
20 [ $retval -eq 0 ] && touch $lockfile
21 return $retval
22}
23
24stop() {
25 echo -n $"Stopping $prog: "
26 killproc $prog -QUIT
27 retval=$?
28 echo
29 [ $retval -eq 0 ] && rm -f $lockfile
30 return $retval
31}
32
33restart() {
34 configtest || return $?
35 stop
36 start
37}
38
39reload() {
40 configtest || return $?
41 echo -n $”Reloading $prog: ”
42 killproc $nginx -HUP
43 RETVAL=$?
44 echo
45}
46
47force_reload() {
48 restart
49}
50
51configtest() {
52 $nginx -t -c $NGINX_CONF_FILE
53}
54
55rh_status() {
56 status $prog
57}
58
59rh_status_q() {
60 rh_status >/dev/null 2>&1
61}
62
63case "$1" in
64start)
65rh_status_q && exit 0
66$1
67;;
68stop)
69rh_status_q || exit 0
70$1
71;;
72restart|configtest)
73$1
74;;
75reload)
76rh_status_q || exit 7
77$1
78;;
79force-reload)
80force_reload
81;;
82status)
83rh_status
84;;
85condrestart|try-restart)
86rh_status_q || exit 0
87;;
88*)
89echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
90exit 2
91esac
按 CTRL + X 并用 Y 确认保存和退出。
将此管理脚本的模式设置为可执行:
1chmod +x /etc/rc.d/init.d/nginx
配置 Nginx
在配置服务器的最后一步中,我们需要创建一个 Nginx 服务器块,这大致转化为 Apache 的虚拟主机。
正如您在乘客的 Nginx 安装过程中所看到的,此过程包括将一个代码块添加到 Nginx 的配置文件 nginx.conf
. 默认情况下,除非您另有说明,此文件可以在 /opt/nginx/conf/nginx.conf
下找到。
输入以下命令,打开此配置文件以使用文本编辑器 nano 编辑:
1nano /opt/nginx/conf/nginx.conf
作为第一步,找到http {
节点,并在passenger_root
和passenger_ruby
指令后右侧附加下列指令:
1# Only for development purposes.
2# For production environment, set it accordingly (i.e. production)
3# Remove this line when you upload an actual application.
4# For * TESTING * purposes only.
5passenger_app_env development;
向下滚动,找到服务器 {..`. 评论默认位置,即:
1..
2
3# location / {
4# root html;
5# index index.html index.htm;
6# }
7
8..
并定义您的默认应用程序 root:
1root /var/www/my_app/public;
2passenger_enabled on;
按 CTRL + X 并用 Y 确认保存和退出。
运行以下操作以使用新的应用程序配置重新加载 Nginx:
1/etc/init.d/nginx restart
要检查 Nginx 的状态,您可以使用:
1/etc/init.d/nginx status
为了测试您的应用程序(以及我们的样本应用程序),您可以访问:
1http://[Your droplet's IP addr]/tasks
2
3# Listing tasks
4
5# Title Note
6
7# New Task
** 注意:** 有关 Nginx 的更多信息,请参阅 如何在 VPS 上配置 Nginx Web Server。
继续阅读
标签: 防火墙
安全的SSH
How To Protect SSH with fail2ban on Ubuntu How To Protect SSH with fail2ban on CentOS 6
创建警报
如何在 CentOS VPS 上发送电子邮件警报用于系统监控