06-个人博客笔记-项目部署到腾讯云服务器
购买云服务器可以选择腾讯云和阿里云,前期可以使用免费的云服务器来部署自己的项目。我刚开始是试用的腾讯云服务器(windows系统)、然后又试用了阿里云的服务器(ubuntu系统)、最后还是购买了腾讯云的服务器(ubuntu)。各个平台都遇到了不同的问题,但是通过google都得到了解决。其实具体的步骤都可以参考各平台的文档,下面记录下我在部署中遇到的问题以及流程。
腾讯云服务器(windows系统)
1、服务器新建ftp站点: 可参考在Win7的IIS上搭建FTP服务及用户授权。
2、进入腾讯云后台,设置安全组
3、安装必要软件:mongodb、node、npm、nginx
3、将代码上传到服务器指定目录:下载FileZilla上传工具,填写服务器公网地址、用户名、密码(购买完成后腾讯会发送这些信息),端口默认21 (ftp传输方式)
阿里云(ubuntu)
1、购买后先重置下密码,假如重置为123
2、下载FileZilla连接服务器:填写服务器公网地址、用户名、密码、端口填写22,因为默认是sftp传输方式,用户名填写root,阿里云的ubuntu默认是root,密码就是第一步重置的密码。连接完成后可看到服务器的目录结构
3、通过ssh root@公网地址 这种方式连接服务器,进入服务器安装必要的软件
4、为了方便终端操作,可以先安装Oh-my-zsh,步骤如下:
安裝 zsh 套件 $ apt-get install zsh 安装git $ apt-get install git 安装完以上两步,执行下面的代码 curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh 把zsh设置成默认-替换bash,重启终端 chsh -s /bin/zsh
5、安装mongodb: 官方教程
6、安装node、安装npm
sudo apt-get install nodejs sudo apt-get install npm
7、安装pm2,通过pm2启动node可以使关闭终端时node依然运行。
npm install pm2 -g
8、进入后端代码的目录,通过npm i 安装后端代码需要的库,启动node
pm2 start index.js
可能出现的错误
import express from 'express'; ^^^^^^ SyntaxError: Unexpected token import
解决方法
npm install -g babel-cli pm2 start --interpreter babel-node index.js
通过pm2 list 查看node是否启动成功
9、安装nginx
nginx 下载页面查看最新稳定版本:http://nginx.org/en/download.html
// 下载 wget -o nginx-1.14.0.tar.gz http://nginx.org/download/nginx-1.14.0.tar.gz // 解压 tar -zxf nginx-1.14.0.tar.gz // 进入nginx-1.14.0目录 检测安装环境 ./configure // 编译 make make install 安装完成
10、启动配置nginx,进入nginx目录,可以看到目录下有 sbin目录和conf目录,sbin目录下可以启动nginx,conf目录下可以配置nginx,首先启动nginx,查看nginx是否正常启动.
cd /usr/local/nginx cd sbin nginx
在浏览器输入公网地址,出现下面的界面就说明nginx已经启动
11、修改nginx的配置,nginx配置的写法具体含义可自行google,下面粘贴出针对我的博客,以及对我有所帮助的文档。
nginx配置location总结及rewrite规则写法
user root root; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 8081; server_name localhost; root /home/ubuntu/demo/darrenblog/blogadmin; index index.html index.htm; location / { try_files $uri $uri/ @router; index index.html; } location @router { rewrite ^.*$ /index.html last; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location /admin/ { proxy_pass http://127.0.0.1:4000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /works/ { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 匹配任何以 /static/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。解决加载本地图片的跨越问题 location ^~ /static/ { } location ~ .*\.(gif|jpg|jpeg|png)$ { root /root/demo/server/darrenblog/uploads;#指定图片存放路径 proxy_store on; proxy_store_access user:rw group:rw all:rw; proxy_temp_path /root/demo/server/darrenblog/uploads;#图片访问路径 proxy_set_header Host 127.0.0.1; if ( !-e $request_filename) { proxy_pass http://127.0.0.1:3000; } } } server { listen 8089; server_name localhost; root /root/demo/client/blogclient; index index.html index.htm; location / { try_files $uri $uri/ @router; index index.html; } location @router { rewrite ^.*$ /index.html last; } location /tourist/ { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host:$server_port; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location /tourist/* { proxy_pass http://127.0.0.1:3000; } } }
腾讯云服务器(ubuntu)
ubuntu服务器大致的配置上面都基本上描述了,腾讯云的ubuntu服务器默认的用户名是ubuntu,其他的配置基本差不多,需要注意的是nginx的启动。
启动nginx: sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过 -h查看帮助命令。