您的位置 首页 > 数码极客

如何访问虚拟机的服务器、主机访问不了虚拟机的web服务器…

背景故事

小编近期在自学前端,涉及到数据库操作时候需要用到php,而小编的windows按照教程搭建好php环境后,依旧无法解析。买服务器的话,用处不大感觉有点浪费。所以通过虚拟机安装web服务器,再通过本机访问,就可以达到想要的效果了。然后在用xshell连接虚拟机,完全媲美买的服务器呀!这里与大家分享下过程。

通过本机访问虚拟机的Apache

虚拟机安装ubuntu

这就不用说了吧?装个和谐版的虚拟机,然后读入ubuntu镜像安装。小编用的是VMware14,ubuntu18。

通过xshell连接虚拟机

注意,这部分的设置,要先将虚拟机的网络设置为NAT模式。

但一般按照“经典”模式新建的虚拟机,都是NAT模式。

在虚拟机中打开terminal,安装net-tools工具:

sudo apt install net-tools

安装完后,输入

ifconfig

即可查看本机ip地址,用于xshell的主机地址。

这时候还不能连接xshell,还需安装openssh-server:

sudo apt install openssh-server

若使用root登录,需要进行以下步骤,否则,可直接跳过。建议使用非root登录。

输入:

sudo vim /etc/ssh/sshd_config

若提示vim未安装,可先安装vim后再试:

sudo apt install vim

将文件改为如图所示:

以上完成后,即可使用xshell进行登录:

  • 主机地址为之前看过的虚拟机的ip地址。

  • 用户名为root,或ubuntu的登录用户名;密码为ubuntu的登录密码。

若root用户一直提示连接不成功,实在不行可创建一个新用户。

连接成功

安装MySQL

连接xshell后,接下来就可以不用去管虚拟机了,直接在shell里操作即可。

在xshell中输入:

apt-get install mysql-server mysql-client

然后按照提示输入root用户的密码,之后会自动完成安装。

一般安装完会自动启动服务,所以不用去管。

如果你就是想手动重启,好吧,给你指令:

service mysql stop 停止

service mysql start 启动

service mysql restart 重启

ps -aux | grep mysqld 查看是否启动

netstat -tl | grep mysql查看是否监听

MySQL8版本之后,有很大变动,旧版本的一些指令失效了,这里放几个新的常见的指令:

修改root密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

打开远程访问

用root用户访问:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '密码' WITH GRANT OPTION;

这里允许root用户远程的时候,如果出现如下的错误,就先去把root用的host改成%,再运行上面那句话

非root用户,这里就要先去创建一个用户:

切换数据库

mysql>use mysql;

创建用户(user1:用户名;%:任意ip,也可以指定,root默认就是localhost;123456:登录密码)

mysql>CREATE USER 'user1'@'%' IDENTIFIED BY '123456';

授权,默认创建的用户权限是usage,就是无权限,只能登录而已,(all:所有权限,这里有select,update等等权限,可以去搜一 下;后面的*.*:指定数据库.指定表,这里是所有;to后面就是你刚才创建的用户)

mysql>grant all on *.* to 'user1'@'%';

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT all ON da TO 'username'@'host' WITH GRANT OPTION;

安装apache2

还是在xshell中输入:

sudo apt install apache2

现在,通过ubuntu的浏览器进入到http://localhost,应该看到apache2的测试页:

如果顺利的话会出现:It worke!

apache的默认文档根目录是在ubuntu上的/var/www目录 ,配置文件是/ etc/apache2。配置存储在的子目录在/etc/apache2目录。

安装

可以直接安装php7和apache的php7的模块,输入:

apt-get install libapache2-mod-

安装完需要重启

/etc restart

安装其他的一些模块

sudo apt-get install -cli -common libapache2-mod- -mysql -fpm -mbstring php-gettext php-gd php-curl

sudo a2enmod

安装 phpMyAdmin

phpMyAdmin是一个网页管理MySQL的工具,执行以下安装命令:

apt-get -y install phpmyadmin

跳出来的选择框中选择Apache2,安装过程中还会要求你输入数据库的密码。

然后在var/www/html/目录下创建phpmyadmin软连接,执行命令:

sudo ln -s /usr/share/phpmyadmin /var/www/html/

修改Apache配置文件包含phpmyadmin配置文件:

sudo ln -s /etc/phpmyadmin /etc/apache2/conf-available

sudo a2enconf

sudo service apache2 reload

然后通过浏览器访问localhost/phpmyadmin/进行验证:

(可选项)安装APCu 加速PHP

apt-get -y install php-apcu

本机访问虚拟机web服务器

好了,到这里为止,所有的设置都已经完成了,接下来就是用本机去访问服务器了。

由于防火墙关闭了http的80和数据库的3306端口,所以要打开:

sudo ufw allow 80

sudo ufw allow 3306

打开本机的浏览器(小编用的Chrome,也推荐使用Chrome或Firefox),输入虚拟机的ip地址,看看发生了什么:

本机成功访问了虚拟机的web服务器。

做几个网页试试

既然能访问了,那我们甩几个网页进去跑跑看咯!

进入到ubuntu的/var/www/html文件夹中,将做好的网页放入,并将主页名字改为index.html,这做前端的都知道原因啦,不知道的面壁去。

好了,这里又有问题了,怎么把文件放进去呢?

有两种方式:

1、通过xshell对应的xftp,如果通过此方法,需要改一下/www文件夹的权限:

sudo chmod +x /var/www/html

2、通过设置虚拟机的共享文件夹

反正方法告诉你了,怎么做搜去吧、熬夜伤身体,小编要早睡。哼哼~

【赠】php操作MySQL数据库

对于前端,难免要操作数据库,小编前几天试了一下用php操作数据库,以下是参考代码(不是小编的代码,想要小编代码的可以私信小编,发送“前端”获取整套代码):

1、接收用户输入的三个字段数据,并插入数据表中:

<?php

$dbhost = 'localhost:3306'; // mysql服务器主机地址

$dbuser = 'root'; // mysql用户名

$dbpass = '123456'; // mysql用户名密码

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if(! $conn )

{

die('连接失败: ' . mysqli_error($conn));

}

echo '连接成功<br />';

// 设置编码,防止中文乱码

mysqli_query($conn , "set names utf8");

$runoob_title = '学习 Python';

$runoob_author = 'RUNOOB.COM';

$submission_date = '2016-03-06';

$sql = "INSERT INTO runoob_tbl ".

"(runoob_title,runoob_author, submission_date) ".

"VALUES ".

"('$runoob_title','$runoob_author','$submission_date')";

mysqli_select_db( $conn, 'RUNOOB' );

$retval = mysqli_query( $conn, $sql );

if(! $retval )

{

die('无法插入数据: ' . mysqli_error($conn));

}

echo "数据插入成功\n"; mysqli_close($conn);

?>

2、显示数据表 runoob_tbl 的所有记录

<?php

$dbhost = 'localhost:3306'; // mysql服务器主机地址

$dbuser = 'root'; // mysql用户名

$dbpass = '123456'; // mysql用户名密码

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if(! $conn )

{

die('连接失败: ' . mysqli_error($conn));

}

// 设置编码,防止中文乱码

mysqli_query($conn , "set names utf8");

$sql = 'SELECT runoob_id, runoob_title, runoob_author, submission_date FROM runoob_tbl';

mysqli_select_db( $conn, 'RUNOOB' );

$retval = mysqli_query( $conn, $sql ); if(! $retval )

{

die('无法读取数据: ' . mysqli_error($conn));

}

echo '<h2>教程 mysqli_fetch_array 测试<h2>';

echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';

while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))

{

echo "<tr><td> {$row['runoob_id']}</td> ".

"<td>{$row['runoob_title']} </td> ".

"<td>{$row['runoob_author']} </td> ".

"<td>{$row['submission_date']} </td> ".

"</tr>";

}

echo '</table>'; mysqli_close($conn);

?>

结语

以上就是本次的全部内容,欢迎大家评论留言、互相学习,咋们下次见。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何访问虚拟机的服务器,主机访问不了虚拟机的web服务器,访问vmware虚拟机的服务器,局域网访问虚拟机服务器,主机访问虚拟机的web服务器”边界阅读