正式贴文的撰写将由部署步骤开始,因为项目实际上线的过程除编程外还有其他多种因素的影响,因此作者觉得越早部署将在一定程度上缩减开发周期。
云服务器操作系统选择(Linux)
云服务器的操作系统几乎都使用Linux操作系统,此实例选用Linux下对初学者友好的Ubuntu版本(安装 问题较少且在论坛中容易搜索到相对应的解决方法),参照网上建议选择Ubuntu的LTS版本(16.04)
租用IaaS云服务器(阿里云)
此处略去对IaaS、PaaS、SaaS的解读,此处我们选择IaaS(基础设施服务Infrastructure-as-a-Service)。
首先前往阿里云进行注册(可用支付宝,较为方便),当然,只有经过实名认证的用户才可以继续购买服务器(一般用支付宝登陆的没什么问题),对于使用其他账户登陆的,在认证完后请充值100元。然后便可前往菜单栏查找云服务器ESC服务的选项,选中后到页面进行实例创建(此处温馨提示: 阿里云有学生认证的活动,可低价购买云服务器,配置为1G2核,作者使用的型号产品就是该种)。
云服务器的产品计费方式分两种: 包年月/按量付费,对于短期练习操作的编程者来说,后者较为实惠。另外需要注意地域的选择,不同的地点因服务器等级不一致会影响连线速度,建议选择较新的华北三。阿里云内建了防火墙功能,因此需要打开对内连线 Port22(SSH登入)、Port80(HTTP)、Port443(HTTPS),所以接下来选择默认安全组,并在对应端口勾选。镜像选择公共镜像,操作系统如上描述选择Ubuntu16.04 64位。最后设置你的登陆密码,最好尽可能的复杂,避免被恶意破解。
确定无误后开通,返回控制台实例,等待启动,找到分配的实例IP位置。至此便开通成功,如果希望进一步确认,可以通过终端ssh登入:ssh root@ip公址,然后输入前面设置的密码便可。
如果练习完毕或设置错误,可以将云服务器注销掉重新配置。
Linux权限管理
root用户拥有最大的权限,一般不会直接使用它,因此将创建一个新的账号用于登陆管理:
adduser jetty #创建jetty用户
设定密码后一直按ENTER即可。 exit离开服务器,使用新的账号登入。接着为新账号提供sudo权限,新增档案 /etc/sudoers.d/jetty ,其中添加内容 jetty ALL=(ALL:ALL) ALL ,注意区分不同账号的密码!
远端登入还有另外一种形式(免密码),即通过非对称加密的方式,具体同github类似,感兴趣的读者可以自行上网查询。
Linux套件安装与更新
Ubuntu内建的套件管理工具为 apt-get ,使用服务器的步骤首先便是更新系统套件的清单,再进行升级。
sudo apt-get update
sudo apt-get upgrade -f
按ENTER继续即可,然后设定系统时区,单选ASIA,然后选择SHANGHAI。接下来安装ROR所需要的套件(代码为一段)
sudo apt-get install -y build-essential git-core bison openssl libreadline6-dev curl zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 autoconf libc6-dev libpcre3-dev libcurl4-nss-dev libxml2-dev libxslt-dev imagemagick nodejs libffi-dev
接下来等待安装,按ENTER即可。
Linux下安装Ruby
此间选择使用BrighBox已经编译好的Ruby套件:
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.4 ruby2.4-dev
接着输入ruby -v 观察是否输出ruby版本号,是则成功。
下一步进行Ruby套件 Bundler 的安装,用于安装Rails
sudo gem install bundler --no-ri --no-rdoc
若速度较慢,可在后面添加 --source https://gems.ruby-china.org
Linux安装数据库
由于作者偏爱postgresql,故此只提供postgresql的安装方法:
sudo apt-get install postgresql postgresql-contrib libpq-dev
安装完成后修改postgresql创建的postgres账号的密码
sudo -u postgres psql #然后打 \password 设置数据库密码
sudo -u postgres createdb new_db #创建new_db数据库备用
Nginx+Passenger网站服务器安装
在开发过程中一般使用puma这套由Ruby编写的网站服务器,但在实际生产过程中我们通常选择效能更高的Nginx(C语言开发的网站服务器)提供静态档案,和Passenger这个扩充模组来执行Ruby程序。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
sudo sh -c ‘echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list’
sudo apt-get update
sudo apt-get install -y nginx-extras passenger
待执行完之后,打开浏览器输入服务器的Ip地址就会看到默认的Nginx静态网页。
Linux防火墙安装配置
对于阿里云的云服务器而言,因为产品自带防火墙,所以这步骤可有可无。
sudo apt-get install ufw
sudo ufw default deny
sudo ufw allow 22/80/443 (拆开分别运行)
sudo ufw enable (启动防火墙)
至此,服务器的搭建便算成功了,剩下一些细致的配置将在随后其他文章中标注。
如果有遗漏或错误的地方,欢迎提出。