云服务器,Linux上安装xampp,搭建node服务,云服务器Firewalld、iptables,nginx反向代理

7 篇文章 0 订阅
5 篇文章 0 订阅

写在前面的

如果说将后端api代码部署到云服务器,并使用域名访问接口,那么需要一些前期准备;这里需要提一下的是,因为服务器有一个外网ip,因此可以在通过外网ip访问到服务器启动的服务;

前期准备

云服务器,注册域名,备案,域名解析(当然没有域名也是可以的,可以通过外网ip访问;但,例如小程序访问api就必须使用https://域名/api,才能访问,这是小程序限制的)

下载xampp:

下载安装包,官网链接:https://www.apachefriends.org/zh_cn/download.html ;根据服务器的linux系统/位数下载对应版本查询linux版本:

cat /proc/version

在这里插入图片描述

uname -a

在这里插入图片描述
关于安装包下载被墙网速限制或无法下载,可以私我,我发给你们,linux和windows、os和版本都有的;

xampp安装步骤

1、首先链接远程linux服务器

这里使用的免费版xshell链接服务器;来到目录root/tools下面,可以新建目录或者其他目录;但需要确保有去操作权限,不然会提示(Text file busy)文本文件忙,无法操作或安装等;
来到目录:root/tools

cd /root/tools

下载:xampp

wget https://www.apachefriends.org/xampp-files/7.2.30/xampp-linux-x64-7.2.30-0-installer.run

如果提示链接失败,无法下载,那么办法是: 先把安装包下载到本地,然后使用fileZilla工具连接服务器,用工具上传文件到目录root/tools下;什么安装包下载被墙?私我~
在这里插入图片描述

2、xshell终端执行安装命令

首先赋予权限,如果没有权限不能安装:

chmod -R 755 xampp-linux-x64-7.2.30-0-installer.run

再执行安装:

./xampp-linux-x64-7.2.30-0-installer.run

安装过程,就是直接y,回车,如此循环,,

xampp默认安装在/opt/lampp目录下
在这里插入图片描述

3、启动:xampp服务

启动:

/opt/lampp/lampp start

或,如在opt/lampp目录下直接执行可以

.lampp start

在这里插入图片描述

停止:

/opt/lampp/lampp stop

查看状态

/opt/lampp/lampp status

重启:

/opt/lampp/lampp restart

重要:如果启动失败,可能服务器启动了其他服务,占用了,例如 nginx服务,需要先停止nginx服务 sudo systemctl stop nginx

xampp启动成功之后,通过公网ip访问xampp启动页,http://公网ip/dashboard/
在这里插入图片描述

4、访问数据库,修改数据库密码

先进入数据库
在这里插入图片描述
如果不能进入,提示:
在这里插入图片描述
那么,修改phpMyAdmin配置文件,配置文件目录/opt/lampp/etc/extra,一会说一下,各个配置文件对应文件;
在这里插入图片描述
修改如下:也就是将 Require local 改成 Require all granted
在这里插入图片描述

然后再进入phpMyAdmin,进来之后修改密码;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后输入密码,右下角执行就可以了;

修改密码之后,发现无法连接数据了,因为数据库配置文件中的登录信息没有写上密码,所以登录失败;解决:打开配置文件,写上密码就可以。

配置文件目录:/opt/lampp/phpmyadmin
在这里插入图片描述

$cfg['Servers'][$i]['password'] = '';

修改成刚刚更改的密码;
在这里插入图片描述
这样就能正常连接数据库了;

安装守护进程pm2

运行命令全局安装

npm install pm2 -g

在linux下,安装之后运行命令 pm2 list,发现无法正常执行提示;

pm2 list

发现提示:

-bash: pm2: command not found

这是因为linux不会想windows一样全局配置,需要手动配置一下;
①、echo $PATH 一下路径
在这里插入图片描述
②、然后找到pm2的安装路径,一般在 npm install pm2 -g 的时候会提示路径;我的在 /usr/local/nodejs/bin 路径下
在这里插入图片描述
重要执行:注意检查的路径

ln -s /usr/local/nodejs/bin/pm2 /usr/local/bin/

然后:pm2 list
在这里插入图片描述
pm2可以正常使用了;一切准备就绪只差公网访问node服务。

服务器下启动,node服务

代码:

// index.js
const http = require('http');
const hostname = '0.0.0.0';
const port = 9000;
const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});
server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

启动:

pm2 start index.js

在这里插入图片描述

linux上的node.js的网站是否正常运行,端口是否正常监听curl

curl localhost:9000
or
curl 公网ip:9000
在这里插入图片描述

服务防火墙

服务器,linux系统配置端口号的坑!!!服务器防火墙配置!!!

nginx代理

nginx反向代理,附带二级域名解析

 # nginx反向代理
    upstream a20200127 {
        server 127.0.0.1:9000; # 这里的端口号写你node.js运行的端口号,也就是要代理的端口号,我的项目跑在8081端口上
        keepalive 64;
    }

    # 附带二级域名使用(a.202001270.cn)
    server {
        listen 9001; #这里的端口号是你要监听的端口号
        server_name 47.104.67.xxx www.202001270.cn 202001270.cn a.202001270.cn; # 这里是你的服务器名称,也就是别人访问你服务的ip地址或域名,可以写多个,用空格隔开
        location / {
            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;
            proxy_set_header Connection "";
            proxy_pass http://a20200127; # 这里要和最上面upstream后的应用名一致,可以自定义
        }
    }

nginx配置 https 转 node 服务

	# nginx反向代理
    upstream a20200127 {
        server 127.0.0.1:9000; # 这里的端口号写你node.js运行的端口号,也就是要代理的端口号,我的项目跑在9000端口上
        keepalive 64;
    }
    server {
        listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
        server_name www.20200127.cn;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
        root html;
        index index.html index.htm;
        ssl_certificate /etc/letsencrypt/live/20200127.cn/fullchain.pem; # managed by Certbot
        #将domain name.pem替换成您证书的文件名。
        ssl_certificate_key /etc/letsencrypt/live/20200127.cn/privkey.pem; # managed by Certbot
        #将domain name.key替换成您证书的密钥文件名。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
        ssl_prefer_server_ciphers on;
        # 443转 静态目录
        # location / {
        #     root /var/www/hc;   #站点目录。
        #     index index.html index.htm;
        # }
        # 443转node服务
        location / {
            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;
            proxy_set_header Connection "";
            proxy_pass http://a20200127; # 这里要和最上面upstream后的应用名一致,可以自定义
        }
    }

    # 提高权重 https://20200127.cn 的请求转向到 https://www.20200127.cn
    server {
        listen 443;
        server_name 20200127.cn;
        rewrite ^ https://www.20200127.cn  permanent;
    }

linux查看自己的ip地址,注意:查询到得是私有ip信息,公网ip再网站上实例中查看

ifconfig

windows开启telnet客户端来验证ip和端口是否通

windows开发telnet

在这里插入图片描述

telnet ip 端口号

在这里插入图片描述

感谢,参考如下:
https://blog.csdn.net/putao2062/article/details/79688020
https://blog.csdn.net/Ghost_hell/article/details/54915739
https://cloud.tencent.com/developer/article/1398311
https://my.oschina.net/u/2252639/blog/1798667
https://blog.csdn.net/quincylk/article/details/50562399

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值