Web部署
部署 Next.js
开发的 mimWeb
应用。
安装 Git
sudo apt update
:更新软件列表。sudo apt install git
:安装Git
。git -version
:检查Git
版本。git config --global user.name 'aioverg'
:配置Git
用户名。git config --global user.email 'aioverg@outlook.com'
:配置Git
邮箱。git config --list
:查看Git
配置信息。ssh-keygen -t rsa -C 'aioverg@outlook.com'
:生成ssh
密钥。
拉取代码
从 github 拉取
- 将生成的密钥接入 github。
git clone ***
:拉取仓库代码。
从本地推送
在 ubuntu
服务器创建新的仓库
git init mimWeb
:创建名为mimWeb
的空仓库。git config receive.denyCurrentBranch ignore
:设置允许远程代码推送(进入仓库目录运行)。git --work-tree="./" reset --hard
:显示工作目录(./
表示当前的mim
目录),不然只有一个.git
目录,没有其它文件代码(进入仓库目录运行)。
配置客户端免登录推拉代码
-
touch ~/.ssh/authorized_keys
:创建authorized_keys
文件,用于记录客户端公钥。 -
cat ./id_rsa_aioverg.pub >> ./authorized_keys
:将客户端的ssh
公钥id_rsa_aioverg.pub
加入authorized_keys
中。这里是从本地上传
id_rsa_aioverg.pub
文件到服务器,然后加入的authorized_keys
,也可以直接将公钥内容复制到authorized_keys
。
客户端推送代码
git remote add origin ubuntu@123.207.211.120:mimWeb
:连接远程仓库。git push origin master
:推送代码至远程仓库。
本地连接多个远程仓库
以将代码分布推送到 github 和 ubuntu
的仓库为例,操作如下:
-
git remote add name_1 url_1
:name_1
是自定义的连接名称,url_1
是远程仓库的地址。git remote add name_2 url_2
:name_2
是自定义的连接名称,url_2
是远程仓库的地址。 -
git remote -v
:查看本地连接的远程仓库。 -
git push name_1 master
:向name_1
连接的远程仓库推送master
分支。 -
git remote remove name_1
:删除名为name_1
连接的远程仓库。
项目打包
-
sudo apt install nodejs
:安装 Node。安装 16 版本:
curl -sL https://deb.nodesource.com/setup_16.x |sudo -E bash - sudo apt install -y nodejs
可以修改
setup_16.x
来指定版本,如setup_18.x
是安装 18 版本。 -
node --version
:检查 Node 版本。 -
sudo apt install npm
:安装 npm。 -
npm --version
:检查 npm 版本。npm config get registry
:查看 npm 源。npm config set registry https://registry.npm.taobao.org/
:修改 npm 源(这里使用的是淘宝镜像)。 -
npm i
:安装项目。 -
npm run build
:打包项目。 -
npm run start
:启动服务。注:这里默认端口号 3000,使用腾讯云服务器时需要注意,要注意在防火墙中将端口号加入进去,不然无法访问,如图:
-
这时候浏览器输入
公网:端口号
就能够访问网站了。
配置 Nginx
-
sudo apt install nginx
:下载 nginx。 -
sudo vim /etc/nginx/sites-available/default
:修改 nginx 配置,内容如下server { listen 80 default_server; listen [::]:80 default_server; server_name mim.zone; # 域名 location / { proxy_pass http://localhost:3000; # 代理到网站服务地址 proxy_set_header Host $host; # 非静态网站配置 proxy_set_header X-Forwared-For $remote_addr; # 非静态网站配置 } }
-
配置 ssl(https加密)
申请并下载 ssl 证书,将证书文件上传服务器。
修改 nginx 配置,在上一步的基础上增加内容:
这里使用腾讯云的免费证书,有效期 90天,具体的部署教程也可以看腾讯云的文档
server { listen 80 default_server; listen [::]:80 default_server; server_name mim.zone; # 域名 listen 443 ssl default_server; # 监听端口 listen [::]:443 ssl default_server;# 监听端口 ssl_certificate /etc/nginx/mim.zone_bundle.crt; # 证书文件地址 ssl_certificate_key /etc/nginx/mim.zone.key; # 证书文件地址 ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; #请按照以下协议配置 #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; # 开启 location / { proxy_pass http://localhost:3000; # 代理到网站服务地址 proxy_set_header Host $host; # 非静态网站配置 proxy_set_header X-Forwared-For $remote_addr; # 非静态网站配置 } }
nginx -t
:验证配置文件是否正确。netstat -lntp
:查看端口使用,看看 443 端口是否正确开启。curl https://mim.zone
:查看是否能够连通。 -
/usr/sbin/nginx -s reload
:重启 nginx,可以使用域名访问了。重启 nginx 时可能会没有权限,这时可以切换到 root 用户,使用 root 去重启。
这里使用的腾讯云服务器,默认提供的用户是 ubuntu,登录 root 需要做如下配置:
-
sudo passwd root
:设置 root 用户的密码。 -
sudo vim /etc/ssh/sshd_config
:修改登录配置,内容如下:#PermitRootLogin prohibit-password 改为 PermitRootLogin yes
-
sudo service ssh restart
:重启配置。 -
su root
:切换到 root。 -
su ubuntu
:切换到 root。
-
pm2管理服务
-
npm install -g pm2
:安装 pm2 管理 node 服务。注:如果默认安装目录没有权限,建议重新设置安装目:
-
在命令行的主目录中,为全局安装创建目录:
mkdir ~/.npm-global
-
配置 npm 使用新的安装目录:
npm config set prefix '~/.npm-global'
-
修改或创建
~/.profile
文件,并添加以下内容:export PATH=~/.npm-global/bin:$PATH
-
使用命令更新系统变量:
source ~/.profile
-
-
pm2 start npm --name mimWeb -- run start
(进入到mim
目录内运行):启动一个名为mimWeb
的服务,启动命令是npm run start
。 -
其他命令:
pm2 list
:查看服务列表。pm2 restart all
:重启所有服务。pm2 restart <name>
:重启。pm2 stop <name>
:停止。pm2 delete <name>
:删除。
定时任务(非必要)
-
给脚本赋予执行权限,以
git.sh
为例chmod +x git.sh
-
增加定时任务
打开定时任务编辑,命令
crontab -e
会打开定时任务文件, 在文件中写入命令保存即可增加一条定时任务。以git.sh
为例:30 5 * * * /home/ubuntu/mim/git.sh # 每天凌晨 5:30 执行 git.sh 脚本,其它也按此格式设置。
crontab -l
:查看定时任务列表。 -
定时任务日志
修改
/etc/rsyslog.d/50-default.conf
文件,日志文件在/var/log/cron.log
sudo vim /etc/rsyslog.d/50-default.conf // 做如下内容修改 cron.* /var/log/cron.log // 将这一行前面的注释取消
sudo service cron restart
:重启定时任务命令,不重启日志打开不会生效。