Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  NGINX PM2 VPS: Bina seni bina perkhidmatan aplikasi yang sangat tersedia dan berskala

NGINX PM2 VPS: Bina seni bina perkhidmatan aplikasi yang sangat tersedia dan berskala

WBOY
WBOYasal
2023-09-27 08:09:391043semak imbas

NGINX PM2 VPS: 构建高可用和可扩展的应用服务架构

NGINX PM2 VPS: Bina seni bina perkhidmatan aplikasi yang sangat tersedia dan berskala

Dengan perkembangan pesat teknologi Internet, membina yang sangat tersedia dan seni bina perkhidmatan aplikasi berskala Seni bina perkhidmatan aplikasi berskala menjadi semakin penting. NGINX, PM2 dan VPS ialah alat yang biasa digunakan yang boleh membantu kami mencapai matlamat ini. Artikel ini akan memperkenalkan cara menggunakan NGINX, PM2 dan VPS untuk membina seni bina perkhidmatan aplikasi yang sangat tersedia dan berskala, dan menyediakan contoh kod khusus.

1. NGINX: Pelayan proksi songsang berprestasi tinggi

NGINX ialah pelayan proksi songsang berprestasi tinggi yang boleh digunakan untuk Imbangan beban , sumber statik cache, terminal SSL dan fungsi lain. Berikut ialah contoh konfigurasi NGINX yang mudah untuk memajukan semua trafik ke pelayan aplikasi bahagian belakang:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

Dalam konfigurasi di atas, kami mentakrifkan yang dipanggil Kumpulan pelayan bahagian belakang mengandungi berbilang pelayan aplikasi bahagian belakang. Arahan proxy_pass memajukan trafik ke kumpulan pelayan bahagian belakang. backend的后端服务器组,包含了多个后端应用服务器。proxy_pass指令将流量转发到后端服务器组。

2. PM2:进程管理工具

PM2是一个强大的进程管理工具,可以帮助我们管理和监控Node.js应用。以下是一个简单的PM2配置示例:

{
    "apps": [{
        "name": "my-app",
        "script": "app.js",
        "instances": "max",
        "exec_mode": "cluster",
        "error_file": "logs/error.log",
        "out_file": "logs/out.log",
        "log_date_format": "YYYY-MM-DD HH:mm:ss",
        "env": {
            "NODE_ENV": "production"
        }
    }]
}

在上述配置中,我们定义了一个名为my-app的应用,并指定了应用的主文件app.jsinstances指定了应用的实例数,exec_mode指定了应用的执行模式。此外,我们还可以配置应用的日志文件、环境变量等。

3. VPS:虚拟专用服务器

VPS是一种虚拟化技术,可以将一台物理服务器划分为多个虚拟专用服务器。VPS提供了独立的资源,可以满足应用的需求。以下是一个简单的VPS配置示例:

{
    "name": "my-vps",
    "provider": "digitalocean",
    "region": "nyc3",
    "size": "s-1vcpu-1gb",
    "ssh_keys": ["my-public-key"],
    "backups": false
}

在上述配置中,我们定义了一个名为my-vps

2. PM2: Alat Pengurusan Proses

PM2 ialah alat pengurusan proses yang berkuasa yang boleh membantu kami mengurus dan memantau aplikasi Node.js . Berikut ialah contoh konfigurasi PM2 yang mudah:

          +---------+
          |   NGINX |
          +---------+
               |
          +---------+
          |   PM2   |
          +---------+
               |
          +---------+
          |   VPS   |
          +---------+
               |
          +---------+
          |   APP   |
          +---------+

Dalam konfigurasi di atas, kami mentakrifkan aplikasi bernama my-app dan menentukan fail utama aplikasiapp.js . instance menentukan bilangan tika aplikasi dan exec_mode menentukan mod pelaksanaan aplikasi. Selain itu, kami juga boleh mengkonfigurasi fail log aplikasi, pembolehubah persekitaran, dsb.

3. VPS: Pelayan Peribadi Maya

VPS ialah teknologi virtualisasi yang boleh membahagikan pelayan fizikal kepada beberapa pelayan maya khusus. VPS menyediakan sumber bebas untuk memenuhi keperluan aplikasi. Berikut ialah contoh konfigurasi VPS mudah:

# 安装 NGINX
sudo apt-get install nginx

# 安装 PM2
sudo npm install -g pm2

# 创建 NGINX 配置文件
sudo nano /etc/nginx/conf.d/my-app.conf

Dalam konfigurasi di atas, kami menentukan VPS bernama my-vps dan menentukan penyedia VPS, Konfigurasi wilayah, saiz, Kunci SSH, sandaran, dsb.

4 Bina seni bina perkhidmatan aplikasi yang sangat tersedia dan berskala

Untuk membina seni bina perkhidmatan aplikasi yang tersedia dan berskala, kami boleh Menggabungkan NGINX. , PM2 dan VPS. Berikut ialah gambar rajah seni bina perkhidmatan aplikasi mudah:

upstream backend {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
}

server {
    listen 80;
    server_name my-app.com;

    location / {
        proxy_pass http://backend;
    }
}

Dalam seni bina di atas, NGINX bertanggungjawab untuk menerima permintaan luaran dan memajukan trafik ke kluster PM2 bahagian belakang. PM2 bertanggungjawab untuk mengurus dan memantau proses aplikasi Node.js. VPS menyediakan sumber bebas untuk memastikan ketersediaan dan kebolehskalaan aplikasi.

5. Contoh kod khusus

Berikut ialah contoh kod khusus yang menunjukkan cara menggunakan NGINX, PM2 dan VPS untuk membina ketersediaan tinggi dan Seni bina perkhidmatan aplikasi boleh skala.

Pertama, pasang NGINX dan PM2 pada VPS, dan konfigurasikan proksi terbalik NGINX: #🎜🎜#
# 在 VPS 上克隆应用代码
git clone https://github.com/my-app.git

# 进入应用目录
cd my-app

# 安装应用依赖
npm install

# 启动应用
pm2 start app.js -i max
#🎜🎜#Dalam fail konfigurasi NGINX, tambahkan yang berikut: #🎜🎜#
sudo systemctl restart nginx
#🎜 🎜#Simpan dan keluar daripada fail. Kemudian, gunakan aplikasi Node.js ke VPS dan gunakan PM2 untuk mengurus proses aplikasi: #🎜🎜#rrreee#🎜🎜#Simpan dan keluar dari fail. Akhir sekali, mulakan semula pelayan NGINX: #🎜🎜#rrreee#🎜🎜#Kini, kami telah berjaya membina seni bina perkhidmatan aplikasi yang sangat tersedia dan berskala yang boleh mengakses aplikasi kami melalui nama domain NGINX. #🎜🎜##🎜🎜##🎜🎜#Kesimpulan#🎜🎜##🎜🎜##🎜🎜#Artikel ini memperkenalkan cara menggunakan NGINX, PM2 dan VPS untuk membina seni bina perkhidmatan aplikasi yang sangat tersedia dan berskala. Dengan mengkonfigurasi dan mengurus alat ini dengan betul, kami boleh meningkatkan ketersediaan dan prestasi aplikasi serta mencapai pengembangan pantas. Saya harap contoh kod ini akan membantu pembaca dalam membina seni bina perkhidmatan aplikasi mereka sendiri. #🎜🎜#

Atas ialah kandungan terperinci NGINX PM2 VPS: Bina seni bina perkhidmatan aplikasi yang sangat tersedia dan berskala. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn