nginx上部署项目,在nginx.conf
中新建server
即可,但为了防止频繁改动nginx.conf
出现某些重大失误或使配置文件难以管理,这里采取独立配置每个站点配置文件的方式
前期处理
新建配置文件目录
我选在conf
文件夹下新建目录
1 | cd /usr/local/nginx/conf |
在nginx.conf
的http
内引入vhost
中的所有.conf
结尾的配置
1 | include vhost/*.conf; |
切换到vhost
文件夹
1 | cd vhost |
vue项目部署
项目文件上传到服务器
先将vue项目打包
1 | npm run build |
通过ftp工具将打包生成的dist
文件夹丢到服务器的某个地方,比如/var/www
新建站点配置文件
方便起见,直接以域名+端口号命名配置文件(取名困难症)
1 | vim test.uimentama.com.conf |
配置文件内容
1 | server { |
这样,当访问 test.uimentama.com:80 时,就可以打开vue项目了(前提域名要设置云解析+备案)
开启gzip压缩
若vue项目打包时未配置gzip
压缩,那么打包生成的项目将会比较大,当服务器带宽很差劲时会出现很久才能打开网站的情况,因此需要在服务器上配置gzip
压缩
1 | #以下代码写在上面代码中的server内部即可(不要写在location里面!) |
代码来自Nginx开启Gzip压缩功能(附详细解释)+测试是否开启了压缩
重新加载nginx配置文件使其生效
1 | systemctl reload nginx |
访问test.uimentama.com
,打开成功
node项目部署
服务器环境下的node安装等不做赘述不会就去问问万能的百度啊
项目上传至服务器并启动
首先将整个node项目通过ftp工具丢到服务器某个位置,例如/var/www/node
切换到node项目目录下(test-node为项目名)
1 | cd /var/www/node/test-node |
通过pm2进程守护启动node项目,取名为pm2-test-node
1 | pm2 start npm --name pm2-test-node -- run stage |
*pm2相关参考另一篇文章:pm2及其常用命令
打开浏览器,输入http://服务器公网ip:node运行的端口
,node做出响应,即为成功
但这样太丑了而且不方面前台进行接口调用,因此配置nginx配置文件,来做到访问某个域名,将其代理至127.0.0.1:node运行端口
新建站点配置文件
同上,在vhost下新建配置文件,文件名为域名+端口号(node运行在哪个端口就写哪个端口号)
1 | vim /usr/local/nginx/conf/vhost/node.uimentama.com:8888.conf |
配置文件内容
1 | server { |
重新加载nginx配置文件使其生效
1 | systemctl reload nginx |
然后就可以通过http://node.uimentama.com/api
来调用node应用了
配置https
首先需要准备好证书文件的下载,即xxx.pem
和xxx.key
文件。参考各自购买证书所在平台提示,下载对应域名证书文件。
上传证书文件
在nginx配置文件目录,新建cert
文件夹存放证书
1 | cd /usr/local/nginx/conf |
通过ftp工具将证书和密钥文件上传至cert
文件夹
修改nginx配置文件
以上面vue项目部署配置文件test.uimentama.com.conf
为例修改
1 | server { |
可以看出,没有做太多修改,除了新增了ssl的相关配置外,仅将端口由80替换为443,并新增了访问80端口即http网址自动转发至https网址,其他原封不动
证书文件路径应相对于nginx的配置文件
nginx.conf
填写,因为站点配置文件最终是被引入到nginx.conf
中执行的
然后重新加载nginx配置文件并重启nginx即可
1 | systemctl reload nginx |
错误提示
1、nginx: [emerg] the ssl parameter requires ngx_http_ssl_mod
该错误提示nginx未安装http_ssl_mod模块,需要前去安装
进入nginx解压目录
1 | cd /usr/local/nginx/nginx-1.21.0/ |
查看已安装模块
1 | nginx -V |
添加http_ssl_mod及已安装模块,重新编译nginx
1 | ./configure --prefix=/usr/local/nginx --with-http_ssl_module |
不要执行
make install
,会覆盖掉之前配置好的nginx
备份原先已安装的nginx
1 | cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak |
停止nginx主程序
1 | systemctl stop nginx |
或者
1 | nginx -s quit |
把新编译的nginx主程序覆盖掉原来的
1 | cp objs/nginx /usr/local/nginx/sbin/nginx |
重启nginx即可
1 | systemctl reload nginx |
或者
1 | nginx -s reload |
443端口被apache占用
若事先安装过apache
并处于启动中,会出现443端口占用问题,当然可以直接杀掉apache进程,但我希望两者同时运行,这时就需要修改apache配置文件了
1 | vim /etc/httpd/conf.d/ssl.conf |
修改最上面的Listen 443 https
为Listen 8081 https
即可