部署Node JS Express应用程序-cent os

时间:2018-08-07 06:49:11

标签: node.js apache express nginx server

我正在尝试在GoDaddy VPS托管上部署Node js应用程序。

我已将所有文件上传到服务器,并使用pm2 启动服务器 跟随This Tutorial

我的服务器正在端口 3021 上运行,我想在端口 80 上运行 用于特定域。

我已经完成了本教程中的pm2的所有步骤,但是从Nginx部分开始,我不知道下一步要做什么。

我已经安装了Nginx,然后运行此命令sudo vi /etc/nginx/sites-available/default

并添加配置,保存时会显示错误[ Error writing /etc/nginx/sites-available/default: No such file or directory ]

我正在服务器上运行apache。可以使用apache做同样的事情吗?

修改

这是我的Nginx配置::

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;


include /usr/share/nginx/modules/*.conf;

events {
    worker_connections  1024;
}


http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;


    include /etc/nginx/conf.d/*.conf;
}

2 个答案:

答案 0 :(得分:0)

尝试使用/etc/nginx/conf.d/default.conf而非/etc/nginx/sites-available/default添加您的配置。根据您的配置,它应该是配置服务器的正确路径。

如果要使用/etc/nginx/sites-available/default,应将include /etc/nginx/sites-available/*;添加到nginx.conf中。

http {
    ...
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-available/*;
}

答案 1 :(得分:0)

因此,如果您正在运行pm2,那么您就已经完成了一半:)关于nginx conf。该命令:sudo vi /etc/nginx/sites-available/default可能不起作用,因为sites-available目录不存在。请记住,nginx不需要sites-availablesites-enabled。将每个服务器配置放在单独的文件中只是一个好习惯。但是如果没有它们,nginx也可以工作。如果您不打算添加更多服务器,只需使用/etc/nginx/nginx.conf文件来配置服务器。您需要做的是创建一个具有所需配置的新服务器块,例如:

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  yourapp.com www.yourapp.com;
    root         /var/www/html; # <- for you it can be any other dir
    index        index.html index.htm # <- or any other file which is your main file

    # You want to proxy_pass the traffic on any route to your internal app
    location ~ /(.*) { # ~ means that you are using regex
        proxy_pass http://localhost:3021/$1$is_args$args; # <- proxy_pass to your internal app
        proxy_redirect off;
        proxy_read_timeout 60s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
    }
}

只需将以上配置放入/etc/nginx/nginx.conf块内的http中即可。

现在检查您的nginx配置:

nginx -t

如果成功,则您的nginx配置已完成。

还没有结束。还有一件事-在防火墙中打开端口80,如下所示:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

您可以检查它是否打开:

firewall-cmd --list-ports

http://yourapp.com/上打开浏览器,然后查看它是否有效。

记住要密切注意nginx和应用程序的日志:

tail -f /var/logs/nginx/access.log # or error.log to see nginx access/error log
pm2 logs # to see your app logs

希望有帮助。遇到更多问题,请随时共享更多信息