NodeJs+Express建设一个网站记录

用 Express generator 快速开始

  1. 安装 Express application generator
    $ npm install express-generator -g
  2. 用Express generator 创建 nodeweb 项目
    $ express --ejs nodeweb
    --ejs 表示用ejs做view engine,默认使用jade
  3. 安装dependencies
cd nodeweb
npm install
  1. 运行刚才创建的项目
  • On MacOS or Linux $ DEBUG=nodeweb:* npm start
  • On Windows, use this command:> set DEBUG=myapp:* & npm start
    这里的DEBUG是node的 environment variable,在js文件中可以通过process.env.DEBUG 得到前面设置的DEBUG的值

Serving static files in Express

app.use('/static', express.static(path.join(__dirname, 'public')))
express.static 是 express 的一个内置 middleware。

用 git 同步代码

在服务器上, ce ~/web, 把网站代码clone下来

用 PM2 运行

安装 pm2

npm install pm2@latest -g

启动网站

pm2 start apps.json

pm2 生成启动脚本

方式1

$ pm2 startup centos

[PM2] You have to run this command as root. Execute the following command:
sudo su -c "env PATH=$PATH:/usr/bin pm2 startup centos -u red --hp /home/red"

把sudo su...这句话拷贝,粘贴再次运行,在/etc/init.d/下生成一个 pm2-init.sh, 每次系统启动会自动运行。

方式2

方式1产生的脚本在init.d目录, centos 7 已经是用 systemd 了,所以下面的方式更好 $ pm2 startup systemd

[PM2] You have to run this command as root. Execute the following command:
sudo su -c "env PATH=$PATH:/usr/bin pm2 startup systemd -u red --hp /home/red"

再次运行sudo su -c "env PATH=$PATH:/usr/bin pm2 startup systemd -u red --hp /home/red"
这次会在 /etc/systemd/system下面产生pm2.service.

安装 Nginx

现在curl localhost:3000,网站能运行,但是3000 端口被 firewalld 封锁,从服务器外部还是不能打开网站。这时可以给 firewalld 增加一个 service 打开 3000 端口,也可以安装 nginx 做反向代理。

安装 nginx

sudo yum install nginx
先删除 nginx 默认配置里的 server 部分,打开 /etc/nginx/nginx.conf, 删除 server {... ...}里面的内容,保存。
添加modular 配置,在/etc/nginx/nginx.conf里的 http 部分找到 include /etc/nginx/conf.d/*.conf, 这句话好像默认就存在。
添加my-web的配置,在 /etc/nginx/conf.d/下新建文件 my-web.conf, 添加内容


server {
        listen 80;
        server_name yy.xx.com;
        location / {
                proxy_pass http://127.0.0.1:3000/;
                proxy_redirect     off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
               #client_max_body_size 100m;
        }
}

检查配置文件的语法是否有错: sudo nginx -t
重启动 nginx, sudo systemctl restart nginx
这时候,本地机器 http://yy.xx.com应该可以打开 my-web。

你可能感兴趣的:(NodeJs+Express建设一个网站记录)