在自己的服务器上部署react+go
1.git clone 前后端项目
2.安装docker
sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo apt-key fingerprint 0EBFCD88sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.iosudo docker run hello-world3.安装docker compose
这个命令需要代理,而且网速很慢(可以使用scp下载, 链接: https://pan.baidu.com/s/1YoPO1StZkGOoArkPkIjFAA 提取码: hbdg )
wget
https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
docker-compose --version
输出:
Docker Compose version v2.5.0
4。安装docker postgres15
sudo docker pull postgres:15
docker run -e POSTGRES_PASSWORD=abdfdd3859a24c -d postgres
docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
42701b5edfd0 postgres "docker-entrypoint.s…" 5 seconds ago Up 2 seconds 5432/tcp laughing_faradaydocker inspect 4270
ip address: 172.18.0.2
5.安装go
wget https://golang.org/dl/go1.18.3.linux-amd64.tar.gztar -xvf go1.18.3.linux-amd64.tar.gzsudo mv go /usr/local/go_1.18.3
vim
export PATH=$PATH:/usr/local/go_1.18.3/bin
go versiongo version go1.18.3 linux/amd64
6.部署后端
进入后端:
go build
修改conf/app.ini
修改postgres的密码和端口号(5432)和ip(172.18.0.2)
创建数据库:
sudo docker exec -it 4270 /bin/bash
su postgres
psql
create database database_name;
启动./xxx(生成的可执行文件)
7.启动后端
使用静态文件,在本地yarn build生成后,scp到服务器即可
8.配置nginx
react端使用静态配置,go后端使用动态配置
server {
listen 80;
server_name xxx.xxx.com;
charset utf-8;
#location ~ ^/uploads/ {
# root /root/blog/public;
#}
location / {
#root localhost:8000;
#proxy_pass server localhost:8000;
proxy_pass http://your_site_name_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Cookie $http_cookie;
}
}
upstream yoursite_name_server{
server localhost:8000;
}
前端使用:
server {
listen 80;
server_name xxx.xxx.com;
charset utf-8;
root /tmp/build;
index index.html;
location / {
add_header Access-Control-Allow-Origin http://xxx.xx.com;
add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
add_header Access-Control-Allow-Headers 'Origin, Authorization, Content-Type';
if ($request_method = 'OPTIONS') {
add_header Access-Control-Max-Age 86400;
add_header Content-Length 0;
add_header Content-Type 'text/plain; charset=utf-8';
return 204;
}
try_files $uri $uri/ /index.html;
}
}