代码拉取完成,页面将自动刷新
同步操作将从 goploy/goploy 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package main
import (
"bufio"
"fmt"
"github.com/joho/godotenv"
"goploy/core"
"goploy/model"
"goploy/route"
"goploy/ws"
"log"
"net/http"
"os"
"os/exec"
"strings"
"time"
_ "github.com/go-sql-driver/mysql"
)
func main() {
install()
godotenv.Load(core.GlobalPath + ".env")
println("应用启动")
println("http://localhost:" + os.Getenv("PORT"))
core.CreateValidator()
model.Init()
ws.Init()
route.Init()
err := http.ListenAndServe(":"+os.Getenv("PORT"), nil) //设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
func install() {
println("检测是否第一次安装")
_, err := os.Stat(".env")
if err == nil || os.IsExist(err) {
println("配置文件已存在,无需重新安装(如果需要重新安装,请先备份好数据库goploy,删除.env文件)")
return
}
inputReader := bufio.NewReader(os.Stdin)
println("安装指引(回车确认输入)")
println("请输入mysql的用户:")
mysqlUser, err := inputReader.ReadString('\n')
if err != nil {
println("There were errors reading, exiting program.")
return
}
println("请输入mysql的密码:")
mysqlPassword, err := inputReader.ReadString('\n')
if err != nil {
println("There were errors reading, exiting program.")
return
}
println("请输入mysql的主机(例如127.0.0.1,不带端口):")
mysqlHost, err := inputReader.ReadString('\n')
if err != nil {
println("There were errors reading, exiting program.")
return
}
println("请输入mysql的端口(例如3306):")
mysqlPort, err := inputReader.ReadString('\n')
if err != nil {
println("There were errors reading, exiting program.")
return
}
println("请输入日志目录的绝对路径(例如/tmp/):")
logPath, err := inputReader.ReadString('\n')
if err != nil {
println("There were errors reading, exiting program.")
return
}
println("请输入sshkey的绝对路径(例如/root/.ssh/id_rsa):")
sshFile, err := inputReader.ReadString('\n')
if err != nil {
println("There were errors reading, exiting program.")
return
}
println("请输入监听端口(例如80,打开网页时的端口):")
port, err := inputReader.ReadString('\n')
if err != nil {
println("There were errors reading, exiting program.")
return
}
println("开始安装数据库...")
mysqlUser = strings.TrimRight(mysqlUser, "\n")
mysqlPassword = strings.TrimRight(mysqlPassword, "\n")
mysqlHost = strings.TrimRight(mysqlHost, "\n")
mysqlPort = strings.TrimRight(mysqlPort, "\n")
cmd := exec.Command("mysql",
"-h"+mysqlHost,
"-P"+mysqlPort,
"-u"+mysqlUser,
"-p"+mysqlPassword,
"-e",
"source ./goploy.sql")
err = cmd.Run()
if err != nil {
println(err.Error())
return
}
println("安装数据库完成")
envContent := ""
envContent += "DB_TYPE=mysql\n"
envContent += fmt.Sprintf(
"DB_CONN=%s:%s@tcp(%s:%s)/goploy?charset=utf8\n",
mysqlUser,
mysqlPassword,
mysqlHost,
mysqlPort)
envContent += fmt.Sprintf("SIGN_KEY=%d\n", time.Now().Unix())
envContent += fmt.Sprintf("LOG_PATH=%s\n", strings.TrimRight(logPath, "\n"))
envContent += fmt.Sprintf("SSHKEY_PATH=%s\n", strings.TrimRight(sshFile, "\n"))
envContent += "ENV=production\n"
envContent += fmt.Sprintf("PORT=%s\n", strings.TrimRight(port, "\n"))
println("开始写入配置文件")
file, err := os.Create(".env")
if err != nil {
panic(err)
}
defer file.Close()
file.WriteString(envContent)
println("写入配置文件完成")
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。