背景故事
小編近期在自學前端,涉及到數據庫操作時候需要用到php,而小編的windows按照教程搭建好php環境後,依舊無法解析。買服務器的話,用處不大感覺有點浪費。所以通過虛擬機安裝web服務器,再通過本機訪問,就可以達到想要的效果了。然後在用xshell連接虛擬機,完全媲美買的服務器呀!這裡與大家分享下過程。
虛擬機安裝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 databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
安裝apache2
還是在xshell中輸入:
sudo apt install apache2
現在,通過ubuntu的瀏覽器進入到http://localhost,應該看到apache2的測試頁:
如果順利的話會出現:It worke!
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/進行驗證:
(可選項)安裝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、接收用戶輸入的三個字段數據,並插入數據表中:
$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>while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
echo "
}
echo '
/<table>'; mysqli_close($conn);?>
結語
以上就是本次的全部內容,歡迎大家評論留言、互相學習,咋們下次見。
閱讀更多 小鋒學長 的文章