华南农业大学Linux课程综合实验-超详细版(实现用Go、nodejs、python、php读取mysql数据)
文章目录
- 一、准备工作
- 1. 领取阿里云服务器
- 2. 服务器初始设置
- 2.1 设置实例密码
- 2.1.1 找不到控制台页面
- 2.2 远程登录云服务器
- 2.3 修改云服务器密码
- 2.4 实现自动远程连接
- 二、部署服务器
- 1. 安装mariadb(数据库)
- 1.1 解决数据库乱码问题
- 1.2 数据库建表
- 2. 安装Nginx
- 3. 开启端口
- 3.1 开启阿里云安全组端口
- 3.2 开启服务器防火墙端口
- 三、四种动态开发语言读取mysql数据
- 1. Go
- 2. nodejs
- 2.1 安装Nodejs
- 2.2 实现用nodejs读取mysql并显示在网页上
- 2.3 nginx配置
- 3.python
- 3.1 在pycharm中建flask项目
- 3.2 在项目中建立与云服务器连接
- 3.3 实现用python读取mysql并显示在网页上
- 4.php
- 4.1 php的安装配置
- 4.2 配置Nginx,测试访问PHP
- 4.4 实现用PHP读取mysql并显示在网页上
一、准备工作
1. 领取阿里云服务器
免费使用一个月ECS共享性n4
购买页面中主要注意的是操作系统,选择自己的操作系统即可。
如何查看Centos系统版本命令
[root@localhost ~]# cat /etc/redhat-release
2. 服务器初始设置
2.1 设置实例密码
如果找不到这个页面,后面的找不到控制台页面
有说明
2.1.1 找不到控制台页面
如果你现在在这个页面中:阿里云控制台首页
往下滑找到云产品推荐,点击云服务器ESC
进入新页面后,点击管理控制台即可找到云服务器。
2.2 远程登录云服务器
在本地终端运行ssh userName@hostIP远程登录云服务器。userName为云服务器用户名,默认是root
,@符号后接云服务器的公网IP
地址。(是公网IP,不是内网IP。)
[root@localhost ~]# ssh root@xxx.xx.xxx.xx
2.3 修改云服务器密码
密码太难记?登录完云服务器后可执行passwd命令修改密码
[root@root ~]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
2.4 实现自动远程连接
若使用的终端应用是termius
,为了不用每次都要手动远程连接和方便传文件,我们可以创建一个newHost
填上相应信息
往下滑,找到SSH Agent Forwarding
选择你要远程连接的Host,之后只需虚拟机上登录Host的用户账号,终端就可以直接连接newHost以实现远程连接了。
二、部署服务器
1. 安装mariadb(数据库)
由于CentOS7不支持MySQL了,而内部集成了mariadb。安装MySQL的话会和MariaDB的文件冲突,所以直接安装mariadb即可。如果安装过mysql的要删干净才可以下载安装mariadb,可通过这个链接查看是否安装本地mysql
-安装mariadb-server
[root@root ~]# yum install -y mariadb-server
若安装中出现了获取 GPG 密钥失败,需要重新获取
GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/
rpm-gpg/RPM-GPG-KEY-mysql-2022"
运行以下命令
[root@root ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
再重新安装mariadb-server
[root@root ~]# yum install -y mariadb-server
启动服务
[root@root ~]# systemctl start mariadb.service
查看mariadb运行状态
[root@root ~]# systemctl status mariadb.service
添加到开机启动
[root@root ~]# systemctl enable mariadb.service
安全设置,修改数据库管理员密码
[root@root ~]# mysql_secure_installation
//遇到 Enter current password for root (enter for none): 直接回车。//设置如下
Set root password? [Y/n] Y
New password:
Re-enter new password: Remove anonymous users? [Y/n] YDisallow root login remotely? [Y/n] nRemove test database and access to it? [Y/n] YReload privilege tables now? [Y/n] Y
1.1 解决数据库乱码问题
配置MariaDB字符编码。
[root@root ~]# vi /etc/my.cnf#添加以下内容
[mysqld]
character-set-server=utf8[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysql.server]
default-character-set =utf8
重启mariadb
[root@root ~]# systemctl restart mariadb
1.2 数据库建表
[root@root ~]# mysql -u root -p
Enter password: MariaDB [(none)]> CREATE DATABASE test;
MariaDB [(none)]> use testMariaDB [test]> CREATE TABLE students(stuId VARCHAR(12) NOT NULL,stuName VARCHAR(50) NOT NULL,PRIMARY KEY (stuId));
可以用show tables;
命令查看创建表格是否成功。
MariaDB [test]> show tables;
插入数据到students表中
MariaDB [test]> INSERT INTO students VALUES("yourStuID","yourName");
查看students表是否正确插入数据
MariaDB [test]> SELECT * FROM students;
ctrl+c退出MariaDB。
2. 安装Nginx
安装nginx
[root@root ~]# yum list nginx*
[root@root ~]# yum install -y nginx.x86_64
配置nginx
[root@root ~]# vim /etc/nginx/nginx.conf#在http里的server里添加location ~ \.php$ {root /usr/share/nginx/html;fastcgi_pass 127.0.0.1:9000; #php-fpm默认的端口是9000fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}location ~ \.go$ {proxy_pass http://127.0.0.1:8000;}location ~ \.js$ {proxy_pass http://127.0.0.1:8001;}location index.py {proxy_pass http://127.0.0.1:8800/;}
运行nginx,并查看状态
[root@root ~]# service nginx restart
[root@root ~]# systemctl status nginx
3. 开启端口
端口 | 描述 |
---|---|
80 | htpp、nginx |
8000 | 测试go端口 |
8001 | 测试nodejs端口 |
8800 | 测试python端口 |
9000 | php-fpm,php |
3.1 开启阿里云安全组端口
进去后表格右上角,点击添加安全组规则,把5个端口都给加上。其中一个示例:
3.2 开启服务器防火墙端口
[root@root ~]# service firewalld start
[root@root ~]# systemctl status firewalld #查看开启防火墙是否成功
[root@root ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@root ~]# firewall-cmd --zone=public --add-port=8000/tcp --permanent
[root@root ~]# firewall-cmd --zone=public --add-port=8001/tcp --permanent
[root@root ~]# firewall-cmd --zone=public --add-port=8800/tcp --permanent
[root@root ~]# firewall-cmd --zone=public --add-port=9000/tcp --permanent
[root@root ~]# service firewalld restart #重启防火墙,不然不生效[root@root ~]# firewall-cmd --list-ports #查看开放的端口
80/tcp 8000/tcp 8001/tcp 8800/tcp 9000/tcp
三、四种动态开发语言读取mysql数据
1. Go
这个博客写的很详细:Linux实验:Golang+MySQL部署Web环境
只要将博客里的9090端口改为8000就可以了。
2. nodejs
2.1 安装Nodejs
[root@root ~]# sudo yum install epel-release
[root@root ~]# sudo yum install nodejs
[root@root ~]# node --version
#安装npm
[root@root ~]# cd /root/myLinuxTest/nodejs
[root@root nodejs]# sudo yum install npm --enablerepo=epel
[root@root nodejs]# sudo npm install -g express
[root@root nodejs]# sudo npm install -g express-generator
[root@root nodejs]# npm install mysql
2.2 实现用nodejs读取mysql并显示在网页上
[root@root ~]# vim /root/myLinuxTest/nodejs/index.js
var http=require('http');
var url=require('url');
var mysql=require('mysql');//创建连接
var connection = mysql.createConnection({host : 'localhost',user : 'root',password : 'xxxxxx',port : '3306',database : 'test'
});var sql = 'select * from student';
server = http.createServer(function(request,response) {response.writeHead(200,{'Content-Type': 'text/html'});connection.query(sql,function(err,result){if(err){console.log('[select error] -',err.message);return;}response.write('<!DOCTYPE html>'+'<html lang="en">'+'<head>'+'<meta charset="utf-8"/>'+'</head>'); response.write("这是Nodejs页面");response.write("<table border='1'><tr>");response.write("<th>学号</th>");response.write("<th>姓名</th></tr>");result.forEach(r =>{response.write("<tr>");response.write("<td>"+r.stuId+"</td>");response.write("<td>"+r.stuName+"</td>");response.write("</tr>");})response.end();});
});
server.listen(8001);
2.3 nginx配置
[root@wu2 ~]# vim /etc/nginx/nginx.conf # 增加下方配置。location ~/index.js$ {proxy_pass http://127.0.0.1:8001;}[root@root ~]# service nginx restart
此时,可以用 http://ip/index.js 访问。
使nodejs项目在服务器上后台运行
[root@root ~]# nohup node /root/myLinuxTest/nodejs/index.js &
3.python
3.1 在pycharm中建flask项目
3.2 在项目中建立与云服务器连接
随便定义一个名字
ok~然后
这样就设置好啦,这里能远程看到linux
3.3 实现用python读取mysql并显示在网页上
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from flask import Flask
app = Flask(__name__)
import mysql.connector@app.route('/')
def hello_world(): # put application's code heremydb = mysql.connector.connect(host="localhost",user="用户名",passwd="密码",database="数据库名")mycursor = mydb.cursor()result = mycursor.execute("select * from 表名")str = "<h4>这是python页面<h4><table border='1'><tr><th>学号</th><th>姓名</th></tr>"for x in mycursor:str += "<tr><td>" + x[0] + "</td><td>" + x[1] + "</td></tr>"str += "</table>"return strif __name__ == '__main__':app.run(host="0.0.0.0", port=8800, debug=True)
这里将项目文件上传到linux上
访问http://ip:8800/即可
使python项目在服务器上后台运行
[root@root python]# python -V
Python 2.7.5
[root@root python]# nohup python2.7 -u /root/python/app.py &
4.php
4.1 php的安装配置
[root@root ~]# mkdir /opt/php
[root@root ~]# cd /opt/php
[root@root php]# wget https://www.php.net/distributions/php-7.4.5.tar.gz
[root@root php]# yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libsqlite3x-devel oniguruma-devel
[root@root php]# tar -zxvf php-7.4.5.tar.gz
[root@root php]# cd php-7.4.5
[root@root php-7.4.5]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --enable-gd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --without-pear --disable-phar --enable-sockets --with-zlib --with-xmlrpc --enable-fpm --enable-xml --enable-sockets --with-zlib --with-iconv --enable-soap --enable-pcntl --enable-cli --with-curl
[root@root php-7.4.5]# make
[root@root php-7.4.5]# make install
[root@root php-7.4.5]# cp php.ini-production /usr/local/php/php.ini
[root@root php-7.4.5]# vim /usr/local/php/php.ini
display_errors = On # Off改为On。设置让PHP错误信息打印在页面上[root@root php-7.4.5]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@root php-7.4.5]# chmod +x /etc/init.d/php-fpm
[root@root php-7.4.5]# cd /usr/local/php/etc
[root@root etc]# cp php-fpm.conf.default php-fpm.conf
[root@root etc]# vi php-fpm.conf去掉 ";pid = run/php-fpm.pid" 前面的分号[root@root etc]# cd php-fpm.d
[root@root php-fpm.d]# cp www.conf.default www.conf
[root@root php-fpm.d]# vi www.conf # 修改user和group为php。
user = php
group = php[root@root php-fpm.d]# groupadd php
[root@root php-fpm.d]# useradd -r -g php php
[root@root php-fpm.d]# chkconfig php-fpm on # 设置开启启动
[root@root php-fpm.d]# cd ~
[root@root ~]# /etc/init.d/php-fpm star
4.2 配置Nginx,测试访问PHP
[root@root ~]# vim /usr/share/nginx/html/index.php # 写入如下内容
<?phpphpinfo();
?>[root@root ~]# vim /etc/nginx/nginx.conf #添加以下内容location / {root /usr/share/nginx/html;index index.php;}location ~ \.php$ {#root html;root /usr/share/nginx/html;fastcgi_pass 127.0.0.1:9000; #php-fpm默认的端口是9000fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}[root@wu2 ~]# service nginx restart
配置后,使用ip
、云服务器公网ip/index.php
可访问以下页面
ip/index.html
可以访问到下方页面。
4.4 实现用PHP读取mysql并显示在网页上
[root@root ~]# vim /usr/share/nginx/html/index.php # 删除原先内容,改为以下内容。
<?php
$mysql_server_name = '127.0.0.1'; // ip
$mysql_username = 'root'; // username
$mysql_password = '66666'; // 设置你的数据库密码
$mysql_database = 'test'; // 设置你的数据库名$conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); //连接数据库
if ($conn -> connect_errno) {printf("Connect failed: %s\n", $conn->connect_error);exit();
}
//查询
$sql = "select * from student";
$query = $conn->query($sql);echo "这是PHP页面";
//构造表头
echo "<table border='1'><tr>";
echo "<th>学号</th>";
echo "<th>姓名</th>";
echo "</tr>";
//遍历输出
while($row = $query->fetch_array()){echo "<tr>";echo "<td>".$row['stuId']."</td>"; //stuId和stuName要和你表里的字段名一致echo "<td>".$row['stuName']."</td>"; echo "</tr>";
}
//释放结果集+关闭MySQL连接
$query -> free_result();
$conn -> close();
?>
保存后访问http://ip/index.php,
使php项目在服务器上后台运行
[root@root ~]# nohup php /usr/share/nginx/html/index.php &
华南农业大学Linux课程综合实验-超详细版(实现用Go、nodejs、python、php读取mysql数据)相关推荐
- 华南农业大学Linux课程实验二
# 利⽤SSH客户端登录 root 账号,查看 /tmp ⽬录下是否存在⼦⽬录 myshare,如果没有则建⽴该⽬录: [root@wu1 ~]# mkdir /tmp/myshare# 在 mysh ...
- VMware12 下载安装虚拟机操作步骤详解(Linux操作系统CentOS 7)超详细版
目录 一,下载VMware安装包和 CentOS 7 镜像文件 二,安装VMware 三,下载 CentOS 7 镜像文件 四,开始用VMware创建一个新的虚拟机 五,新的虚拟机设置 一,下载VMw ...
- 理论+实验:MHA高可用配置及故障切换(实验超详细版)
目录 一.案例概述 1.1 案例概述 1.2 案例前置知识点-1 1.3 案例前置知识点-2 1.4 案例环境 二.案例实施 2.1 实验思路 2.2 案例环境 2.3 案例环境案例需求 2.4 案例 ...
- 【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤
[51单片机]矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤 一.环境 二.硬件部分 1. Proteus新建工程 2. 添加元件 3.连接线路 4.硬件效果 三.软件部分 1 ...
- 大数据课程综合实验案例:网站用户行为分析
大数据课程综合实验案例 1 案例简介 1.1 案例目的 1.2 适用对象 1.3 时间安排 1.4 预备知识 1.5 硬件要求 1.6 软件工具 1.7 数据集 1.8 案例任务 1.9 实验步骤 2 ...
- Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版
Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版 一.资源 Linux下的Redis的下载地址 二.安装与测试 上传至自己的Linux平台 解压安装包 tar ...
- Linux 学习笔记之超详细基础linux命令 Part 3
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 2----------------- ...
- centos7修改ip地址命令_每天一条Linux命令(12) hostnam (超详细)
在Linux系统中,命令 hostname 用于显示或者设置系统主机名称.许多网络程序均用主机名来标识主机,若没有设置好主机名,则可能会导致网络服务不正常. 语法: hostname [选择] 参数: ...
- 华南农业大学c语言上机实验答案,华南农业大学C语言上机实验答案.doc
华南农业大学C语言上机实验答案 格式:一题号一答案,相对应 1001 #include "stdio.h" int main() { int a,b; scanf("%d ...
最新文章
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)...
- 【交通行业】轨迹相似性度量介绍
- Mobile DevOps 之 Proxmox 实现节流提效
- Android 3D开发,OpenGL ES 的使用(一)
- VHDL电子密码锁设计
- MYSQL 获取每个汉字的拼音首字母
- NOIP201202寻宝
- springboot 整合 mongodb实现 批量更新数据
- elasticsearch5.5.2离线安装x-pack
- 直接上手!不容错过的 Visual Studio Code 十大扩展组件
- 爬虫:python爬虫学习笔记之Beautifulsoup正则表达式
- matlab2019使用仿真,simulink视频教程仿真建模matlab2019高级
- mac使用Java命令运行Java程序
- 易接SDK流程记录以及AndroidManifest解析(无干货)
- 李嘉诚激励员工的一首诗
- PostgreSQL中的索引—7(GIN)
- 详细介绍文本检索基准BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models
- 30%自媒体从业者才知道的爆款标题的专用模板,封面图的文案同样适用。
- linux镜像包含redis吗,Linux虚拟机镜像\redis安装
- 简单的自动化测试模型(python+selenium)
热门文章
- Edge浏览器系列:win10如何关闭Alt+tab只切换Edge浏览器的网页
- iphone资料 各种网址搜集
- 我这里有语法糖噢。叔叔,我们不约
- windos读写ext3工具_ext2fsd|Ext2Fsd(读取ext2/ext3/ex4工具)下载 v0.53 支持win7/win8 - 121下载站...
- HAWQ技术解析(十七) —— 最佳实践
- mac os x 下五款播放器评测
- jquery异形轮播
- 坦克射击小游戏(后续将会升级功能)
- 微信小程序中一行2个图片排版源码详解
- 深圳罗湖区特殊住房申请学位需要哪些材料