将GitHub上的前端项目部署至腾讯云服务器

目录

一、服务器购买

二、XShell上的操作

1. XShell连接

2. 将代码从GitHub上克隆下来

3. 获得登录token

4. 安装node

5. 安装项目依赖包

6. 安装nginx

三、试错过程中常用的指令和说明


一、服务器购买

以此为例:

选择:

一开始我选了使用应用模板的宝塔面板,虽然也实现了部署,但是觉得很奇怪,然后改用这个,ubuntu资料比较多

购买后跳转到这个页面:登录 - 腾讯云

(因为我自己实在是没法通过页面找到是哪里,就给个链接吧呜呜)

噢对了,记得设置密码,登录名默认ubuntu。之后转到XShell上操作,其实可以直接从网页里登,但是之后要更新部署的话感觉有点麻烦,就用XShell啦

二、XShell上的操作

1. XShell连接

主机填服务器公网ip,端口号不需要改,就是22,然后连接,连接后需要输入用户名和密码。用户名即ubuntu,密码就是刚才设置的密码

2. 将代码从GitHub上克隆下来

这里使用https克隆,问就是SSH没成功过(

首先,在XShell里输入:

git init

然后复制https地址

输入:

git clone <刚才复制的地址>

 然后输入用户名和密码

注意,用户名即GitHub的用户名,密码不是登录密码,而是token,需要在GitHub里申请token

3. 获得登录token

步骤如下:

然后选择tokens(classic)

然后根据提示申请一个就好了,得到token后,记得及时保存,因为关闭页面后你就找不到了(是的吧),要是需要只能重新申请

4. 安装node

参照:Ubuntu下安装Node - 掘金

sudo apt install nodejs

sudo apt install npm

看了一下,觉得nodejs版本太老了,然后找了这个:使用apt-get install安装node.js导致安装成低版本的解决方案_apt-get install nodejs 版本过低-CSDN博客

如果出现了这个问题:

输入hash -r即可

5. 安装项目依赖包

根据之前克隆了代码,接下来cd 项目目录,然后npm install,再用npm run build打包

6. 安装nginx

nginx: Linux 软件包 ubuntu安装nginx centos安装 nginx

安装成功后,输入cd /etc/nginx/conf.d

新建配置文件:

vim 自定义文件名称.conf

写如下内容:

server {
    listen      80;
    server_name 你的服务器IPv4地址;

    location / {
        root    /usr/project/webbuilder/build;
        index   index.html index.htm;
    }
}

server {
    listen      80;
    server_name 你的网站域名(如果有的话);

    location / {
        root    /project/build;
        index   index.html index.html;
    }
}

 即允许使用ip和域名访问网站

sudo nginx -t

sudo nginx -s reload

我为了方便,直接在本来就有的default.conf文件里修改。

如果出现了如下报错:

nginx: [error] invalid PID number "" in "/var/run/nginx.pid"

别急,nginx: [error] invalid PID number ““ in “/var/run/nginx.pid“-CSDN博客

这里卡了很久,运行成功后先是显示404,然后显示403什么的

显示404是因为路径问题,路径应该是/home/ubuntu/project_name/build

显示403,是文件权限问题,具体报错可以看/var/log/nginx目录下的error.log查看

如果有修改端口,除了要在腾讯云防火墙上开发权限,如:

还要在ubuntu中设置

sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanent

sudo systemctl restart firewalld.service  // 重启防火墙

可以使用

sudo telnet <ip> <port>

测试是否成功远程连接网页

三、试错过程中常用的指令和说明

sudo  # 当你在网上搜到的指令发现好像都不行时,可能是权限不够,尝试在前面加个这个

vim <文件名>  # 查看文件内容(只读),如果在前面加sudo,就可以有权限修改,即sudo vim <文件名>,文件名可以带上路径,在路径存在但文件不存在的情况下,会在这个路径下新建这个文件
esc键  # vim查看文件后,按下这个键就可以输入指令了
:q  # vim后退出文件不保存(为了以防万一,要退出前先按下esc键,:指令都这样)
:wq  # 保存并退出,要想保存需要sudo vim,vim是只读
a  #  编辑模式 通过上下左右移动光标

ps -ef | grep name  # 查看name相关的所有进程  aux和-ef有什么区别,我其实不太懂(
ps aux | grep nginx # 查看nginx进程
ls -a # 查看当前目录下所有文件
cd path  # 进入当前目录下path路径
cd # 退回初始路径


# nginx相关

# nginx重启
sudo systemctl restart nginx  # 完全的重启  使用systemctl命令
# 前面记得加sudo
systemctl status nginx  # 查看nginx服务状态
systemctl disable nginx.service # 关闭开机自启
systemctl enable nginx.service # 开启开机自启
systemctl status nginx.service # 查看状态
systemctl restart nginx.service # 重启服务
systemctl list-units --type=service # 查看所有服务

# 重启方式
sudo systemctl restart nginx  # 完全的重启  使用systemctl命令
sudo /etc/init.d/nginx restart  # 使用脚本
sudo service nginx restart  # 使用 service 命令
sudo nginx -s reload  # 当conf配置文件有修改时,不停止进程的情况下重新加载配置文件
sudo systemctl reload nginx  # 配置更改后重新加载
sudo nginx -s restart  # 我不到啊


# 其他东西
sudo /etc/init.d/nginx status  # 查看状态
sudo kill -s QUIT <PID>  # 杀掉进程
sudo pkill -9 nginx  # 杀掉所有nginx进程  (是这样写的吧)
sudo nginx -s stop  # 停止nginx进程
sudo chmod code <file>  # 修改文件权限

结束,终于调通了,更高级的东西以后再学

可以的,Github Actions可以用来自动化前端项目的部署到云服务器。以下是一个简单的例子: 1. 首先,在你的Github仓库中创建一个`.github/workflows`文件夹,并在该文件夹下创建一个`deploy.yml`文件。 2. 在`deploy.yml`文件中设置触发部署的事件,例如push到master分支。然后设置一个`job`,该`job`会在触发事件后运行。 3. 在该`job`中,使用`actions/checkout` action拉取代码,并使用`actions/setup-node` action安装依赖。 4. 接下来,使用你喜欢的打包工具打包你的前端代码,例如webpack或者parcel。打包后的文件会被存储在一个`dist`文件夹中。 5. 然后,使用`appleboy/ssh-action` action将打包后的文件上传到云服务器。该action会使用SSH登录到你的服务器,并将文件复制到服务器上的指定目录。 下面是一个示例的`deploy.yml`文件: ```yml name: Deploy to Cloud Server on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Node uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install dependencies run: npm install - name: Build run: npm run build - name: Deploy to Cloud Server uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} script: | cd /path/to/your/project rm -rf * scp -r /path/to/your/project/dist/* ./ ``` 这个例子是使用密码登录到云服务器的。如果你使用的是SSH Key,你需要相应地修改`deploy.yml`文件。此外,你需要在Github仓库的`Settings`中添加`secrets`,以保存你的服务器信息和登录凭证。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值