本文主要讲不使用 nginx 如何部署前端项目,静态页面和 node 的项目一样适用。下面的介绍中,暂时先没有使用到 jenkins 去进行自动部署,就是本身登陆服务器进行操做的步骤。html
写这篇文章的目的是让新手能够自行登陆服务器进行前端项目部署,不须要依赖运维和后端,毕竟你们时间都有限,自力更生很重要。前端
前提是你要有一台能够登陆的服务器哦,这个能够和你的运维小哥哥申请,申请完成后,主要有三项东西比较重要,用户名,密码,服务器的 ip 和端口号。node
在 Mac 上能够直接使用命令行操做,window 上须要有登陆虚拟机的工具,这个自行百度吧,网上有不少。下面你看到的操做和截图都是在 Mac 上进行。linux
在 iTerm2 中输入一下命令进行服务器的登陆操做:nginx
ssh username@ip:port
# username 是你登陆服务器的用户名
# ip 是机器的ip
# port 是机器的端口号
复制代码
接下来会让你输入密码,输入完成以后就登上本身的服务器咯。你确定会想,若是后续每次登陆都须要输入密码,是否是很烦,咱们能够配置一个免密登陆,后续就方便不少了,具体配置免密能够参考我以前写的一篇文章。传送门git
服务器部署前端项目,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 --version
复制代码
输出 git 版本说明安装成功了。
git version 2.2.1
再次拉取代码就能够成功了。
前面也说了,咱们暂且不讨论使用 nginx,先使用 pm2 进行服务的管理。
列举一下 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 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,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,若是你没进行过以上的操做,但愿你能够去腾讯或者阿里云买个服务器,也能够和本身公司运维申请一下测试环境本身部署,去实战一下,毕竟学习了必定要实践以后,才能发现问题在哪,才能记忆更深入。
但愿本文对你有帮助,后续还会出一些比较深刻的实战篇,你们能够关注个人掘金和公众号,有更新第一时间推送。