翼度科技»论坛 编程开发 JavaScript 查看内容

前端Linux部署命令与流程记录

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
以前写过一篇在Linux上从零开始部署前后端分离的Vue+Spring boot项目,但那时候是部署自己的个人项目,磕磕绊绊地把问题解决了,后来在公司有了几次应用到实际生产环境的经验,发现还有很多可以补充的地方,很多指令和下载地址每次用到的时候再找就相对麻烦,通过这篇文章可以做一个记录。
另外,之前漏掉了很重要的Linux版本,因为以前不太了解,一直使用的都是CentOS 7,这次选择系统的时候看到CentOS后续会停止维护,所以决定换一个版本学习一下,Linux版本非常多,通常我们可以选择CentOS、Debian、Ubuntu等,具体的区别可以自己去查下,这里我选择了Debian 11.1作为新的系统环境。
npm和node(通过NVM安装)

前端部署最先想到的就是NPM和Node,但是Node的版本切换可能是个问题,所以使用了NVM,这里之前也写过一篇NVM、NPM、Node.js的安装选择,不过是针对Windows系统的,实际在Linux上运行还有些许不同。
写文档时NVM的最新版本为0.39.3,使用时可以按需要更改版本。
1. 安装

1.1 在线安装

NVM的GitHub地址
  1. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
复制代码
  1. wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
复制代码
1.2 手动安装

也可以下载GitHub的Release版本文件上传到服务器手动安装,安装目录是/root/.nvm。
创建安装目录
  1. mkdir /root/.nvm
复制代码
解压文件到安装目录
  1. tar -zxvf nvm-0.39.3.tar.gz --strip-components 1  -C /root/.nvm
复制代码

  • -z:有gzip属性的
  • -x:解压
  • -v:显示所有过程
  • -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
  • –strip-component=1 代表解压出来的文件,剥离前一个路径
  • -C, --directory=DIR 改变至目录 DIR
2. 配置环境变量

如果选择了手动安装,需要自己配置一下环境变量才能在全局使用nvm指令。
  1. #编辑文件
  2. vim ~/.bashrc
  3. #按“i”进入insert模式,将下面两行代码写入文件,按“esc”退出insert模式,按“:”进入底行模式,输入“wq!”回车,即保存并退出
  4. export NVM_DIR="$HOME/.nvm"
  5. [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
  6. #刷新配置
  7. source ~/.bashrc
复制代码
3. 判断是否安装成功
  1. nvm -v
复制代码
4.安装node和npm
  1. #查看线上版本的指令与Windows版不同
  2. nvm ls-remote
  3. #选择一个LTS版本,如下图所示18.13.0,关于版本选择的问题以前也说过
  4. nvm install 18.13.0
复制代码

5.查看和切换版本
  1. #查看npm和node版本
  2. npm -v
  3. node -v
  4. #如果提示没有找到指令,则查看已安装的node版本
  5. nvm ls
  6. #切换到18.13.0版本
  7. nvm use 18.13.0
复制代码
nrm

nrm(npm registry manager)是npm的镜像源管理工具,直接使用连接国外资源下载有时会慢,可以切换至其他镜像源。
  1. #全局安装
  2. npm install -g nrm
  3. #查看可选的源
  4. nrm ls
  5. #切换至淘宝源
  6. nrm use taobao
复制代码
Nginx

Debian安装

如果使用的是Debian的系统,可以通过如下代码直接安装,但实际生产环境多半要添加模块,还是需要手动下载源码编译,参考下文的步骤。
  1. sudo apt update
  2. sudo apt install nginx
复制代码
下载

Nginx下载
选择稳定版本下载,上传到服务器
或者通过远程仓库下载
  1. wget http://nginx.org/download/nginx-1.22.1.tar.gz
复制代码
安装
  1. # 1.解压文件
  2. tar -zxvf nginx-1.22.1.tar.gz
  3. # 2.进入目录
  4. cd nginx-1.22.1
复制代码
按需编译

没有特殊需求的话,在nginx的解压目录里执行 make && make install 就可以编译安装nginx了,但是实际的线上环境还需要添加一些模块来满足线上的业务需求,我们的项目中用到了两个插件:

  • http_realip_module(真实IP)
  • http_ssl_module(SSL协议)
编译前要先安装依赖,虽然两个系统要安装的库不同,但是功能类似,从上到下依次是:

  • gcc编译器:用于 make 编译
  • 正则库:用于在配置文件内进行目录匹配
  • zlib库:用于对HTTP包的内容做gzip格式的压缩,Nginx编译过程和Http请求过程中需要gzip格式的压缩
  • OpenSSL库:提供SSL协议的编译环境
  1. # CentOS
  2. yum install gcc
  3. yum install pcre-devel
  4. yum install zlib zlib-devel
  5. yum install openssl openssl-devel
复制代码
  1. # Debian
  2. apt install -y build-essential
  3. apt install -y libpcre3 libpcre3-dev
  4. apt install -y zlib1g-dev
  5. apt install -y openssl libssl-dev
复制代码
编译操作如下:
  1. #查看可用模块
  2. ./configure  --help  
  3. #配置
  4. ./configure \
  5. --prefix=/usr/local/nginx \
  6. --with-http_ssl_module \
  7. --with-http_realip_module \
复制代码
参数说明:

  • --prefix 用于指定nginx编译后的安装目录
  • --add-module 为添加的第三方模块
  • --with..._module 表示启用的nginx模块,如此处启用了两个模块
没有安装依赖的话这里会提示错误,正确执行的结果如下:

接下来就是编译安装:
  1. #编译
  2. make
  3. #安装
  4. make install
  5. #可以简写成
  6. make && make install
复制代码
创建软链接

安装完成后,通过 nginx -V 查看一下已安装的模块信息,会提示没有这样的指令,这是因为指令只能在对应目录下执行,对于需要频繁使用的工具来说并不方便,想要在全局使用,可以创建一个软链接:
  1. sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
复制代码
之后就可以在任意目录执行nginx指令,执行 nginx -V 可以看到编译安装的模块:

日志

nginx日志默认记录在安装目录的 logs 文件夹下,访问日志全部写入在 access.log 文件中,随着时间推移,日志文件体积会逐渐增加,单个文件过大会导致可读性变差。通过修改配置的方式,我们可以让nginx日志自动按日期分割。
  1. #日志时间变量
  2. map $time_iso8601 $logdate {
  3.   '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
  4.   default    'date-not-found';
  5. }
  6. log_format  json_log  escape=json '{"host":"$http_host $request","time":"$time_local","timestamp":"$msec","from_ip":"$remote_addr","real_ip":"$http_x_forwarded_for","user_agent":"$http_user_agent"}';
  7. access_log  logs/access-$logdate.log  json_log;
复制代码
加在下图位置:

在更新配置之前,还要授予文件夹权限,要按日期创建日志文件需要有在目录中写入的权限。
  1. chmod -R 777 /usr/local/nginx/logs
复制代码
在查找无权限创建文件这个问题时候,看到一些回答是修改运行nginx的用户为root,但是我觉得这样在安全上可能会有问题,虽然777也是文件夹的最高权限,任何用户都可以修改,但相对会好一些,可能还有更好的方法,欢迎评论留言。
需要的话,error.log 也可以以同样的方式按时间分割。

可以创建一个软链接方便查看日志
  1. ln -s /usr/local/nginx/logs /root/logs
复制代码
启动

无论是启动还是重启,都要先测试配置,没有问题再启动。
  1. #测试配置
  2. nginx -t
  3. #配置没有问题后启动
  4. nginx
  5. #重启
  6. nginx -s reload
复制代码
pm2
  1. #安装
  2. npm install pm2@latest -g
  3. #查看
  4. pm2 -h
复制代码
如果提示命令未找到,也是与之前一样在bin目录下建立软链接

来源:https://www.cnblogs.com/LFeather/p/17059507.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具