网站部署
静态网站部署
-
下载
git
,使用自带的apt
安装程序sudo apt install git // 安装 git // 查看 git
-
下载
nginx
sudo apt install nginx
-
连接
github
并克隆仓库设置
git
用户名和邮箱git config --global user.name "aioverg" git config --global user.email "aioverg@outlook.com"
生成
SSH
密钥,ssh
文件在当前目录下(即/home/ubuntu/
),将密钥配置到github
ssh-keygen -t rsa -C "aioverg@outlook.com"
克隆远程仓库
git clone https://github.com/aioverg/aboy
-
修改
nginx
配置,使其指向仓库地址,仓库地址在/home/ubuntu/mim
sudo vim /etc/nginx/sites-available/default # 打开配置文件, 修改如下内容, 让服务的根目录指向网站代码所在的地址 server { root /home/ubuntu/mim; }
-
修改
nginx
配置,使其用户名与启动名称一致,不然会找不到根目录地址sudo vim /etc/nginx/nginx.conf // 修改内容如下 user ubuntu;
-
修改完成,重启
nginx
sudo nginx reload
mim 网站部署
代码仓库
安装 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
如果是从 github 拉取代码使用这里。
- 将上面生成的密钥接入 github。
git clone ***
:拉取仓库代码。
连接本地
如果是作为Git仓库从本地推送代码使用这里。
在 ubuntu
服务器创建新的仓库:
-
git init mim
:创建名为mim
的空仓库。 -
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:mim
:连接远程仓库。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 url_1
:向地址为url_1
的远程仓库推送。 -
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,使用腾讯云服务器时需要注意,要注意在防火墙中将端口号加入进去,不然无法访问,如图:
-
这时候浏览器输入
公网:端口号
就能够访问网站了。
管理服务
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 mim -- run start
(进入到mim
目录内运行):启动一个名为 mim 的服务,启动命令是npm run start
。 -
pm2 list
:查看服务列表。 -
pm2 restart all
:重启所有服务。
配置 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。
-
定时任务(非必要)
-
给脚本赋予执行权限,以
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
:重启定时任务命令,不重启日志打开不会生效。