背景故事
小编近期在自学前端,涉及到数据库操作时候需要用到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);
?>
结语
以上就是本次的全部内容,欢迎大家评论留言、互相学习,咋们下次见。