在ubuntu上搭建apache服務器的一些坑

前言

最近在阿里雲買了一個服務器用來測試個人博客網站,2g內存,40g硬盤,第一年是89塊錢。想法是在阿里雲上搭建Lamp架構的服務器。系統是ubuntu18,服務器apache2,數據庫mysql,服務器腳本語言php。
這個過程對於一個小白來說是萬分艱辛,花了3天配置服務器環境,各種坑,痛苦萬分。

ubuntu

這個系統是在買服務器時選的,阿里給你裝好了。拿到服務器密碼後,因爲我的筆記本是win10系統,所以按win+r輸入cmd,在cmd中利用ssh遠程登錄服務器。
格式是:ssh 用戶名@服務器公網ip地址
回車輸入密碼,回車登陸,密碼自動隱藏。

這裏附上ubuntu上常用命令

  • / 返回根目錄
  • cd . 當前目錄
  • cd … :返回上級目錄
  • cd /。。。/。。。 到達所處絕對路徑
  • ls 返回當前目錄下文件
  • ls -a 返回當前目錄下包括隱藏文件的所有文件
  • ls -l 返回所有文件的具體信息
  • find / -name 尋找名字和尖括號裏filename一樣的文件的絕對路徑(輸入命令不要加尖括號)
  • df -h 返回系統各盤所用空間,剩餘空間
  • rmdir 就是remove刪除文件夾
  • mkdir 就是創造一個文件夾
  • rm 刪除文件
  • rm -rf 遞歸刪除所有
  • mv 文件名 新名稱 就是在當前目錄下改名
  • mv 路經/文件 /路經/文件 移動相對路經下的文件到絕對路經下
  • tar –zcvf benet.tar.gz 把目錄打包並壓縮
  • tar –zxvf benet.tar.gz 壓縮包的文件解壓恢復
  • dpkg -l 獲得安裝的軟件的信息

在第一次進入ubuntu時,需要一些配置操作,更新啥的,可以自行百度,主要是用apt-get下載各類包和軟件。

apache2

服務器直接使用apt-get install apache2,接着會打印出下載所需的一些信息,按回車就行。
#apache 的常用目錄
#默認文檔根目錄是在 ubuntu 上的 /var/www 目錄
#配置文件是 / etc/apache2/apache2.conf
#配置存儲在的子目錄在/etc/apache2 目錄
#重啓,執行:

sudo /etc/init.d/apache2 restart

#開啓,執行:

sudo /etc/init.d/apache2 start

#關閉,執行:

sudo /etc/init.d/apache2 stop

mysql

apt下載最新mysql,下載完畢命令登陸,首次登陸可以不要密碼
sudo apt-get install mysql-server
mysql -u root -p

這邊有一個坑,就是明明修改了數據庫密碼就是能夠無密碼登陸。
這裏附上解決的鏈接:
mysql無密碼登陸問題解決

php

服務器腳本語言我選擇的php7.2,這是我格外下載的,在這裏提一下,php5和php7有一個不同點就是關於數據庫的連接,php5用的是mysql,但是php7淘汰它,採用,mysqli,或者pdo_mysql。所以安裝了php之後我才發現忘記裝數據庫拓展了,心累。
在這種情況下,如何安裝php拓展,要看php的安裝方式,如果你是用源碼解壓編譯安裝的就用源碼的方式拓展,如果是用apt-get安裝的就用apt-get直接安裝拓展。
在這裏給一些解決方案:
apt安裝的:
apt-get1
apt-get2
源碼安裝的:
源碼1
源碼2
這些方法都可以試試,如果不行,自行百度吧。

你可以通過命令php -m來查看php安裝的模塊。這裏注意,你ubuntu裏面可能安裝了不止一個php版本,像我就有php5,php7,php7.2三個版本,你可以用php7.2 -m查看對應版本的modules。
當你看到了mysqli,或者pdo_mysql就成功了。你的php代碼就可以連接數據庫並操作了。
在這裏插入圖片描述

apache2和php版本的坑

apache2服務器開啓後,在/etc/apache2目錄下可能有一個apache2.conf文件,這就是新版的apache2配置文件,它是一個總的配置文件,裏面include了其他的子配置文件。默認的apache2的服務器文件夾是,var/www/html/目錄,在該目錄下面的index.html或者index.php作爲網站的根目錄,就是直接輸入ip地址進入的第一個文件,也就是網站首頁。
默認情況下,在apt-get install 下載apache2時,自動下載了php7.0這個版本,坑啊,apache2在面對客戶端ajax請求時會編譯請求的php文件,再將結果返回給客戶端,可是我寫好的php文件是用來操作數據庫並提取信息的,無論怎麼請求就是報錯,說不存在pdo_mysql這個拓展,可是我明明已經裝了拓展了,在服務器上面測試時明明就通過了,最終我才發現,客戶端請求php文件時,apache2居然用了自帶的php7.0編譯,而不是我這個配置好了的php7.2,哭了。最後我給php7.0也安裝了拓展,問題解決。

ajax跨域請求php文件報錯,core同源錯誤。

大致錯誤原因是一個core同源規則,在不同的服務器或者端口之間請求資源必須有一個請求頭,類似於:Access-Control-Allow-Origin。

php如何解決,如下:
header(“Access-Control-Allow-Origin: http://a.com”); // 允許a.com發起的跨域請求
//如果需要設置允許所有域名發起的跨域請求,可以使用通配符 *
header(“Access-Control-Allow-Origin: *”); // 允許任意域名發起的跨域請求
如果設置了header頭,依然沒用,我建議重新安裝php

路漫漫其修遠兮,坑要一個一個踩,代碼要一行一行敲。

發佈了24 篇原創文章 · 獲贊 120 · 訪問量 7467
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章