本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2022-07-07
# 安装 nginx
yum install nginx -y
启动nginx
nginx
服务器目录如下:
data
- www
- blog
- js
- index.html
- css
- index.html
修改nginx配置 /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
listen [::]:80;
server_name www.upcccz.cn;
root /data/www;
include /etc/nginx/default.d/*.conf;
location /blog/ {
alias /data/www/blog/;
}
location / {
alias /data/www/blog/index/;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# 开启gzip
gzip on;
# 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
gzip_min_length 1k;
# gzip 压缩级别 1-10
gzip_comp_level 2;
# 进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/json;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
}
重启nginx服务
# 测试配置格式是否正确
nginx -t
# 重启
nginx -s reload
创建web文件目录
mkdir -p /data/www
配置scp以做到本地上传文件到服务器无需输入密码
本地生成ssh
ssh-keygen -t rsa
在本地可以 查看是否生成生成id_rsa 和 id_rsa.pub
cd ~/.ssh
ls
成功生成后,将其拷贝到 服务器根目录/root/.ssh/authorized_keys
文件中,这一次需要输入密码,之后就不需要了
前面的root@192.168.0.1
为服务器账户和服务器ip
scp .ssh/id_rsa.pub root@192.168.0.1:/root/.ssh/authorized_keys
上传文件到服务器 (将本目录的zip 上传到 服务器的 /data 文件夹)
scp ./blog.zip root@192.168.0.1:/data
项目结构如下
myblog
- js-blog
- xxx.js
- public
- xxx.csss
在 myblog 下新建 deploy.sh
#!/bin/bash
params=""
space=" "
for dir in $*
do
params=${params}${space}${dir}
cd $dir-blog
hugo
cd public
zip -q -r ../$dir-blog.zip *
cd ..
scp ./$dir-blog.zip root@你的公网ip:/data
rm -f $dir-blog.zip
cd ..
echo "upload $dir packages successfully"
done
expect ~/.ssh/web_update$params
# 这一些列的命令是将hugo博客项目打包,压缩,通过scp传到服务器上得到data目录
# 做完之后,执行一个本地脚本~/.ssh/web_update 去连上服务器解压文件,这个脚本下面会提到
# 如果执行的的是 sh deploy.sh js
# 则相当于执行 expect ~/.ssh/web_update js
# 如果是多个参数就是: sh deploy.sh aa bb cc
# 则相当于执行 expect ~/.ssh/web_update aa bb cc
增加 ~/.ssh/web_update
脚本
# 切换目录
cd ~/.ssh
# 新建文件
touch web_update
# 编写
vim web_update
脚本如下,注释可删掉,中文部分用相关信息代替。
#!/usr/bin/expect -f
# for循环遍历参数
# for {set i 0} {$i < $argc} {incr i} {
# puts "arg $i: [lindex $argv $i]"
# }
# 设置变量
set host 你的服务器ip
set user 你的服务器账户
set password 你的服务器密码
#set timeout -1
# 登录服务器
spawn ssh $user@$host
expect {
"(yes/no)?" {
send "yes\r";
expect "password:";
send "${password}\r";
exp_continue;
}
"password:" {
send "${password}\r";
exp_continue;
}
}
# 执行更新脚本 这一步的脚本也可以放在服务器上,而不用放在这里
for {set i 0} {$i < $argc} {incr i} {
send "rm -rf /data/www/[lindex $argv $i]-blog/*\r"
expect "#"
send "unzip -q /data/[lindex $argv $i]-blog.zip -d /data/www/blog/[lindex $argv $i]"
expect "#"
puts "depoly [lindex $argv $i] successfully"
}
# 执行更新脚本后,退出服务器终端
send "exit\r"
expect eof
也可以在服务器上部署更新脚本如下
for dir in $*
do
rm -rf /data/www/$dir-blog/*
unzip -q /data/$dir-blog.zip -d /data/www/$dir-blog
echo "depoly $dir success"
done
解决操作文件时提示Found a swap file by the name “xxxxxx.swp"的问题
实际上就是之前操作过"xxxxxx.swp"文件,只不过操作不当,没有保存该文件,就会有一个后缀为.swp的隐藏文件存在了,并且这个隐藏文件会在我们下次操作正常的文件名时会提示,会使操作者很厌烦。所以我们要做的就是把xxxxxx.swp删除掉。先按住:q退出当前文件。 然后我们先进入有问题的文件所在的文件夹中,执行ls -a查看所有文件,包括隐藏文件(.swp文件是隐藏文件)
然后再执行rm .nginx.conf.swp删除该文件,最后通过ls -a查看该文件确实被删除了
1、centos安装node
# cd /opt/ 目录下
# 安装 gcc gcc-c++
yum install gcc gcc-c++
# 下载node文件 必须是linux-x64
wget https://npm.taobao.org/mirrors/node/v16.15.0/node-v16.15.0-linux-x64.t ar.gz
# 解压
tar -xvf node-v16.15.0-linux-x64.tar.gz
#重命名
mv node-v16.15.0-linux-x64 node
# 建立软连接
ln -s -i /opt/node/bin/node /usr/bin/node
ln -s -i /opt/node/bin/npm /usr/bin/npm
在nginx中更改配置
# 增加以下配置
location /api/abc {
proxy_pass http://localhost:9999; # 9999是node listen 的端口号
}
# 则访问 www.yoursite.cn/api/abc 会将程序交给启动服务在端口9999 nodejs处理
# 查看进程 ps -ef | grep node
# 杀进程 kill -9 9999
安装 pm2,使用pm2启动服务后可关闭终端窗口。
npm i -g pm2
ln -s -i /opt/node/bin/pm2 /usr/bin/pm2
# 启动服务
pm2 start index.js
nest打包不会将依赖打进去
nest build 生成dist目录
将package.json 和 yarn.lock 文件拷贝到 dist目录中, 并将dist传到服务器中
拷贝的过程可以使用 postbuild 脚本来实现,run build的时候会按顺序执行 prebuild build postbuild
{
"scripts": {
"prebuild": "rimraf dist",
"build": "nest build",
"postbuild": "sh cp.sh",
}
}
# cp.sh
cp yarn.lock ./dist/yarn.lock
cp package.json ./dist/package.json
在服务器安装 yarn
npm i -g yarn
# 建立软连接
ln -s -i /opt/node/bin/yarn /usr/bin/yarn
# 切换到服务器中上传过来的的dist目录
yarn install --prod