解放运维小哥哥,带你本身上 Linux 部署项目

本文主要讲不使用 nginx 如何部署前端项目,静态页面和 node 的项目一样适用。下面的介绍中,暂时先没有使用到 jenkins 去进行自动部署,就是本身登陆服务器进行操做的步骤。html

本文可让你学到什么

写这篇文章的目的是让新手能够自行登陆服务器进行前端项目部署,不须要依赖运维和后端,毕竟你们时间都有限,自力更生很重要。前端

具体操做步骤

登陆服务器

前提是你要有一台能够登陆的服务器哦,这个能够和你的运维小哥哥申请,申请完成后,主要有三项东西比较重要,用户名密码服务器的 ip 和端口号node

在 Mac 上能够直接使用命令行操做,window 上须要有登陆虚拟机的工具,这个自行百度吧,网上有不少。下面你看到的操做和截图都是在 Mac 上进行。linux

在 iTerm2 中输入一下命令进行服务器的登陆操做:nginx

ssh username@ip:port
# username 是你登陆服务器的用户名
# ip 是机器的ip
# port 是机器的端口号
复制代码

接下来会让你输入密码,输入完成以后就登上本身的服务器咯。你确定会想,若是后续每次登陆都须要输入密码,是否是很烦,咱们能够配置一个免密登陆,后续就方便不少了,具体配置免密能够参考我以前写的一篇文章。传送门git

安装 node

服务器部署前端项目,node 是必须的,安装的步骤也很简单,直接参考菜鸟教程便可,相信你们按照步骤操做,确定是没啥问题的,记得要选择好你 linux 的系统,有的是 Ubuntu,有的是 CentOS。github

上传项目

咱们在登陆到服务器上以后,进入到本身想要存放项目的目录,而后将本身的项目上传到服务器上。前面我也提到了,咱们这篇文章暂时不使用 jenkins 自动部署,因此须要咱们本身将项目进行上传,咱们可使用 git 把项目拉下来,也可使用 linux 命令将本地项目上传到服务器上。npm

这里推荐使用 git,方便快捷,就和你本地拉 git 项目是同样的,若是想知道怎么将本地文件上传到服务器上,能够看一下我以前写的Linux 经常使用命令,使用 scp 的方式便可。后端

使用 git 拉取项目,你能够先在你的机器上使用 git --version 查看是否有 git,而且版本是多少,若是有,多是 linux 自带的,若是没有,能够根据 git 如何安装去进行操做。浏览器

linux 自带的 git 在拉取项目的时候,可能会出现如下错误:

The requested URL returned error: 401 Unauthorized while accessing
复制代码

这个是由于 git 的版本过低了,咱们将 git 的版本进行升级便可,具体操做以下:

  • 安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install  gcc perl-ExtUtils-MakeMaker
复制代码
  • 卸载老版本
yum remove git
复制代码
  • 下载新版并解压安装
wget https://github.com/git/git/archive/v2.2.1.tar.gz
tar zxvf v2.2.1.tar.gz
cd git-2.2.1
make configure
./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv
make install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
复制代码
  • 再次查看 git 版本
git --version
复制代码

输出 git 版本说明安装成功了。

git version 2.2.1

再次拉取代码就能够成功了。

使用 pm2

前面也说了,咱们暂且不讨论使用 nginx,先使用 pm2 进行服务的管理。

列举一下 pm2 的主要特性吧,方便你们了解:

  • 0 秒停机重载,自动重启
  • 内建负载均衡
  • 中止不稳定的进程
  • 性能监控
  • 错误日志

咱们这里主要使用 pm2 运行服务,其余功能,你们能够下去慢慢了解。

安装 pm2

npm i -g pm2
复制代码

安装完成以后使用 pm2 -v 查看版本号,这个时候可能又会有问题,就是提示 pm2 的命令不存在,以下:

bash: pm2: command not found
复制代码

若是你的服务器没提示这个错误,恭喜你,避免了一个大坑,若是出现,也没必要紧张,我教你怎么解决。

这个是由于软链接的问题,咱们安装其余的 npm 全局包也会出现一样的问题,配置一下环境变量就能够了。

# 用一个通用的命令配置环境变量
~$ echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc

# 上面的命令中使用 npm prefix -g 获取node安装目录

# 再执行命令
~$ pm2 -v
3.5.1
复制代码

这个时候就解决 node 软链接的问题了,后续安装其余的 npm 包也不会有问题了。

pm2 经常使用命令

既然使用了 pm2,那咱们就要知道一些它经常使用的命令,好比跑服务,终止服务,查看日志。

  • 启动服务
pm2 start app.js --watch
复制代码
  • 查看当前服务列表
pm2 list
复制代码

  • 重启
pm2 restart app_name || pid
复制代码
  • 中止
pm2 stop app_name || pid
复制代码
  • 查看某个进程的信息
pm2 show app_name || pid
复制代码

会出现你服务的详细信息:

  • 查看日志
pm2 log app_name | pid
复制代码

具体能够跑一个服务起来,而后查看一下试试。

启动服务

node 服务

服务器上目前已经有 node,npm,pm2 和咱们本身的项目了,这个时候进入到项目里边去,执行安装依赖,启动服务便可。

npm install

pm2 start app.js --watch
复制代码

这只是一个简单的例子,真正的项目,可能会存在启动脚本以及项目中会有 pm2 的配置文件,这个要具体看你的项目,本文主要是帮助新手了解项目的部署,想要详细了解能够后续关注个人掘金及公众号或者自行搜索解决。

前端静态页面

若是是前端静态页面,咱们想要在服务器上跑一个服务,不使用 nginx 的话,能够用 pm2 配合 http-server 进行服务的启动。

pm2 start http-server --name my-file-server -- -p 8080 -d false
复制代码

若是提示你 http-server 不存在的话,可使用如下命令从新操做:

which http-server
# 会输出http-server的目录,如 /usr/bin/http-serve

# 接下来在使用http-server时,把目录补上便可
pm2 start /usr/bin/http-server --name my-file-server -- -p 8080 -d false
复制代码

这个时候你就能够根据 服务器的ip:port/xx 去进行访问了。

其余问题

当你的服务启动成功后,在浏览器可能会被限制访问,这个时候你能够在服务器上使用 curl xxx 去进行访问,若是服务器访问没问题,那多是由于服务器对于端口号没有开放,或者有防火墙,去搜索引擎一搜索都是解决办法。

收获

本文主要是实战篇,帮助对项目部署不是很熟悉的小伙伴了解项目部署,若是你有本身的服务器或者以前操做过,那这些可能对于你来讲是小 case,若是你没进行过以上的操做,但愿你能够去腾讯或者阿里云买个服务器,也能够和本身公司运维申请一下测试环境本身部署,去实战一下,毕竟学习了必定要实践以后,才能发现问题在哪,才能记忆更深入。

但愿本文对你有帮助,后续还会出一些比较深刻的实战篇,你们能够关注个人掘金和公众号,有更新第一时间推送。

阅读完后两部曲

  1. 很是感谢各位花时间阅读完,麻烦各位动动手指,点个赞,分享一下,您的鼓励是我前进的动力。
  2. 顺便但愿各位关注一下个人公众号,新的文章第一时间发到公众号,公众号主要发一些我的随笔、读书笔记、还有一些技术热点和实时热点,而且还有很是吸引人的我的自费抽奖活动哦~

相关文章
相关标签/搜索