servidor Linux en línea actualizar y mantener un registro de nodo del proyecto

prefacio

En primer lugar, me acaba de desarrollar un front-end Android y picante de pollo, los conocimientos relacionados con el servidor de fondo en cuestión es relativamente pequeño, que no entiendo, aprender de los siguientes fines puramente personales, sin duda, una gran cantidad de problemas con el actual no necesariamente el mismo aerosol, la luz, la mejor no pulverizar

La participación de los puntos técnicos: los comandos de Linux comunes, secuencias de comandos shell, el uso de Git, firewall de firewall, Nginx, infotify, PM2, nodo y otros conocimientos relacionados

Desde el año pasado, ocupado en tomar el tiempo para escribir un nodo con un sistema como un front-end, servidores de servicios de fondo no entienden el conocimiento, así que quiero ir a lo largo de todo el proceso:

Desarrollo -> Dominio de aplicación / implementación del servidor -> en línea proyecto

Bajo el primero, simplemente publicar un proyecto tiene los siguientes tres almacenes:

Se puede ver, el repositorio de código y el código del servidor repositorio local es el mismo, puede ser relativamente desnuda almacén de empuje / tracción, debido a que ambos ya como código nativo para funcionar en un almacén local código de servidor de depósito a ejecutar en el servidor la razón de almacén no desnudo directamente cuando el RAN proyecto, pero conseguir un repositorio de código, porque el almacén desnuda está encriptado, simplemente no entendemos, y mucho menos como un programa normal de correr, pero el clon a estar fuera de lo normal muestra, como para preguntar por qué ir git, git código fuente para ver.

1. El servidor crea un repositorio desnudo: git init --bare.

2. Crear un repositorio de código de servidor, a partir del clon almacén desnuda

3. Crear un repositorio de código local

A continuación, se unen a la bodega desnuda servidor: origen remoto git add <nombre de usuario> @ <pública del servidor IP>: / <servidor de direcciones de almacén desnuda>. Nombre de usuario que utiliza la raíz, si se siente inseguro, también puede crear otros usuarios y restringir los permisos como raíces entre la cuenta máxima autoridad, por lo que una gran cantidad de operaciones de seguridad para otras cuentas tales como Git va a crear una cuenta, para limitar su autoridad sólo hacer código de control.

4. siempre / servidor de repositorio de código PM2 período previo

Ejecución NPM empezar, después de nodejs proyectan en funcionamiento, habilitado por el puerto por defecto 3000, http: // localhost: 3030, sabemos que después de la NGP empezar no podemos llevar a cabo otras operaciones, a menos que Control + C para detener la ejecución, ya que no se están ejecutando en segundo plano de modo limitado, con el fin de que pueda ejecutarse en segundo plano, se pueden usar herramientas, para siempre o PM2, específicamente para ver la información relevante, he utilizado en el proyecto es PM2, a continuación se explicará el uso específico

5. Uso nginx nombre de dominio se une a este proyecto, el servidor de seguridad de firewall de expansión

Tales como el acceso de shudongpo.com el nombre de dominio a nuestro proyecto, es necesario unir el nombre de dominio y el puerto 3030, de modo que se puede acceder fuera del proyecto de servidor, dado a conocer esta considerarse exitosa, tenemos que utilizar este paso para lograr nginx , nginx utilizará la transmisión de dominio al puerto 3000, de la siguiente manera:

Usando yum install nginx: yum install nginx -y.

Después de la instalación: nginx -t Ver ubicación del perfil.

Utilice el archivo de configuración de nginx editor vim para agregar un servidor:

    server {
        listen       80;
        server_name  xxx.xxx.cn;
        location / {
            proxy_pass http://localhost:3000;
        }
    }

Así que cuando usted visita los xxx.xxx.cn puede acceder a ejecutar el proyecto nodo.

Nota: Por favor, abrir el puerto 80 establecido en una caja fuerte dentro de sus propios servidores, por lo que no se puede acceder; impermeable cortafuegos Si se ha instalado el servidor de Linux, es probable que el servidor de seguridad para apagar el puerto 80, por lo que se puede abrir: cortafuegos -cmd --zona = --add-puerto público = 80 / tcp --permanent.

la expansión del conocimiento cortafuegos:

开放端口,firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
--permanent   #永久生效,没有此参数重启后失效
查看已开放端口,firewall-cmd --list-ports
重启,firewall-cmd --reload
查看默认防火墙状态,firewall-cmd --state

Después de la configuración, reinicie nginx: systemctl comenzar nginx, si se ha activado el reinicio.

A continuación, introduzca dominio de unión en el ordenador puede acceder al proyecto.

6. Uso de inotify, scripts de shell, PM2 automáticamente la actualización de partidas individuales [enfoque]

Ahora que el proyecto ha acumulado, entonces ¿cuál es el problema? Después de modificar el código en un empuje servidor de la computadora a un almacén desnuda, pero el repositorio de código de servidor que no tire, por lo que el código no se actualiza, aunque no necesario volver a ejecutar el programa de actualización, o cuando el acceso no se actualiza, es necesario resolver el problema:

Vamos de nuevo> código de actualización del repositorio - empuje código informático - repositorio de código después de la actualización> servidor de depósito desnudo recibe una actualización

6.1. Empuje código de ordenador

empuje local para realizar

6.2. Servidor de depósito desnudo después de recibir la actualización de código de actualización del repositorio

Este paso requiere de dos pasos a seguir: 1 servidor escucha a la actualización del almacén al descubierto, después de dos actualizaciones de almacén desnudas, actualización automática repositorio de código

Permítanme escuchar las actualizaciones del almacén al descubierto, también podemos utilizar git detalles de implementación de gancho, por favor ver la información pertinente sobre el caso inotify mí, inofity Solía ​​escuchar

Instalación inotify:

yum install inotify-tools -y

Supervisar la aplicación de escritura directa de un script de shell para ejecutar, toque update.sh:


#!/bin/bash
#监听裸仓库xxx.git改变完成后,执行xxx代码仓库进行pull
inotifywait -m -e modify -r /local/git_project/xxx.git/ |
while read events            #读取事件
do
cd /local/node_workspace/xxx #cd到代码仓库目录
git pull                     #pull代码
echo 'xxx.git裸仓库有变动,已pull最新代码到代码仓库'
echo $events                 #打印事件
done

inofity ampliar los comandos relacionados con el conocimiento:

inotifywait -m Modificar -e -r /local/git_project/xxx.git

-m expresado escucha guardado, o sólo una vez, -e modificar representado evento escuchar es modificar (el contenido del archivo ha sido modificado), - r representa un monitor recursiva, sino también vigilar el archivo secundario

Guión terminado, pero es sólo un archivo normal, tenemos que darle permisos de ejecución: chomd + x update.sh

Ejecutar el script: ./ xxx.sh, por lo que no será un problema, este no es el fondo de ejecución, que no pueden retirar una vez que el fondo, por lo que: ./ xxx.sh y ejecución de fondo, todavía hay problemas, el proceso de secuencias de comandos shell es el niño cáscara proceso de terminales proceso, cuando el terminal está capa cerrada, sus hijos se apagará, por lo que el guión se detendrá, por lo que: ./xxx.sh nohup y, representan carrera ininterrumpida en el fondo, es decir, a ejecutarse en segundo plano, no se apagará terminal de shell interrumpido

El guión corrió, cuando empujamos el código en el equipo local, el servidor escuchará Inotify almacenes desnudos cambiado, entonces cd para la atracción de ejecución repositorio de código, el código se actualizará el repositorio de código

6.3. Después de que el código se actualiza automáticamente recarga, y dejar que el programa se ejecute en segundo plano, en lugar de inicio NPM ha estado funcionando en el primer plano

Este paso se logra por medio de herramientas PM2 necesidad de instalar: NPM instalar PM2 -g

Si la recarga automática sólo se deja correr en segundo plano, sin la necesidad de actualizar el código, se puede: inicio PM2 bin / www

Si la recarga automática después de escuchar de nuevo para ejecutar ambas actualizaciones de código en el fondo, por lo que tenemos que configurar el archivo, en primer lugar: ecosistema PM2, generar un archivo de configuración config.js, a continuación, modificar:

module.exports = {
  apps : [{
    name: 'shopsystem-server-pms',
    script: './bin/www',    #主要是这里,修改启动项

    // Options reference: https://pm2.keymetrics.io/docs/usage/application-declaration/
    args: 'one two',
    instances: 1,
    autorestart: true,
    watch: false,
    watch_options: {
      "usePolling": true
    },
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'development'
    },
    env_production: {
      NODE_ENV: 'production'
    }
  }],

  deploy : {
    production : {
      user : 'node',
      host : '212.83.163.1',
      ref  : 'origin/master',
      repo : '[email protected]:repo.git',
      path : '/var/www/production',
      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
    }
  }
};

Entonces: PM2 comienzan config.js

Esto mostrará automáticamente todas las carpetas y archivos en el directorio actual, si no se actualiza automáticamente recarga

Lo que necesita saber para complacer a los conocimientos PM2: https://pm2.keymetrics.io/docs/usage/application-declaration/

 

En este punto, todo el proceso de finalización del proyecto

Publicado 33 artículos originales · ganado elogios 49 · Vistas de 140.000 +

Supongo que te gusta

Origin blog.csdn.net/gsw333/article/details/105176839
Recomendado
Clasificación