服务器部署环境小记

引子

本来下午准备参加一个活动 可以白领花 和一个妹子说好一起去 结果之前给一个物流公司写的项目 结果公司服务器重置了 没办法只能重装环境 重新部署项目
本以为 1~2h 就能搞定 没想到竟搞到快晚上 10 点(可能是最近一直在看前端 好久没有部署环境了 Linux指令也忘得差不多了) 特写此文记录部署时遇到的坑

部署环境
  • os
    • centos
  • node npm nginx
坑一 ssh scp 失效

起因:当时开发时图省事 配置了免密登录 后来服务器重置了 把我本机公钥删掉了
现象:ssh 连不上服务器 且 scp 失效
解决方案:将本机的 ~/.ssh/known_hosts文件里那个IP对应的记录删掉再登录试试
造成原因见文末

坑二 node版本太低

安装时图省事 yum install nodejs 结果版本太低 好多包都下不了
后又通过源码安装 需通过 ln -s 配置环境变量
解决方案:

  • 通过yum
curl -sL https://rpm.nodesource.com/setup_10.x | bash -   // 执行该网页的脚本
sudo yum clean all && sudo yum makecache fast
sudo yum install -y gcc-c++ make
sudo yum install -y nodejs
  • 源码安装
wget https://nodejs.org/dist/v8.9.4/node-v8.9.4.tar.gz
tar zxvf node-v8.9.4.tar.gz
cd node-v8.9.4
./configure
make && make install
  • 软连接用法 找到安装目录 /bin 目录
ln -s /usr/local/xxxx/bin/xxx  /usr/local/sbin/xxx
坑三 nginx 安装问题

通过 yum 源安装 由于上传错误的前端项目 误以为是 nginx 的问题
yum remove 卸载不干净

find / -name nginx* | xargs rm -rf  // 卸载大法 将系统中所有 名字中含 nginx 的文件 全部删掉

后通过源码安装 各种问题

  • 问题一
cp: "conf/koi-win" 与"/usr/local/nginx/conf/koi-win" 为同一文件
make[1]: *** [install] 错误 1
make[1]: Leaving directory `/usr/local/nginx'
make: *** [install] 错误 2
  • 解决方案
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf
  • 问题二
    • 安装后配置 https 没装 ssl 模块 然后返工
各种坑原因
坑一原因

SSH 登录方式

  • 口令登录

    ssh user@host
    The authenticity of host ‘host (12.18.429.21)’ can’t be established.
    RSA key fingerprint is 98:2e:d7:e0:9f:ac:67:28:c2:42:2d:37:16:58:4d.
    Are you sure you want to continue connecting (yes/no)?

    • 无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗
    • 用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对
    • 远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码
    • 上面服务器发送客户端的公钥,存储在服务器的/etc/ssh/ssh_host_rsa_key.pub中(有可能是同目录下的其他.pub文件中)
  • 公钥登录

    • 原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

原因:服务器重置后 公钥私钥已变 系统已之前的公钥加密 自然无法连接

坑二原因

下载环境 版本号很重要 不要图一时之快 后面多花费的时间 比你想象的要多
附 Linux 软硬链接知识点

引子
  • Linux 的文件系统里面,每一个文件都有一个对应的 inode,也就是硬盘中专门储存文件元信息的区域,在其中会包含文件的字节数、拥有者、权限等信息。值得注意的是,文件名与 inode 并不是一一对应的关系,而是多对一的关系,也就是说会出现多个文件名对应同一个 inode 的情况。当我们去访问一个文件时,Linux 系统会首先通过文件名找到其对应的 inode,通过其中的信息读取文件。这种从文件名到 inode 的对应就是硬链接。
在 Linux 系统中有两种链接:
  • 硬链接(hard links)
    • 比如说我在微博上有一个昵称 Roscoe,而我在 Github 还有一个昵称 roscoe054,但是这两个名字其实都是指到我同一个人。同理,通过硬链接我们可以从不同的文件名访问到相同的内容。而不管我们从哪个文件名访问并修改了这个文件,当我们从另外的文件名访问到时,获取到的也将是修改后的内容。
  • 软链接(soft links)或符号链接(symbolic links)
    • 软链接和硬链接的区别在于,它并不是指向 inode,而是指向文件名。比如说我创建了一个 /path/link.js 到 /path/file.js 的软链接,则当我访问 link.js 的时候,实际上相当于访问 file.js。如果我把 file.js 删除的话,再去访问 link.js 就会报错。
    • 设置软链接的源地址和目标地址都必须是绝对路径
坑三原因
  • ./configure --prefix = ‘xxxxxx’ 作用

如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱

用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)

  • –conf-path=PATH

设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf

主要原因是文件名重复 还有不要把源码 和 安装的路径写在一起

小结

最后活动也没参与成 还弄到很晚
主要是心态崩了 光想着赶快结束 越急错越多 再加上好久没有部署环境 对Linux命令已生疏不少
中间把前端项目传错了都没有发现
而且 从本文来看 自己还是太嫩了点

环境的版本 编译时需要加载的模块 等细节 都没考虑到

最后说好和妹子一起去的 还把她鸽了 难受到一批

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值