本指南将帮助你在无需配置 Nginx 和 Apache 等服务端的情况下速通 Linux 综合实验 90 +。
系统版本:Ubuntu 20.04
如果你使用的是 CentOS,在安装软件的环节请使用 yum,其它不变。
建议以 root 用户操作
安全组端口列表
请在服务器的安全组或防火墙中开放以下端口:
8080 用于演示 Go 版本
8081 用于演示 PHP 版本
8082 用于演示 Python 版本
8083 用于演示 Nodejs 版本
当然如果使用 Nginx 等服务端通过正则匹配 uri 进行内网代理转发,便无需向公网开放这些端口,但本指南力求简单为主,便不介绍这种方式。
如果你需要在本地使用 Navicat 等图形化数据库管理工具,还需额外开放 3306 端口。在 Navicat 连接时主机填写服务器的公网 IP 即可。
MySQL 安装与配置
安装 MySQL
1
apt-get install mysql-server
启动 MySQL
1
service mysql start
进入 MySQL 控制台
1
mysql -uroot
创建数据库
1 2
create databse linux; use linux;
创建数据表
1 2 3 4 5 6 7 8 9
DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, `student_number` bigint NULL DEFAULT NULL, `user_id` int NOT NULL AUTO_INCREMENT, PRIMARY KEY (`user_id`) USING BTREE ) AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; # 添加姓名、学号、id INSERT INTO `users` VALUES ("姓名", 12345, 1);
添加 linux 用户并赋予权限
1 2 3 4
create user "linux"@"%"; ALTER USER 'linux'@'%' IDENTIFIED BY 'linux'; grant select,insert,update on linux.* to "linux"@"%"; flush privileges;
添加 nodejs 用户并赋予权限(此处是因为 nodejs 不支持新版 MySQL 加密方式,所以需要单独为它开一个用户,也可以只开这一种用户,但是本指南在实践时采用的是新开一个用户的方式)
1 2 3 4
create user "nodejs"@"%"; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword'; grant select,insert,update on linux.* to "nodejs"@"%"; flush privileges;
type User struct { StudentNumber int`db:"student_number" json:"student_number"` Name string`db:"name" json:"name"` UserId int`db:"user_id" json:"user_id"` }
funcSay(w http.ResponseWriter, r *http.Request) { var users []User sql := "select * from users where user_id=1 " err := database.Select(&users, sql) if err != nil { fmt.Println("exec failed, ", err) return } res, _ := json.Marshal(users) _, err = w.Write(res) if err != nil { log.Fatalln(err) } }