使用GitHub Actions和Nginx实现自动化部署

简介: 使用GitHub Actions和Nginx实现自动化部署

要使用GitHub Actions和Nginx实现自动化部署,可以按照以下步骤操作:

 

1. **准备Nginx服务器**:在服务器上安装和配置Nginx,确保Nginx能够正常运行。

 

2. **创建GitHub仓库**:在GitHub上创建一个新的仓库,用于存储你的项目代码。

 

3. **创建GitHub Actions工作流**:在项目中创建`.github/workflows`目录,并在该目录下创建一个YAML文件,用于定义GitHub Actions工作流。示例内容如下:

 

```yaml
   name: Deploy to Nginx
 
   on:
     push:
       branches:
         - main
 
   jobs:
     deploy:
       runs-on: ubuntu-latest
 
       steps:
         - name: Checkout code
           uses: actions/checkout@v2
 
         - name: Install dependencies
           run: |
             sudo apt-get update
             sudo apt-get install nginx -y
 
         - name: Copy files to Nginx directory
           run: |
             sudo cp -r * /var/www/html/
 
         - name: Restart Nginx
           run: sudo systemctl restart nginx
   ```

 

  这个示例工作流在`main`分支上的每次push事件时运行,它会安装Nginx,将项目文件复制到Nginx的HTML目录下,并重启Nginx。

 

4. **提交代码到GitHub仓库**:将你的项目代码提交到GitHub仓库,触发GitHub Actions工作流。

 

5. **验证部署**:访问Nginx服务器的IP地址或域名,验证部署是否成功。

 

这里是一个更完整的示例代码,演示了如何使用GitHub Actions和Nginx实现自动化部署一个简单的静态网站。

 

1. **创建GitHub仓库**:创建一个新的GitHub仓库并将以下文件添加到仓库中:

 

  - `index.html`:一个简单的HTML文件,作为你的静态网站首页。

  - `.github/workflows/deploy.yml`:用于定义GitHub Actions工作流的YAML文件。

 

2. **index.html**:

 

```html
   <!DOCTYPE html>
   <html>
   <head>
       <title>Auto Deploy Example</title>
   </head>
   <body>
       <h1>Hello, Auto Deploy!</h1>
   </body>
   </html>
   ```

 

3. **.github/workflows/deploy.yml**:

 

```yaml
   name: Deploy to Nginx
 
   on:
     push:
       branches:
         - main
 
   jobs:
     deploy:
       runs-on: ubuntu-latest
 
       steps:
         - name: Checkout code
           uses: actions/checkout@v2
 
         - name: Install Nginx
           run: sudo apt-get update && sudo apt-get install nginx -y
 
         - name: Copy files to Nginx directory
           run: sudo cp -r * /var/www/html/
 
         - name: Restart Nginx
           run: sudo systemctl restart nginx
   ```

 

4. **提交代码**:将以上文件添加到GitHub仓库并提交。

 

这个示例假设我们已经有一个运行Nginx的服务器,并且具有sudo权限。工作流将在每次将代码推送到GitHub仓库的`main`分支时运行,它会安装Nginx,将`index.html`文件复制到Nginx的HTML目录下,并重启Nginx。

 

这里是一个带有环境变量配置的示例,可以根据需要修改Nginx的配置文件。

 

```yaml
name: Deploy to Nginx
 
on:
  push:
    branches:
      - main
 
jobs:
  deploy:
    runs-on: ubuntu-latest
 
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
 
      - name: Install Nginx
        run: sudo apt-get update && sudo apt-get install nginx -y
 
      - name: Copy files to Nginx directory
        run: sudo cp -r * /var/www/html/
 
      - name: Set up Nginx configuration
        run: |
          sudo bash -c 'cat > /etc/nginx/sites-available/default <<EOF
          server {
            listen 80;
            server_name _;
            root /var/www/html;
            index index.html;
 
            location / {
              try_files \$uri \$uri/ =404;
            }
          }
          EOF'
 
      - name: Enable Nginx site
        run: sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
 
      - name: Restart Nginx
        run: sudo systemctl restart nginx
```

 

这个示例假设我们的Nginx配置文件是默认的`/etc/nginx/sites-available/default`,并且我们希望使用默认的Nginx配置来服务你的静态网站。如果我们有自定义的Nginx配置,请相应地修改`/etc/nginx/sites-available/default`的内容。

目录
相关文章
|
1月前
|
jenkins 应用服务中间件 持续交付
Git + Jenkins 自动化 NGINX 发布简易实现
Git + Jenkins 自动化 NGINX 发布简易实现
|
7月前
|
监控 安全 机器人
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
128 0
|
9月前
|
存储 Ubuntu 持续交付
GitHub Actions 指南(上)
GitHub Actions 指南
119 0
|
1月前
|
存储 安全 Serverless
用 Github Actions 自动部署阿里云函数计算 FC
介绍了如何配置阿里云函数计算(FC)与GitHub Actions集成以实现自动部署。首先在阿里云创建函数,然后在项目根目录创建`s.yaml`文件配置Serverless Devs。接着在GitHub仓库中设置 Secrets 存储阿里云账号信息,并创建名为`aliyun-fc-deploy.yaml`的工作流文件来定义GitHub Actions。当代码推送到`master`分支时,Actions会自动部署到函数计算。最后,成功配置后,提交代码会触发自动部署,并可在GitHub Actions和阿里云控制台查看部署状态。
490 3
|
9月前
|
Linux 持续交付 iOS开发
GitHub Actions 指南(下)
GitHub Actions 指南
56 0
|
1月前
|
JavaScript Ubuntu 网络安全
使用github actions,将私有仓库的构建文件发布到另一个公开仓库,并同步到gitee
使用github actions,将私有仓库的构建文件发布到另一个公开仓库,并同步到gitee
186 0
|
1月前
|
JavaScript jenkins 应用服务中间件
Jenkins + Github + Nginx 自动化部署 Vue 项目
Jenkins + Github + Nginx 自动化部署 Vue 项目
221 0
|
10月前
|
前端开发 Ubuntu jenkins
前端项目自动化部署——超详细教程(Jenkins、Github Actions)(三)
前端项目自动化部署——超详细教程(Jenkins、Github Actions)(三)
512 0
|
1月前
|
前端开发
Github项目分享——免费的画图工具drow,最新前端面试题整理
Github项目分享——免费的画图工具drow,最新前端面试题整理
|
1天前
|
搜索推荐 开发者 SEO
CSDN 大规模抓取 GitHub 上的项目到 GitCode,伪造开发者主页引公愤
后续影响和发展方向 GitCode是CSDN开发的一个代码托管平台,为了快速获得搜索引擎流量,CSDN采用了惯用的手段,直接搬运大量内容进行填充。接下来,他们很可能会通过SEO农场来污染搜索引擎,以获得更多的流量。这种操作不仅对开发者极不尊重,也对整个互联网环境造成了严重的污染。 写在最后 GitCode 已经出来有挺长时间了,期间没闹出过什么问题。近期,不知道 GitCode 内部的哪位领导脑子被驴踢了,做出搬运 GitHub 的仓库来丰富自己平台内容的决定。 这种无视开发者权益、恶意搬运项目的行为,必将受到开发者社区的强烈谴责,尊重开发者的劳动成果,维护开源社区的良好氛围。开发者们也应团结