08.13 虛擬機安裝web服務器,並通過本機訪問「很全」

背景故事

小編近期在自學前端,涉及到數據庫操作時候需要用到php,而小編的windows按照教程搭建好php環境後,依舊無法解析。買服務器的話,用處不大感覺有點浪費。所以通過虛擬機安裝web服務器,再通過本機訪問,就可以達到想要的效果了。然後在用xshell連接虛擬機,完全媲美買的服務器呀!這裡與大家分享下過程。

虛擬機安裝web服務器,並通過本機訪問「很全」

通過本機訪問虛擬機的Apache

虛擬機安裝ubuntu

這就不用說了吧?裝個和諧版的虛擬機,然後讀入ubuntu鏡像安裝。小編用的是VMware14,ubuntu18。

通過xshell連接虛擬機

注意,這部分的設置,要先將虛擬機的網絡設置為NAT模式。

但一般按照“經典”模式新建的虛擬機,都是NAT模式。

虛擬機安裝web服務器,並通過本機訪問「很全」

在虛擬機中打開terminal,安裝net-tools工具:

sudo apt install net-tools

安裝完後,輸入

ifconfig

即可查看本機ip地址,用於xshell的主機地址。

虛擬機安裝web服務器,並通過本機訪問「很全」

這時候還不能連接xshell,還需安裝openssh-server:

sudo apt install openssh-server

若使用root登錄,需要進行以下步驟,否則,可直接跳過。建議使用非root登錄。

輸入:

sudo vim /etc/ssh/sshd_config

若提示vim未安裝,可先安裝vim後再試:

sudo apt install vim

將文件改為如圖所示:

虛擬機安裝web服務器,並通過本機訪問「很全」

以上完成後,即可使用xshell進行登錄:

  • 主機地址為之前看過的虛擬機的ip地址。
虛擬機安裝web服務器,並通過本機訪問「很全」

  • 用戶名為root,或ubuntu的登錄用戶名;密碼為ubuntu的登錄密碼。
虛擬機安裝web服務器,並通過本機訪問「很全」

若root用戶一直提示連接不成功,實在不行可創建一個新用戶。

虛擬機安裝web服務器,並通過本機訪問「很全」

連接成功

安裝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改成%,再運行上面那句話

虛擬機安裝web服務器,並通過本機訪問「很全」

非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 databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

安裝apache2

還是在xshell中輸入:

sudo apt install apache2

現在,通過ubuntu的瀏覽器進入到http://localhost,應該看到apache2的測試頁:

如果順利的話會出現:It worke!

虛擬機安裝web服務器,並通過本機訪問「很全」

apache的默認文檔根目錄是在ubuntu上的/var/www目錄 ,配置文件是/ etc/apache2/apache2.conf。配置存儲在的子目錄在/etc/apache2目錄。

安裝php7.0

可以直接安裝php7和apache的php7的模塊,輸入:

apt-get install php7.0 libapache2-mod-php7.0

安裝完需要重啟

/etc/init.d/apache2 restart

安裝其他的一些模塊

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

sudo a2enmod php7.0

安裝 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/apache.conf /etc/apache2/conf-available/phpmyadmin.conf

sudo a2enconf phpmyadmin.conf

sudo service apache2 reload

然後通過瀏覽器訪問localhost/phpmyadmin/進行驗證:

虛擬機安裝web服務器,並通過本機訪問「很全」

(可選項)安裝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服務器,並通過本機訪問「很全」

本機成功訪問了虛擬機的web服務器。

做幾個網頁試試

既然能訪問了,那我們甩幾個網頁進去跑跑看咯!

進入到ubuntu的/var/www/html文件夾中,將做好的網頁放入,並將主頁名字改為index.html,這做前端的都知道原因啦,不知道的面壁去。

好了,這裡又有問題了,怎麼把文件放進去呢?

有兩種方式:

1、通過xshell對應的xftp,如果通過此方法,需要改一下/www文件夾的權限:

sudo chmod +x /var/www/html

2、通過設置虛擬機的共享文件夾

反正方法告訴你了,怎麼做搜去吧、熬夜傷身體,小編要早睡。哼哼~

虛擬機安裝web服務器,並通過本機訪問「很全」

【贈】php操作MySQL數據庫

對於前端,難免要操作數據庫,小編前幾天試了一下用php操作數據庫,以下是參考代碼(不是小編的代碼,想要小編代碼的可以私信小編,發送“前端”獲取整套代碼):

1、接收用戶輸入的三個字段數據,並插入數據表中:

$dbhost = 'localhost:3306'; // mysql服務器主機地址

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

$dbpass = '123456'; // mysql用戶名密碼

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

if(! $conn )

{

die('連接失敗: ' . mysqli_error($conn));

}

echo '連接成功
';

// 設置編碼,防止中文亂碼

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 的所有記錄

$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 '

教程 mysqli_fetch_array 測試

';

echo '

<table>教程 ID標題作者提交日期';

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

{

echo "

{$row['runoob_id']} ".{$row['runoob_title']} ".{$row['runoob_author']} ".{$row['submission_date']} ".";

}

echo '

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

?>

結語

以上就是本次的全部內容,歡迎大家評論留言、互相學習,咋們下次見。


分享到:


相關文章: