天天看點

CentOS 7.6 源碼安裝搭建LAMP架構詳解

這裡寫目錄标題

    • 一、搭建環境
    • 二、安裝apache
    • 三、安裝mysql
    • 四、安裝php
    • 五、搭建Discuz!論壇

一、搭建環境

一台CentOS 7.6最小化安裝虛拟機

二、安裝apache

所需源碼軟體包:

  • apr-1.6.2.tar.gz
  • apr-util-1.6.0.tar.gz
  • httpd-2.4.29.tar.bz2

tips:apr包是apache的依賴包,apr、apr-util軟體包支援Apache上層應用跨平台,提供底層接口庫

第一步:将軟體包拷貝到/opt目錄下,解壓,然後把apr工具移動到httpd軟體包的srclib下面

[[email protected] opt]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2

[[email protected] opt]# 
[[email protected] opt]# tar xf apr-1.6.2.tar.gz 
[[email protected] opt]# tar xf apr-util-1.6.0.tar.gz 
[[email protected] opt]# tar xf httpd-2.4.29.tar.bz2 

[[email protected] opt]# ls
apr-1.6.2  apr-1.6.2.tar.gz  apr-util-1.6.0  apr-util-1.6.0.tar.gz  httpd-2.4.29  httpd-2.4.29.tar.bz2

[[email protected] opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[[email protected] opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
           

第二步:yum安裝gcc gcc-c++ make pcre-devel expat-devel perl(全部安裝缺一不可)

[[email protected] opt]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
已安裝:
  pcre-devel.x86_64 0:8.32-17.el7        expat-devel.x86_64 0:2.1.0-11.el7                                                                                    

更新完畢:
  expat.x86_64 0:2.1.0-11.el7     gcc.x86_64 0:4.8.5-39.el7    gcc-c++.x86_64 0:4.8.5-39.el7    make.x86_64 1:3.82-24.el7   
  perl.x86_64 4:5.16.3-295.el7   

作為依賴被更新:
  cpp.x86_64 0:4.8.5-39.el7                  gcc-gfortran.x86_64 0:4.8.5-39.el7    libgcc.x86_64 0:4.8.5-39.el7            
  libgfortran.x86_64 0:4.8.5-39.el7          libgomp.x86_64 0:4.8.5-39.el7         libquadmath.x86_64 0:4.8.5-39.el7       
  libquadmath-devel.x86_64 0:4.8.5-39.el7    libstdc++.x86_64 0:4.8.5-39.el7       libstdc++-devel.x86_64 0:4.8.5-39.el7   
  perl-libs.x86_64 4:5.16.3-295.el7         

完畢!
           
  • gcc、gcc-c++:liunx環境中的c/c++編譯器
  • PCRE(Perl Compatible Regular Expressions)是一個輕量級的Perl函數庫,包括 perl

    相容的正規表達式庫,功能和性能都很強大

  • expat是一個由C語言編寫的XML解析庫
  • perl是perl語言解釋器,負責解釋執行perl語言程式

第三步:配置,定制選項

[[email protected] opt]# cd httpd-2.4.29
[root@server httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \  #指定安裝目錄
--enable-so \        #啟用動态加載子產品支援,使httpd具備進一步擴充功能的能力
--enable-rewrite \   #啟用網頁位址重寫功能,用于網站優化及目錄遷移維護
--enable-charset-lite \    #啟用字元集支援,以便支援使用各種字元集編碼的網頁
--enable-cgi       #啟用CGI腳本程式支援,便于擴充網站的應用通路能力
           

第四步:編譯安裝

第五步:添加服務讓chkconfig管理

為了便于通過chkconfig進行管理httpd系統服務,在檔案的開頭添加chkconfig識别配置

[[email protected] bin]# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
#将apachectl複制到init.d目錄下便于service管理

[[email protected] bin]# vim /etc/init.d/httpd 
#!/bin/sh
\# chkconfig:35 85 21   指定運作在3,5級别(init3和init5),啟動優先級為85,停止優先級為21,數字越大,優先級越高
\# description: Apache is a World Wide Web server
\# Licensed to the Apache Software Foundation (ASF) under one or more
……

[[email protected] bin]# chkconfig --add httpd   #添加服務
           

tips:因為第一次安裝apache報錯重裝以後目錄改變為/usr/local/apache2,如果第一次正确安裝目錄為/usr/local/httpd

第六步:修改apache配置檔案

[[email protected] bin]# vim /usr/local/apache2/conf/httpd.conf
ServerName www.kgc.com:80   #指定域名
Listen 192.168.100.120:80    #指定監聽ip和端口(本機)

[[email protected] httpd]# ln -s /usr/local/apache2/conf/httpd.conf /etc/
[[email protected] httpd]# ln -s /usr/local/apache2/bin/* /usr/local/bin/
#建立軟連結,/usr/local/bin/是系統環境變量,存放可執行指令,否則需要用絕對路徑才能運作指令
           

第七步:關閉防火牆和selinux

[[email protected] httpd]# systemctl stop firewalld.service
[[email protected] httpd]# setenforce 0
           

第八步:檢查配置檔案文法

[[email protected] local]# httpd -t
Syntax OK
           

第九步:啟動httpd服務

[[email protected] local]# service httpd start
[[email protected] local]# netstat -anpt| grep 80
tcp        0      0 192.168.100.120:80      0.0.0.0:*               LISTEN      66657/httpd     
           

三、安裝mysql

所需源碼包:mysql-5.6.26.tar.gz

第一步:yum安裝ncurses-devel、autoconf、cmake

[[email protected] ~]# yum -y install ncurses-devel autoconf cmake
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
軟體包 autoconf-2.69-11.el7.noarch 已安裝并且是最新版本
正在解決依賴關系
--> 正在檢查事務
---> 軟體包 cmake.x86_64.0.2.8.12.2-2.el7 将被 安裝
--> 正在處理依賴關系 libarchive.so.13()(64bit),它被軟體包 cmake-2.8.12.2-2.el7.x86_64 需要
---> 軟體包 ncurses-devel.x86_64.0.5.9-14.20130511.el7_4 将被 安裝
--> 正在檢查事務
---> 軟體包 libarchive.x86_64.0.3.1.2-14.el7_7 将被 安裝
--> 解決依賴關系完成
已安裝:
  cmake.x86_64 0:2.8.12.2-2.el7                         ncurses-devel.x86_64 0:5.9-14.20130511.el7_4                        

作為依賴被安裝:
  libarchive.x86_64 0:3.1.2-14.el7_7                                                                                         

完畢!
           
  • ncurses庫是一個Linux系統下的圖形支援的函數庫,字元終端處理庫,包括面闆和菜單。
  • autoconf是一個用于生成可以自動地配置軟體源碼包,用以适應多種UNIX類系統的shell腳本工具
  • cmake:允許開發者編寫一種平台無關的 CMakeList.txt

    檔案來定制整個編譯流程,然後再根據目标使用者的平台進一步生成所需的本地化 Makefile 和工程檔案

第二步:使用cmake配置參數

[[email protected] ~]# cd mysql-5.6.26
[root@server mysql-5.6.26]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   #指定安裝目錄
> -DDEFAULT_CHARSET=utf8 \  #指定預設字元集是utf8,支援中文
> -DDEFAULT_COLLATION=utf8_general_ci \  #指定預設編碼為utf8
> -DEXTRA_CHARSETS=all \   #指定額外的編碼,一般都是all
> -DSYSCONFIDIR=/etc \   #指定配置檔案目錄
> -DMYSQL_DATADIR=/home/mysql/ \    #指定資料庫的資料目錄
> -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock    #指定socket檔案
           

第三步:編譯安裝

第四步:進行如下配置,優化mysql服務管理

[root@server mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf
cp:是否覆寫"/etc/my.cnf"? yes
[root@server mysql-5.6.26]# 
[root@server mysql-5.6.26]# cp support-files/mysql.server /etc/init.d/mysqld
[root@server mysql-5.6.26]# chmod 755 /etc/init.d/mysqld

[root@server mysql-5.6.26]# chkconfig --add /etc/init.d/mysqld
[root@server mysql-5.6.26]# chkconfig mysqld --level 35 on

[root@server mysql-5.6.26]# echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
[root@server mysql-5.6.26]# source /etc/profile
[root@server mysql-5.6.26]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
           

注意:

my-default.cnf是mysql源碼安裝的預設配置檔案

mysql.server是服務端工具,主要作用就是為了友善啟動和關閉mysql服務

mysql.server啟動,預設使用/etc/my.cnf配置檔案資訊

第五步:建立一個mysql使用者,把/usr/local/mysql/下的所有屬主屬組都改成mysql,并完成mysql的初始化

[root@server mysql-5.6.26]# useradd -s /sbin/nologin mysql
[root@server mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql/

[root@server mysql-5.6.26]# /usr/local/mysql/scripts/mysql_install_db \
> --user=mysql \  #指定運作mysqld程序使用者名,所有通過mysqld程序建立的檔案都會屬于這個使用者,可以是别的名字,mysql便于管理
> --ldata=/var/lib/mysql \
> --basedir=/usr/local/mysql/ \ #指定Mysql安裝的絕對路徑
> --datadir=/home/mysql/    #指定Mysql資料存放的絕對路徑
           

mysql_install_db:用于完成mysql的初始化

第六步:完善mysql啟動檔案

[root@server mysql-5.6.26]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/home/mysql
           

第七步:啟動mysql,mysql的服務端口:tcp:3306

[root@server mysql-5.6.26]# service mysqld start
Starting MySQL. SUCCESS! 
[root@server mysql-5.6.26]# 
[root@server mysql-5.6.26]# netstat -anpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      81847/mysqld  
           

第八步:指定mysql的管理使用者為root,密碼為abc123

[root@server mysql-5.6.26]# mysqladmin -u root -p password "abc123"
Enter password: (輸入舊的密碼,預設密碼為空,是以直接回車)
Warning: Using a password on the command line interface can be insecure.
           

第九步:用root登進mysql

[root@server mysql-5.6.26]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.26 Source distribution

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;      #檢視已有資料庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> quit  #退出,exit也可以
Bye
           

四、安裝php

所需源碼軟體包:php-5.6.11.tar.bz2

第一步:yum安裝gd libpng libpng-devel pcre pcre-devel libxml2-devel libjpeg-devel

[[email protected] ~]# yum -y install gd libpng libpng-devel pcre pcre-devel libxml2-devel libjpeg-devel
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
軟體包 2:libpng-1.5.13-7.el7_2.x86_64 已安裝并且是最新版本
軟體包 pcre-8.32-17.el7.x86_64 已安裝并且是最新版本
軟體包 pcre-devel-8.32-17.el7.x86_64 已安裝并且是最新版本
正在解決依賴關系
--> 正在檢查事務
---> 軟體包 gd.x86_64.0.2.0.35-26.el7 将被 安裝
……
           
  • gd 庫是 PHP 處理圖形的擴充庫,它提供了一系列用來處理圖檔的 API(應用程式程式設計接口),使用 gd庫可以處理圖檔或者生成圖檔。在網站上,gd 庫通常用來生成縮略圖,或者對圖檔加水印,或者生成漢字驗證碼,或者對網站資料生成報表等。
  • libpng是一個跨平台的png解碼庫,友善易用。基本上如果是支援fopen之類函數的平台都可以支援
  • libxml2是一個用來解析XML文檔的函數庫。它用 C 語言寫成,并且能被多種語言所調用,可移植性非常好
  • libjpeg是ijg組織推出的jpeg圖檔工具套件,采用C語言編寫,其内含的jpegtran工具是google官方推薦的無損jpeg圖檔壓縮工具

第二步:解壓php軟體包

第三步:切換到解壓目錄,定制配置

[[email protected] opt]# cd php-5.6.11/
[root@server php-5.6.11]# 
[root@server php-5.6.11]# ./configure \
--prefix=/usr/local/php5 \   #指定php安裝目錄
--with-gd \     #指定安裝所依賴的gd庫檔案
--with-zlib \  #指定安裝所依賴的zlib庫檔案,zlib是提供資料壓縮用的函式庫
--with-apxs2=/usr/local/apache2/bin/apxs \   #指定Apache服務能夠支援通路PHP頁面
--with-mysql=/usr/local/mysql/ \           #指定php的資料庫為mysql
--with-config-file-path=/usr/local/php5 \       #指定php的配置檔案路徑
--enable-mbstring       #開啟mbstring擴充,使之可以支援中文等語言
           

第四步:編譯安裝

第五步:優化php管理

[root@server php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini
[root@server php-5.6.11]# ln -s /usr/local/php5/bin/* /usr/local/bin/
           

php.ini-development:php配置檔案

第六步:編輯Apache的配置檔案,找到兩行AddType配置,在後面再插入兩行内容,作用是讓apache支援php檔案

[root@server php-5.6.11]# vim /etc/httpd.conf
385     AddType application/x-compress .Z
386     AddType application/x-gzip .gz .tgz
387     AddType application/x-httpd-php .php
388     AddType application/x-httpd-php-source .phps


<IfModule dir_module>
    DirectoryIndex index.php index.html    #apache預設不支援php頁面,添加就可以通路了
</IfModule>
           

第七步:在apache的預設站點目錄下編寫一個php的頁面

[root@server php-5.6.11]# vim /usr/local/apache2/htdocs/index.php
<?php
phpinfo();
?>
           

第八步:重新開機Apache的服務

[root@server php-5.6.11]# service httpd stop
[root@server php-5.6.11]# service httpd start
           

第九步:驗證通路網站:http://192.168.100.120/index.php

出現如下網頁說明LAMP架構已經搭建完成了!

CentOS 7.6 源碼安裝搭建LAMP架構詳解

五、搭建Discuz!論壇

第一步:建立一個資料庫bbs,并建立一個登陸使用者bbsuser,密碼是admin123,授權讓其可以在任何主機上登入, 并對所有資料庫有查詢、插入、修改、删除的權限,%表示任意

格式:grant 權限 on 資料庫.* to 使用者名@登入主機 identified by “密碼”

mysql> CREATE DATABASE bbs;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;  #重新整理資料庫
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;   #檢視資料庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bbs                |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> quit
Bye
           

第二步:解壓Discuz軟體包,指定解壓到/opt/dis

第三步:将解壓目錄下的網站相關頁面拷貝到apache預設站點下的bbs目錄下

[[email protected] opt]# cd dis
[[email protected] dis]# cp -r upload/ /usr/local/apache2/htdocs/bbs
           

第四步:改變相關目錄的屬主屬組否則無法安裝

[[email protected] dis]# cd /usr/local/apache2/htdocs/bbs
[[email protected] bbs]# chown -R daemon ./config/
[[email protected] bbs]# chown -R daemon ./data/
[[email protected] bbs]# chown -R daemon ./uc_client/
[[email protected] bbs]# chown -R daemon ./uc_server/
           

第五步:通路192.168.100.120/bbs/ 安裝向導一步步安裝Discuz

如果第四步沒有修改屬主屬組的話,這裡權限會顯示不可寫

CentOS 7.6 源碼安裝搭建LAMP架構詳解
CentOS 7.6 源碼安裝搭建LAMP架構詳解
CentOS 7.6 源碼安裝搭建LAMP架構詳解
CentOS 7.6 源碼安裝搭建LAMP架構詳解
CentOS 7.6 源碼安裝搭建LAMP架構詳解

第六步:安裝完成後驗證登陸前台頁面

CentOS 7.6 源碼安裝搭建LAMP架構詳解

第七步:安裝完成後驗證登陸背景

使用者名:admin

密碼:abc123

CentOS 7.6 源碼安裝搭建LAMP架構詳解
CentOS 7.6 源碼安裝搭建LAMP架構詳解

第八步:注冊一個新的使用者

CentOS 7.6 源碼安裝搭建LAMP架構詳解
CentOS 7.6 源碼安裝搭建LAMP架構詳解
CentOS 7.6 源碼安裝搭建LAMP架構詳解

第九步:進入伺服器上的資料庫中檢視剛才建立的使用者資訊

[[email protected] dis]# mysql -u root -p 
Enter password: 

mysql> use bbs;    //進入bbs資料庫
Database changed
mysql> 
mysql> show tables;   //檢視所有表

mysql> desc pre_common_member;   //  desc指令檢視表的結構資訊

//  使用者資訊存在于pre_common_member表中

mysql> select uid,email,username,password,status from pre_common_member;
//查詢使用者的id,郵箱,使用者名和密碼還有狀态
           
CentOS 7.6 源碼安裝搭建LAMP架構詳解