Tshare校園資源分享平臺(php網站開發一之環境搭建)

寫在前面
本學期軟件工程課程,老師要求我們寫一個大作業,我們小組選擇做一個資源分享的網站平臺。現在工作已經結束,我打算從頭開始回顧,並將其過程寫爲多篇連載的博客。

工具選擇
開發最重要的準備工作就是環境搭建,我們小組本次選擇使用apache+mysql+php開發這個網站,並且將網站部署在Linux機上。所以我們需要準備的東西有:VMware虛擬機、Centos7鏡像文件。安裝一個centos虛擬機後在虛擬機上安裝apache、mysql和php環境。(ps:親身實踐,感覺VMware比virtual box好用

安裝過程
現在我的pc上已經安裝好了一個centos7的虛擬機(具體過程可以搜索教程)
clipboard.png

現在打開虛擬機,我的虛擬機上只添加了一塊硬盤(20G,建議大一點,後來我安裝mysql時發現硬盤空間不夠用又加了一塊20G硬盤,具體什麼東西佔用了我的空間我還沒找到),分爲兩個分區(swap交換分區,大小4G,剩下的空間全部設爲根分區,其中根分區掛載到了根目錄下)。首先在根目錄下創建一個web目錄,作爲apache、mysql、php源代碼存放路徑,因爲我將要使用源代碼方式安裝這三個軟件。

apache的安裝

使用源代碼方式安裝的不好之處在於,需要自己解決軟件安裝過程中的全部依賴,而且下載源代碼包解壓縮後需要經過編譯才能安裝,好處在於可以自己進行一些配置。我之所以選擇源代碼安裝方式是因爲後面涉及到php的擴展時需要源代碼。

那麼安裝apache之前我們需要獲取apache和其依賴軟件的源代碼:

  1. apache2.4: wget http://mirrors.hust.edu.cn/ap...
  2. apr-1.6.5.tar.gz:http://www.apache.org/dist/apr/
  3. apr-util-1.6.1.tar.gz:http://www.apache.org/dist/apr/
  4. pcre-8.42.tar.gz:wget https://ftp.pcre.org/pub/pcre...

第一個和第四個在虛擬機終端中直接輸入該命令即可下載,第二個和第三個需要到這個網站中去下載。不管怎麼樣,將下載得到四個壓縮包都放入根目錄下的web目錄中,然後準備一一安裝。

  • apr依賴的安裝:進入/web目錄
tar -zxvf apr-1.46.tar.gz
cd apr-1.46
./configure --prefix=/usr/local/apr     #生成makefile編譯文件
make            #編譯源代碼
make install    #安裝

在生成編譯文件或編譯源代碼的時候,可能會報錯,告訴我們gcc沒有安裝,此時安裝一下gcc即可,雖然我們不用yum安裝apache,但是可以用它來安裝其他依賴文件,這樣對我們的apache源碼沒有什麼影響。

yum install gcc*        #安裝gcc
  • apr-util依賴的安裝:回到/web目錄
tar -zxvf apr-util-1.5.1.tar.gz
cd apr-util-1.5.1
./configure --with-apr=/usr/local/apr
make
make install

編譯過程中可能會出現這個錯誤:xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
只需要安裝expat-devel就行了

yum install expat-devel
  • prec依賴的安裝
tar -zxvf pcre-8.32.tar.gz
cd  pcre-8.32
./configure --prefix=/usr/local/pcre(此處出現configure: error: You need a C++ compiler for C++ support
sudo yum install gcc-c++)     #由於之前安裝過gcc,所以不會出現這個錯誤
make
make install
  • apache安裝
tar -zxvf httpd-2.4.37.tar.gz
cd httpd-2.4.37
./configure --prefix=/usr/local/apache24 --enable-so --with-apr=/usr/local/apr/ --with-apr-til=/usr/local/apr/ --with-pcre=/usr/local/pcre/
make
make install

如果進行make編譯的時候,出現這個錯誤:/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCode',是由於缺少xml的相關支持,使用yum安裝對應的依賴即可

①安裝libxml2-devel
[root@test_01 ~]# yum install -y libxml2-devel
②刪除apr-util目錄並且重新編譯安裝(將/web目錄下的apr-util刪除,重新解壓縮編譯)
③重新編譯安裝httpd,成功解決。
apache已經安裝完成(如果編譯安裝過程出現其他錯誤,我也不知道該怎麼辦,因爲我沒有遇到),那麼接下在就是開啓apache服務,配置apache的配置文件。
  • 開啓apache服務:apache的服務程序是/usr/local/apache24/bin的httpd,雙擊httpd即可開啓apache服務,當然使用圖形界面並不是Linux系統的風格,甚至當租用服務器時,根本就沒有圖形界面。那麼如何通過終端操作開啓apache服務呢?
[root@bogon ~]cd /usr/local/apache24/bin
[root@bogon bin] ./apachectl start        #開啓apache服務
[root@bogon bin] lsof -i:80        #查詢80端口是否被httpd服務佔用
[root@bogon bin] ./apachectl stop        #關閉apache服務

這樣的話,每一次啓動服務都必須執行復雜的命令,有一種方法可以將apache服務加入系統服務之後使用service httpd start即可開啓服務,這種方式這裏不做介紹。
接下來在瀏覽器中訪問apache服務,打開firefox在地址欄輸入:localhost,如果可以看到It works即表示服務啓動成功。

  • apache的配置文件

apache配置文件的路徑:/usr/local/apache24/conf/httpd.conf
需要配置apache的web站點路徑、apache的端口號(默認爲80端口,可以不用改)

#配置web站點

mysql的安裝

因爲mysql被收購了,所以centos7中不在集成mysql了,而是集成mariadb,所以需要先卸載mariadb

  • 卸載mariadb
#列出安裝的mysql。
rpm -qa | grep mariadb   ###顯示mariadb-libs-5.5.56-2.el7.x86_64

#卸載
rpm -e mariadb-libs-5.5.56-2.el7.x86_64

####會報如下錯誤
error: Failed dependencies:
    libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
    libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64

#強制卸載
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

#檢查是否有遺留文件。如果有刪除即可。
ls /etc/my.cnf
ll /var/lib/mysql/  ll /var/lib64/mysql(64位)
  • mysql和boost下載

mysql源代碼下載網址:https://dev.mysql.com/downloa...

  1. 在Select Operationg System中選擇Source Code;
  2. 在下面的Select OS Version選擇Generic Linux(Architecture Independent);
  3. 然後再下面的部分可以看到Compressed TAR Archive,單擊後面的Download;
  4. 在彈出的界面中選擇最下面的No thanks, just start my download就可以開始下載了。

mysql依賴軟件boost下載網址:http://www.boost.org/users/do...

  1. 我選擇的是8.0.16版本的額mysql,與其對應的boost是1.69.0版本,如果你的mysql跟我的版本不一樣,在後面cmake編譯mysql的時候會提示你應該使用哪個版本的boost。

將下載得到的mysql源碼和boots源碼複製到/web目錄下
使用yum安裝其他的依賴項:yum install -y cmake bison bison-devel libaio-devel gcc gcc-c++ git ncurses-devel

  • 解壓縮mysql和boots
cd /web
tar -zxvf mysql-8.0.16.tar.gz        #解壓縮mysql源碼包
mv boost_1_69_0.tar.gz mysql-8.0.16    #將boost移動到解壓後的mysql目錄中
cd mysql-8.0.16            #進入mysql解壓目錄
tar -zxvf boost_1_69_0.tar.gz        #解壓boost
mkdir configure        #創建cmake編譯目錄
  • 編譯安裝mysql
cd configure           #進入cmake編譯目錄

#下面這麼多行屬於同一條指令裏面的(#是註釋,不需要)
cmake .. -DBUILD_CONFIG=mysql_release \
-DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_DTRACE=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_PAM=ON \
-DCMAKE_INSTALL_PREFIX=/var/mysql/ \
-DINSTALL_PLUGINDIR="/var/mysql/lib/plugin" \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EDITLINE=bundled \
-DFEATURE_SET=community \
-DCOMPILATION_COMMENT="MySQL Server (GPL)" \
-DWITH_DEBUG=OFF \
-DWITH_BOOST=..

最後一個參數“-DWITH_BOOST”的值表示boost所在的目錄,如果按上面的步驟來,此處不用修改(但是如果你發現還是報錯的話,那最好把這裏改爲絕對路徑),你可以把boost解壓到其他目錄然後在此處寫上路徑。

當然編譯過程不可能這麼順利,首先需要面對的問題就是cmake的版本問題,如果編譯出錯並且告訴你需要高版本的cmake,那麼你需要去下載高版本cmake然後安裝,

  • 安裝cmake3(需要GCC的支持,如果沒有GCC,可以先yum install gcc*安裝gcc)

地址:https://cmake.org/files/v3.10...

[root@localhost ~]# tar -zxvf cmake-3.10.2.tar.gz  
[root@localhost ~]# cd cmake-3.10.2
[root@localhost cmake-3.10.2]# ./bootstrap --prefix=/usr/local
[root@localhost cmake-3.10.2]# gmake
[root@localhost cmake-3.10.2]# make install

解決cmake版本問題後,再次使用cmake編譯,如果報錯告訴你/usr/bin/cmake不存在,那麼你就寫上cmake的絕對路徑。之後再次cmake編譯,可能會出現GCC版本問題,centos使用yum安裝的gcc是4.8版本的,編譯mysql-8.0.16時需要5.3版本的gcc,需要下載devtoolset來安裝高版本gcc。

  • 安裝devtoolset和5.3版本gcc
yum install centos-release-scl-rh centos-release-scl
yum check-update
yum install devtoolset-4-gcc  devtoolset-4-gcc-c++
source /opt/rh/devtoolset-4/enable
gcc -v            #查看gcc版本

在此終端查看gcc版本爲5.3,但是其他終端查看你的gcc版本仍爲4.8(我沒有研究是什麼原因),所以不要關閉這個終端,我們就在這個終端下編譯mysql。再次使用cmake編譯,如果出現“Cannot find appropriate system libraries for WITH_SSL=system”、“CMake Error at cmake/ssl.cmake:68 (MESSAGE):Please install the appropriate openssl developer package.”這樣的錯誤,那麼需要安裝ssl(yum install ncurses-devel 和 yum install openssl-devel)

再次執行cmake編譯

/usr/local/bin/cmake .. -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=STANDALONE -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_DTRACE=OFF -DWITH_EMBEDDED_SERVER=OFF -DWITH_INNODB_MEMCACHED=ON -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_PAM=ON -DCMAKE_INSTALL_PREFIX=/var/mysql/ -DINSTALL_PLUGINDIR="/var/mysql/lib/plugin" -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EDITLINE=bundled -DFEATURE_SET=community -DCOMPILATION_COMMENT="MySQL Server (GPL)" -DWITH_DEBUG=OFF -DWITH_BOOST=/usr/local/boost

我把新的cmake3安裝在/usr/local/bin/,所以最開始使用這個路徑下的cmake,由於我最開始下載的是boost-1.70版本,所以後來重新下載了一個1.69版本的,把它放在了/usr/local目錄下,所以最後的-DWITH_BOOST的值設爲了這個(如果你一開始就下載的1.69版本的boost,那麼就沒必要修改這個值)。這些錯誤解決後我沒有遇到其他的錯誤了,那麼最後的編譯結果如下:
clipboard.png

能看到這兩個“done”表示我們cmake編譯成功了(實際上是生成了Makefile編譯文件)。

  • 在當前目錄下使用make命令進行編譯(編譯過程很慢,不要着急,可能得花幾個小時)

clipboard.png

  • 安裝mysql:執行make install(由於磁盤空間不夠了,所以我刪除了apache以及它的宜依賴文件的源代碼還給虛擬機加了一塊20G硬盤掛載到/mnt目錄上,新添加的硬盤用於之後可能用到的軟件,php、mysql、apache都放在第一塊硬盤)

mysql安裝就完成了,接下來配置mysql用戶以及日誌文件

useradd -s /sbin/nologin mysql        #添加名爲mysql的用戶

#創建mysql的數據和日誌目錄,考慮到第一塊硬盤空間不夠,所以這些數據都放在第二塊硬盤上
#mkdir不能創建多層目錄,需要分開創建
mkdir /mnt/mysql_data
mkdir /mnt/mysql/log
chown -R mysql:mysql /mnt/mysql_data/
chown -R mysql:mysql /mnt/mysql/log
  • 修改配置文件
vim /etc/my.cnf
#輸入如下內容
[mysqld]
port=3306
datadir=/mnt/mysql_data
log_error=/mnt/mysql/log/error.log
basedir=/mnt/mysql/
  • 初始化數據庫
/var/mysql/bin/mysqld  --initialize --user=mysql
  • 查看數據文件是否生成、查看日誌文件是否生成
ll /mnt/mysql_data
#顯示如下內容
-rw-r-----. 1 mysql mysql       56 May 28 08:04 auto.cnf
-rw-------. 1 mysql mysql     1676 May 28 08:04 ca-key.pem
-rw-r--r--. 1 mysql mysql     1112 May 28 08:04 ca.pem
-rw-r--r--. 1 mysql mysql     1112 May 28 08:04 client-cert.pem
-rw-------. 1 mysql mysql     1680 May 28 08:04 client-key.pem
-rw-r-----. 1 mysql mysql     5284 May 28 08:05 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 May 28 08:05 ibdata1
-rw-r-----. 1 mysql mysql 50331648 May 28 08:05 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 May 28 08:04 ib_logfile1
drwxr-x---. 2 mysql mysql     4096 May 28 08:05 #innodb_temp
drwxr-x---. 2 mysql mysql     4096 May 28 08:04 mysql
-rw-r-----. 1 mysql mysql 24117248 May 28 08:05 mysql.ibd
drwxr-x---. 2 mysql mysql     4096 May 28 08:04 performance_schema
-rw-------. 1 mysql mysql     1676 May 28 08:04 private_key.pem
-rw-r--r--. 1 mysql mysql      452 May 28 08:04 public_key.pem
-rw-r--r--. 1 mysql mysql     1112 May 28 08:04 server-cert.pem
-rw-------. 1 mysql mysql     1676 May 28 08:04 server-key.pem
drwxr-x---. 2 mysql mysql     4096 May 28 08:04 sys
-rw-r-----. 1 mysql mysql 10485760 May 28 08:05 undo_001
-rw-r-----. 1 mysql mysql 10485760 May 28 08:05 undo_002

ll /mnt/mysql/log
#顯示如下內容
-rw-r-----. 1 mysql mysql 1091 May 28 08:04 error.log
  • 啓動mysql服務
#啓動/var/mysql/bin目錄下的mysqld腳本即可
./mysqld start
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章