2.3 公有云环境下静态网站系统部署实践示例
作为互联网时代的大学生,需要熟练掌握常用工具软件系统的安装、配置与使用,以快速解决工作、生活与学习中的各类问题。随着开源免费软件的盛行以及云计算服务提供商实力的增强,在公有云环境下安装部署信息系统逐渐成为常态,这种方式的好处体现在:
- 方便各类用户在互联网环境下随时随地访问部署的系统,工作成果显性化;
- 程序调试和运行在云端进行,不必占用个人电脑机时,工作任务并行化;
- 通过在云服务器环境下安装信息系统,掌握linux操作系统、web服务器、数据库、典型编程环境的配置流程、常用命令及调试方法,个人技能实用化。
2.3.1 云服务器主机注册及初始配置
华为云是由华为公司倾力打造的面向广大企业和个人的公有云平台;提供云服务器、云数据库、云存储和CDN等基础云计算服务,以及移动应用、大数据分析、人工智能等应用解决方案。作为国内公有云服务提供商的后期之秀,华为云目前对学生有云服务器开通优惠,学生可以免费注册,即可拥有独立ip的云服务器主机使用权限(7天或15天不等),注册开通流程便捷,后台环境友好,便于互联网实验环境的部署和学习。
本节讲解如何注册并选择华为云服务器主机,并安装Ubuntu 16.04LTS的64位操作系统。如果个人电脑是windows操作系统,最好安装远程操作服务器的两个常用软件:winscp和putty(一般先安装winscp,后安装putty),如果个人电脑是Mac机,不需要安装这两个软件,可以直接采用SSH登录方式。
WinSCP是一个Windows环境下使用SSH(secure shell,一种主流的专为远程登录会话和其他网络服务提供安全性的协议)的开源图形化SFTP客户端,同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。putty是一个免费的,基于Windows x86平台下的Telnet、SSH和rlogin客户端, 可以远程登录安装有linux操作系统的服务器,并以指令方式操作。
- 华为云服务注册步骤:
登录 https://www.huaweicloud.com/ 注册,之后提供个人银行卡号,获取申请免费的云服务器主机ECS资格(可以选择配置为单核4G内存1M公用带宽)。
在选择主机配置过程中,会让用户选择安装操作系统,注意:选择Ubuntu 16.04LTS 64位操作系统(一般流行的云服务器linux操作系统是ubuntu和centOS,ubuntu较为适合初学者),之所以不建议选Ubuntu 16.04LTS 32位操作系统是因为,32位操作系统适合于服务器内存在4G以内的配置,对于4G以上内存配置的服务器,64位操作系统能够发挥其大内存的优势。
检查申请的华为云服务器主机安装的是否是ubuntu操作系统,而非windows server操作系统,方法是看登录的web shell是否是命令界面,如果不是,请重新安装
保存好申请的服务器密码,后续登录与安装配置软件都需要用到
- winscp和putty的安装与整合
- 双击winscp,一路next即可可安装
- 双击putty,也是一路next即可安装
- 将winscp和putty整合在一起使用的步骤如下:
- 第一步:打开WinSCP并登陆
- 第二步:配置PuTTY的路径,打开 选项->选项,左侧选择 集成->应用程序。右侧设置Putty.exe所在路径,确认之后WinSCP上的配置即完成。
2.3.2 Ubuntu操作系统常用指令
- Linux操作系统、Ubuntu及centOS介绍
目前在服务器上安装的操作系统大多为Linux操作系统,主要因为linux安全和稳定性高,系统漏洞较少。Ubuntu系统,基于 Debian,经常更新,采用.deb 软件包和 “apt-get”软件包管理器,一般来说,Ubuntu系统对于初学者来说是更好的选择。CentOS系统是基于 Red Hat Linux Enterprise版本的开源,更新频度较少,采用.rpm 软件包和 “yum” 软件包管理器,一般是商业用途的部署首选。
关于Linux操作系统的零基础入门可以阅读《鸟哥的Linux私房菜》一书。
- Ubuntu操作系统下的常用命令
- Ubuntu 系统更新命令如下:
- Ubuntu 系统下的用户管理 在Ubuntu下,$是普通管员,#是系统管理员;(系统管员权限>普通管员),相关命令如下:
1、新建用户(以test为例):
有useradd和adduser两种;
sudo useradd test//是一个ELF可执行程序;没有附加参数,用户没有同名主目录、密码和系统shell
sudo adduser test//是一个perl脚本;有附加参数,会提示输入密码并创建同名目录
修改 test 用户的密码:
passwd test//必须设置大于等于6位的密码
sudo passwd test//不限制密码长度
2、新建用户组并加入用户(lebo用户组为例):
sudo groupadd lebo
sudo adduser test lebo
3、给 test 用户创建自己的目录:
sudo mkdir /home/test
chown test /home/test
4、给用户添加sudo权限
sudo usermod -aG sudo test
5、切换用户
su test
6、修改用户信息
usermod test
- Ubuntu 系统的文件管理 相关命令如下:
tree / //查看全部文件(要先install tree)
pwd //获取当前路径
~ //当前用户主目录
cd .. //上一级
cd ~ //home目录(/开头是绝对路径;.开头是相对路径)
mkdir mydir //新建目录mydir
mkdir -p father/son/grandson //建多级目录
cp test(此处可为路径) father/son/grandson //将当前目录下的test复制到grandson中
rm //删除文件
mv 旧名 新名 //重命名
remove 'y/a-z/A-Z/' *.c //删文件
cat test //查看文件test;-n显示行号
file test //查看文件类型
ls //查看当前目录下的文件
ls -l 文件名称 //查看详细信息(文件夹将-l改为-ld)
zip index.zip index -r //压缩index目录下的所有文件到index.zip(要先install zip)
更多命令可以访问 http://www.jianshu.com/p/1340bb38e4aa 了解
2.3.3 在本地电脑搭建中英文双语静态网站
互联网时代每个人都需要打造个人的 digital ID, 个人网站,就是数字世界中别人随时随地了解你的最佳窗口。不过,要建立一个功能完备、中英文多语种兼备的网站并不容易,涉及诸多领域的知识和技能,对经管同学而言门槛比较高。下面介绍在个人电脑基于R语言环境,通过在Rstudio中安装和配置 blogdown+hugo
构建个人双语网站、科研双语网站等等,用于对外信息交流与发布。
整个建站过程分为三大步骤,熟练的话,半小时即可搭建完成。
步骤1:blogdown
和hugo
包的安装
首先在Rstudio中安装blogdown
和hugo
两个软件包,在控制台输入以下代码
install.packages("blogdown") # 安装托管在CRAN上的`blogdown`包
blogdown::install_hugo() # 安装静态页面生成软件 `hugo`
blogdown::hugo_version() # 查看安装好的 `hugo` 版本
特别说明的是,苹果 macOS 用户install_hugo()
需要之前安装有包管理器Homebrew
,如果没有安装,请访问https://brew.sh 先下载安装。
接下来,初始化 blogdown,打开:File -> New Project -> New Directory -> Website using blogdown 建议选择用 hugo-academic 主题开始我们的blogdown之旅。
步骤2:选择网页主题(此处以academic
为例),搭建网站
在本地电脑上自建一个目录,设置文件夹名,例如在d盘根目录下建立 website 文件夹,然后在Rstudio 中输入以下代码
setwd("D:/resume") # 设置D:/resume为网站文件安装目录
blogdown::new_site(theme = "gcushen/hugo-academic") # 安装名称为`academic`的主题
此时,在D盘的 website 目录下自动创建了academic
主题的静态页面网站,同时在Rstudio右下角的Viewer中可以看到页面内容,也可以访问 http://127.0.0.1:4321 看到网站页面。
步骤3:修改网站配置文件,创建中英双语网站
在D盘的 website 目录下,已生成多个新文件夹。别的暂时不用管也不用动,只需要注意content 和public 目录。打开 public,打开里面的index.html,这就是网站的主页,可以点开几个链接试试看。
关于修改 hugo-academic
配置文件生成中英文网站的基本步骤如下:
step1: 开启双语功能
hugo-academic
配置文件中最重要的是在网站根目录下的 config.toml
文件,该文件可以用 Rstudio
打开,然后在config.toml
里找到:
说明网站的初始默认设置是英文,在后面添加中文,如下代码:
step2:菜单栏增加中文界面
菜单栏就是网页顶部那一排按钮。这需要在config.toml里找到菜单栏的设定,这是默认语言英语的设置:
在下面添加中文设置,如下代码:
这样,就把Home按钮替换成了主页按钮,其他按钮类似操作进行修改。
step3:其他内容的修改
需要把 \themes\hugo-academic\i18n\
文件夹拷贝到根目录,然后删掉里边不需要的语言文件(如德语、法语等)。只保留en.yaml和zh.yaml(中英文双语)。用 Rstudio
打开zh.yaml,可以修改里边中文翻译不妥当的地方,比如 interests 翻译成了“兴趣爱好”,可以改成“研究领域”。
step4:新增帖子的双语
每次在 content\
文件夹里新增文件时,如果要增加英文,就在文件扩展名前面加个.en即可。例如,在 content\talk\
下面新建了 egu-2017.md
,里面是中文,会出现在中文界面上。如果想让这个项目也在英文版出现,只需把egu-2017.md
复制一份,命名为 egu-2017.en.md
,那么这个项目就会在英文界面出现。打开egu-2017.en.md
把里面的中文改成英文即可。
step5:新增帖子的双语
在菜单栏增加中英文界面切换的按钮,在 config.toml
里的菜单设置处修改以下代码:
[[menu.main]]
name = "中文"
url = "../zh"
weight = 7
[[languages.zh.menu.main]]
name = "EN"
url = "../en"
weight = 7
step6:对网站首页页面内容的双语设置
如果使用 academic
主题,在网站首页会有一些页面内容,如 about、exprerience、contact等,如何让这些英文页面内容在中文对应页面显示为中文内容呢?修改办法如下:首先,从根目录访问如下目录地址 \content\home
,其次,复制一份该目录下的 .md
文件,并将复制的文件名修改成 .zh.md
形式。例如,该目录下的 about.md
文件,复制并修改为 about.zh.md
文件,然后打开该文件,对文件内容进行修改,注意:文件中的前两个目录内容不要修改,一般从第三个目录内容开始修改。例如,复制的 about.zh.md
文件中,可以对 # List your academic interests.
以下,在双引号内的内容进行修改。
至此,在个人电脑上,中英文双语网站即告建成,可以本地打开页面访问,进一步修改与完善。更多围绕hugo页面细节修改的知识,可访问: https://gohugo.io/documentation/ 自行学习了解。如果仍遇到无法解决的问题,也可以直接去 https://www.stackoverflow.com 检索或提问,寻求网友的协助。
2.3.4 安装与配置云服务器LNMP环境
- 什么是LNMP?
在上一节中,我们讲解了如何在个人电脑上快速搭建中英文双语静态网站,怎么将网站对外发布呢?这就需要将网站系统部署到云服务器环境下,本节将进一步讲解如何安装配置云服务器下的LNMP环境,为网站系统的对外发布做好基础性工作。
刚注册获取的华为云服务器(Elastic Computing Server, ECS)相当于是一台只装了ubuntu操作系统的裸机,没有安装其他系统软件(如数据库Mysql以及对外提供WEB服务的中间件软件,如Appache或nginx等) 和应用软件(如hugo+blogdown实现的静态网站),服务器此时无法对外提供服务,普通用户也无法连接IP地址通过互联网访问服务器资源。
要安装的系统软件Nginx、Mysql和应用软件之间的关系如图 2.3 示意:

图 2.3: 云服务环境下主要系统软件间关系
资料来源:作者自行绘制
从上图可以看到:Nginx相当于是Web服务器程序,用来响应用户的访问请求,解析Web应用程序;MySQL则是一个免费的数据库管理系统;PHP是Web服务器生成网页的程序,用于支撑基于PHP框架开发的网站系统,由于我们采用的是 hugo+blogdown 实现的静态页面系统,因此PHP框架暂时用不上,今后在《信息系统分析与设计》课上教大家搭建 wordpress 动态网站系统时再用到。
接下来讲解的步骤包括:(1)集成的Lnmp一键包安装;(2)hugo+blogdown静态网站的对外发布。
- LNMP的安装与配置
对于非计算机专业学生,如果要逐一的安装nginx、mysql和PHP并配置好是一件较为繁琐复杂的事,为此,有人开发了LNMP一键安装包并在互联网上免费分享(网址:https://lnmp.org/),大大方便了LNMP的安装与配置。
LNMP一键安装包是一个用Linux Shell编写的可以为Ubuntu VPS或独立主机安装LNMP(Nginx/MySQL/PHP)生产环境的Shell打包程序。
- Nginx 是一个小巧而高效的Linux下的Web服务器软件,由 Igor Sysoev 用C语言为俄罗斯访问量第二的Rambler.ru站点开发,特点是占有内存少,并发能力强,能够支持高达50,000个并发连接数的响应,已经在一些俄罗斯的大型网站上运行多年,相当稳定。Nginx具有高稳定性,功能丰富,安装配置简单,系统资源占用低等优点。国内使用nginx的大型网站有:百度、京东、新浪、网易、腾讯、淘宝等。现在无论是创业公司,还是BAT等一线互联网企业,都在使用Nginx,它就像一个万能药,在众多存在性能需求的场合总能见到它的身影。Nginx 天生适合在 Linux 服务器上处理百万、千万级的并发连接,而优秀的架构使得它基本不需要重构,这使其生态圈内的第三方模块长期有效。
Nginx 的三个典型应用场景如图 2.4 所示:

图 2.4: Nginx 的三个典型应用场景
资料来源:作者自行绘制
LNMP的安装步骤如下:
- 安装LNMP稳定版,由于LNMP程序经常有版本升级,可以查看网页:https://lnmp.org/install.html 了解安装注意事项,并选择安装最新的稳定版本。以当前的最新版本(2018-10-21,Ver1.5)为例,在服务器上输入以下指令:
安装启动时的选项大都选为默认,记住mysql数据库的root密码,默认是root;
- 整个安装依网络环境不同,约20-40分钟不等,出现以下界面图 2.5 ,并显示Nginx: OK,MySQL: OK,PHP: OK,说明LNMP安装成功!

图 2.5: 公有云服务器上LNMP安装成功界面
资料来源:作者自行绘制
如果想了解LNMP相关软件目录及文件位置,可以查看网页:https://lnmp.org/faq/lnmp-software-list.html
在浏览器地址栏输入华为云服务器公网 IP 地址,如果出现以下显示图 2.6,说明web服务开启成功,此后,华为云服务器就可以对外提供WWW服务了。

图 2.6: 公有云服务器上web服务开启成功界面
资料来源:作者自行绘制
注意:
公有云服务商一般都会对公网IP访问进行主机端口的安全设置,以华为云为例,默认开启的端口只有两个(22和3389端口),如果要对外提供WWW服务,需要开启80端口。因此,在启动Nginx服务后,记住要在华为云的控制台对云服务器主机的安全组进行配置,一般选择第二项安全组,增加80端口的开放,这样就可以公网访问了。
分组练习:
2017级信息管理与信息系统专业的79名同学,分成10组,每组8人左右,选出组长,并由组长分派组员任务。
练习内容: 根据老师讲授的R语言环境下blogdown+hugo搭建中英双语网站的知识,以小组为单位,在本地电脑或云服务器(可选)上搭建一个中英文双语网站,网站的内容和目的由小组自行设计。
提交成果:
本次作业,需要每组提交的成果如下:(1)一份标明组长,组员及各自分工的excel表;(2)可以直接运行的website目录文件夹压缩包。每组都要在本周日(2019年4月14日)17点前提交上述成果给学习委员,学习委员确定每组成果能运行,再发回给教师,文件命名格则是:组长姓名-网站名,此次作业作为平时成绩纳入考核,周一(2019年4月15日)上课时,随机让2-3组在讲台展示成果。
2.3.5 在云服务器上安装与配置Rstudio server
缘起
在本地电脑上跑一些比较费时间的R脚本程序,由于一直占用机时,会影响电脑的其他使用。为此,考虑在腾讯云服务器上安装 Rstudio server
,以便能够在云服务器上运行R程序,方便随时随地查看程序运行结果。
安装过程
在腾讯云服务器上,选择操作系统为 Ubuntu 16.04 LTS,安装 Rstudio server
。注意:首先安装R,再去安装 Rstudio server
,后者是前者的集成开发环境(IDE),方便数据分析人员编写脚本程序、调试代码、显示运行结果。 整个安装分为以下3大步骤若干小步骤:
步骤1:安装基础的R包
1.1 首先在 root 用户权限下输入以下命令
上述命令是通过ubuntu自带的vi
编辑器,对指定目录下的sources.list文件进行修改。
1.2 其次,按下“i”,进入编辑状态,在文件的最后一行输入:
上述选择的是清华大学CRAN镜像地址
说明:ubuntu16.04 LTS的代号为xenial,以上路径是清华大学的ubuntu16操作系统下R语言的镜像源 参考网址:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
修改完毕后,按下“esc”退出编辑状态,并输入”:wq”,退出并保存,会提示文件修改信息。
1.3 接下来在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
1.4 最后,在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
进入R环境,输入 version,查看安装的版本号。
步骤2:安装 Rstudio server
详细的英文安装说明,请访问:https://www.rstudio.com/products/rstudio/download-server/
2.1 首先,在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
sudo apt-get install gdebi-core
wget https://download2.rstudio.org/server/trusty/amd64/rstudio-server-1.2.1335-amd64.deb
sudo gdebi rstudio-server-1.2.1335-amd64.deb
说明:上述安装的Rstudio server版本号:1.2.1335,Released: 2019-04-08
2.2 其次,安装完毕后,在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
之后要求输入密码时,请输入方便记忆的6位密码。
一般而言,公有云服务商提供的云服务器8787端口默认没有对外开放,需要到云服务器控制台,找到安全组,对导入设置安全策略,添加开放8787端口 此时打开地址 http://ip:8787 前面的ip是个人申请的腾讯云主机地址,8787是rstudio server访问的端口地址 输入用户名和密码,即可登录Rstudio server
步骤3:配置 Rstudio server
登录进入Rstudio server
后,我们不难发现:Rstudio server
的界面和使用与在本地个人终端使用Rstudio
没有多少差异。在正式使用Rstudio server
开展数据分析工作之前,我们还需要做几方面配置,使其运行更方便。
3.1 中文字符乱码问题的消除
腾讯云主机服务器上安装的ubuntu 16.04LTS 是英文操作系统,没有安装必要的中文字符集和字库,如果不配置,绘图中遇到中文就会有乱码。在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
完成上述步骤后,如果Rstudio server
在运行,restart a new session
;如果没有运行,可以在云服务器主机管理控制台直接重启服务器主机,重启后在Rstudio server
中,用ggplot2
画图中文显示正常
3.2 一些非CRAN下载源但又很重要的R包下载
由于CRAN对R包的管控很严格,使得一些R包作者不愿花费时间在测试上,而将开发的R包直接放在github上,为方便使用这些R包,我们需要安装devtools
工具软件。
在ubuntu操作系统的shell界面(有$标志的界面)输入以下命令:
之后在Rstudio server
中查看是否安装了devtools
包,如果没有就在Rstudio server
中直接install
3.3:Ubuntu下R包XML安装报错问题的解决
Ubuntu下R包XML直接在RStudio server
中安装,不成功,报错:installation of package xml had non-zero exit status
解决办法:首先在Terminal中安装libxml2- dev,输入命令:
然后在RStudio server
中安装XML package
2.3.6 在云服务器上安装与配置jupyter notebook
缘起
在腾讯云服务器上安装了 Rstudio server
后,曾经跑过一些程序,但之后的数据分析大都在个人电脑上进行。近来想在腾讯云服务器上跑人工智能的程序,因此有了安装 Jupyter notebook
以便能运行 python
下的 keras
与 kashgari
包,跑最新的 BERT embedding
和 NER
领域的 BLSM+CRF
模型。
安装过程
在腾讯云服务器上安装 Jupyter notebook
分为以下2大步骤6小步骤:
步骤1:安装 anaconda
anaconda
套件的最大好处是已将常用的 python 包都安装在环境中,省得自己动手一一安装。因之前,已在腾讯云服务器 root 用户下安装过,此步省略。简单而言,在 root 用户权限下输入以下命令
# 此处以 anaconda 3-4.4.0版本为参考,如想安装最新版本,请直接去其官网查找对应安装包
wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh
安装好后,输入 conda list
命令,看显示是否正常,如果正常可以进入下一步。
步骤2:配置 jupyter notebook
该步骤又可以细分为以下几步:
2.1 生成jupyter notebook配置文件
在 console 输入以下命令:
2.2 在 console 输入 ipython
,进一步输入以下命令
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:**************打码*******************'
In [3]:exit
上面的passwd是远程登陆 jupyter notebook
服务器的密码:910906
Out[2]的输出一定要复制下来,存在某txt里,后面会用到。
腾讯云服务器 jupyternotebook 密码 ‘sha1:73df668189f7:071c6521f4e2b519197f8b77175152c54bdc2cae’
2.3 修改jupyter 配置文件
在 console 输入以下命令
在vi编辑器打开的文件里输入字母 i ,使得当前为输入状态,然后移动光标到空白行,输入以下命令
c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha1:*******上面保存的密码用在这里****************'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #此处使用默认的8888端口,也可以设置未使用的其他端口
2.4 在腾讯云服务器的安全组设置中,将8888端口打开
在腾讯云服务器页面,选择安全组设置,检查8888端口是否打开,如果没有,请设置为打开状态。
2.5 后台启动 jupyter notebook
在 console 输入以下命令:
相关指令说明:
& :指在后台运行
nohup :不挂断的运行,注意并没有后台运行的功能,就是指用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行。
此时,如果在 console 里显示如下信息:
[W 21:51:35.627 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 21:51:35.636 NotebookApp] Serving notebooks from local directory: /root
[I 21:51:35.637 NotebookApp] 0 active kernels
[I 21:51:35.637 NotebookApp] The Jupyter Notebook is running at:
[I 21:51:35.637 NotebookApp] http://[all ip addresses on your system]:8888/
[I 21:51:35.637 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation)
说明 Jupyter notebook
顺利启动。
2.6 浏览器访问 Jupyter notebook
在本机浏览器中输入 wujun.site:8888,在打开页面中输入访问 Jupyter notebook
的密码:910906 即可看到 Jupyter notebook
首页。之后就和本地使用 Jupyter notebook
类似。
相关参考资料可以访问:
阿里云服务器ECS上安装anaconda 远程访问jupyter notebook解决方案 https://blog.csdn.net/qq_34447388/article/details/79873548