清障记-1(2022-07-29)- 阿里云、centos8、nginx、nodejs、react nextjs、go、git、mysql8、mongodb

纯流水账记录:
问:今天干了什么?学到了什么?还差什么?
答:
今天干了什么?
今天主要用最原始的方式,从购买阿里云,到搭建nginx,安装各种所需要的服务,搭建了前端和后端,让前端react 能和后端go的api交互。涉及到下面这些centos8、nginx、nodejs、react nextjs、go、git、mysql8、mongodb。
今天学到了:
1,如何最原始的方式安装各种软件
2,nginx 配置react (见第5部分)
3,reactnextjs 如何发布运行 ,不同环境怎么区分
还差什么?
如何用docker 还有jenkins来使得这些更加自动化些?nginx的配置太简单了

======================================================

1,购买阿里云(试用,此处省略)并配置密码,可以让ssh登录

2,安装nginx

yum update
yum info nginx
yum install nginx
systemctl start nginx
systemctl status nginx

3,安装nodejs,yarn

curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -  
yum install -y nodejs
wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum install yarn

4,安装git,在需要安装代码的目录下git clone 前端的代码库

yum install git 
git clone git@github.com:xyxyxyx/ababab.git

然后可以在代码目录下运行 可以执行

yarn install

安装好后,如果运行 yarn dev ,没有错,基本上应该没问题了,毕竟本地已经测试过了。
我react 是基于nextjs的。

5,那么开始搞nginx的配置,让打开阿里云的ip(没有钱买域名)的时候 直接显示这个react的站点。

这里我是这样改的,首先备份原来的nginx.conf(一般在 /etc/nginx/目录下),然后修改他,
在http 这个块下面添加下面的

upstream stockdemo {
  server localhost:3000;
}  

然后删掉原来http块里的server 80那段默认的。
然后在conf.d目录下 我建一个新的conf文件 比如stockdemo.conf,此处配置最简单的,什么配置都没有相当于,后续会来更新优化。

server {
    listen 80;
    location / {
        proxy_pass http://stockdemo;
    }
}    

保存完后重启nginx

systemctl restart nginx

这时如果你打开你的ip地址,那么就应该出现了简单的前端页面:
在这里插入图片描述

6,开始搞后端的,先装go 吧

wget https://golang.google.cn/dl/go1.18.4.linux-amd64.tar.gz
tar -zxf go1.18.4.linux-amd64.tar.gz  -C /usr/local
vim /etc/profile

然后在文件的最后添加

#go 环境变量
export GO111MODULE=on
export GOROOT=/usr/local/go
export GOPATH=/home/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

保存完后,退出,然后重新载入profile 查看go version

source /etc/profile
#查看go是否安装好
go version 

7,安装mysql mongodb

wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
yum install mysql-server
systemctl start mysqld.service
#查看是否有mysqld的进程
ps -ef|grep mysqld
#第一次登录进去不要输入密码
mysql -uroot -p
#进入mysql后 改root密码,新建db,用户等
create database stock;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newrootpassword';
create user 'stock'@'localhost' identified by 'stock123';
#grant all priviliges on stock.* to 'stock'@'localhost';  
grant all privileges on stock.* to 'stock'@'%' ;

然后导入本地的sql,此处不说了
开始安装mongodb
我按照这个文章mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/
摘抄如下
Create a /etc/yum.repos.d/mongodb-org-6.0.repo file so that you can install MongoDB directly using yum: 我们要vim /etc/yum.repos.d/mongodb-org-6.0.repo 里面写上下面这段:

mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

保存后,就可以用 yum install了 如下:

sudo yum install -y mongodb-org
sudo systemctl start mongod
sudo systemctl status mongod

这样就安装好mongodb了
这里有个地方要注意,centos上装好的mongodb 的client端 命令是mongosh 而不是 本地mac上的 mongo
然后我再导入本地的mongdb文件 此处也不赘述。

8,go 的站点启动 遇到了些问题

go build 的时候总是出现:
Go get 太慢, 然后到这个页面看到解决方法https://goproxy.io/zh/

export GOPROXY=https://proxy.golang.com.cn,direct

速度提高多了。
因为我用了比较老的orm: xorm,之前本地调试都没问题,不知道为啥在正式服务器上就老是显示:

common/db.go:6:2: reading github.com/go-xorm/xorm/go.mod at revision v0.7.9: git ls-remote -q origin in /home/gopath/pkg/mod/cache/vcs/516cff95263076be8ff66fbbae295f8235963b00c4f114bcea50f99a51def272: exit status 128:
        ERROR: Repository `go-xorm/xorm' is disabled.
        Please ask the owner to check their account.

        fatal: Could not read from remote repository.

        Please make sure you have the correct access rights
        and the repository exists.

以上这段错误,说明xorm 换地址了?
于是我baidu了下,最后发现
xorm 真的换地址了
https://gitea.com/xorm/xorm
我把代码中之前用到import github 下的xorm改成了xorm.io的,然后就ok了。

go get xorm.io/xorm

然后我

nohup go run 

go 服务就起好了。然后我再打开我的ip地址,现在api里都能访问到go的api了,也能返回数据了。

9,react nextjs中配置env 的问题

我不是全职做前端的,所以其实这都是我自己瞎摸的,可能真正的方法不是这样。
得装下 "cross-env": "^7.0.3"

 "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "build-next-prd": "cross-env ENV=next-prd next build"
 }

这样的话,可以在next.config.js中来配置env
process.env.ENV 这个就是 next-prd,根据这个来判断到底应该用那个apihost 就可以了

const apiHostMapping = {
  'next-prd': 'xxx.xxx.2xx.xxx',
  'next': 'localhost'
};
env: {
    APIHOST: process.env.ENV ? apiHostMapping[process.env.ENV] : 'localhost'

  },

这样 yarn build-next-prd 再 yarn start ,这时候 服务器上调用的api 就是xxx.xxx.xxx.xxx了 而不是我们之前测试的localhost。

========================================
障碍太多了,今天只扫了一个地方。
还差的地方,要看下次再补上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值