記LAMP搭建(附源碼包)

来源:https://www.cnblogs.com/ajajroom/archive/2023/03/16/17223366.html
-Advertisement-
Play Games

web平臺搭建-LAMP(CentOS-7) 一.準備工作 環境要求: 操作系統:CentOS7.X 64位 關閉SELinux和firewalld防火牆 源碼包:https://pan.baidu.com/s/1P2fq706H8sPeHG6-nfHUSw 提取碼:9ruw 1.安裝編譯工具gcc ...


web平臺搭建-LAMP(CentOS-7)

一.準備工作

環境要求:
操作系統:CentOS7.X 64位
關閉SELinux和firewalld防火牆

源碼包:https://pan.baidu.com/s/1P2fq706H8sPeHG6-nfHUSw
提取碼:9ruw

1.安裝編譯工具gcc、gcc-c+等

註意解決依賴關係,推薦使用 yum 安裝,若不能聯網可使用安裝光碟做為 yum 源

安裝 gcc、gcc-ct+、make等編譯工具

yum -y install gcc gcc-c++ make

關閉SELinux和firewalld

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config 

拷貝源碼包,解包解壓縮

建議將 LAMP環境安裝源碼包統一存放在一個目錄下,如/lamp,可以使用解壓腳本解壓縮

vim tar.sh
#/bin/bash
ls *.tar.gz > ls.list
for tar in $(cat ls.list)
        do
                $(/bin/tar -zxvf $tar)
        done
rm ls.list
~          

源碼軟體包安裝報錯確認與解決方案

echo $?	#安裝軟體過程中由於頻繁刷屏,建議在每個步驟結束後執行此命令
./configure	##此步驟報錯多是依賴關係沒解決或是編譯工具未安裝(註意關鍵詞提示)
make	#此步驟多是編譯時選項參數書寫錯誤、不存在、漏寫等問題
		#一般需要檢查上一個步驟:./configure_—help

註意:若遇到報錯,最簡答的辦法是,找到問題解決後重新解壓軟體,重新安裝,步驟最簡潔

二.編譯安裝

註意:每個源碼包配置編譯安裝完成後,確認安裝目錄下是否生成安裝文件(並確定目錄是否正確)建議將安裝路徑指定為[--prefix=/usr/local/軟體名]格式

1.安裝 libxml2

yum install -y libxm12-devel python-devel
cd libxml2-2.9.1
./configure --prefix=/usr/local/libxml2
make
make install
ls /usr/local/libxml2/

2.安裝libmcrypt

cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt/
make
make install

安裝libltdl,也在libmcrypt源碼目錄中,非新軟體

cd libltdl/
./configure --enable-ltdl-install
make
make install

3.安裝mhash

cd ../mhash-0.9.9.9
./configure
make
make install

4.安裝 mcrypt

cd libmcrypt-2.5.8
export LD_LIBRARY_PATH=/usr/local/libmcrypt/lib/:/usr/local/lib
 ./configure --with-libmcrypt-prefix=/usr/local/libmcrypt/
 make
 make install

5.安裝zlib

cd ../zlib-1.2.13
./configure
make && make install

安裝 libpng

cd ../libpng-1.2.31
./configure --prefix=/usr/local/libpng && make && make install

7.安裝jpeg6

註意:此軟體預設不會自動創建所需目錄,所以目錄必須手工建立

mkdir /usr/local/jpeg6
mkdir /usr/local/jpeg6/bin
mkdir /usr/local/jpeg6/lib
mkdir /usr/local/jpeg6/include
mkdir /usr/local/jpeg6/man/man1 -p
./configure --prefix=/usr/local/jpeg6/ \
--enable-shared \ ##建立共用庫使用的GNU的libtool
--enable-static \#建立靜態庫使用的GNU的libtool
&& make && make install

8.安裝 freetype

cd ../freetype-2.3.5
 ./configure --prefix=/usr/local/freetype && make && make install

9.安裝Apache

源碼包2.4.*版本中預設沒有集成apr的依賴包,所以需要提前解決依賴問

 cp -a ../apr-1.7.2 ../httpd-2.4.56/srclib/apr
 cp -a ../apr-util-1.6.3 ../httpd-2.4.56/srclib/apr-util

Apache 預設需要依賴 pcre 軟體,但由於 Apache 軟體版本較高,則系統預安裝的 pcre 無法使用,所以需要人為手動安裝適合版本

cd ../pcre-8.34
./configure && make &&make install

httpd 軟體安裝

yum install expat-devel
./configure --prefix=/usr/local/apache2 \
--sysconfdir=/usr/local/apache2/etc \#指定Apache配置文件保存目錄
--with-include-apr \#使用捆綁APR/APR-Util 的副本
--enable-so \ #以動態共用對象(DSO)方式編譯
--enable-deflate=shared \#啟用編小傳輸編瑪支持的模塊
--enable-expires=shard \#根據用戶的特別設定來生成失效和隱藏控制的HTTP頭信息
--enable-rewrite-shard \#啟動重寫功能的模塊
&& make && make install

啟動Apache測試

/usr/local/apache2/bin/apachectl start
netstat -tlun
#使用網路進程查看命令確認Apache是否啟動,是否開啟了80監聽埠

警告提示:發現啟動服務提示

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

解決辦法:打開主配置文件 httpd.conf

搜索 ServerName

改為ServerName localhost:80(並且去掉前面的#註釋)

驗證:通過瀏覽器輸入地址訪問:http://伺服器ip,若顯示"It works"即表明Apache正常工作

10.安裝 ncurses

yum install ncurses-devel
cd ../ncurses-5.9
./configure --with-shared --without-debug--without-ada--enable-overwrite&& make && make install

11,安裝cmake和bison

yum install cmake bison -y

12.安裝MySQL

為MySQL軟體創建運行用戶,創建為系統用戶,並限制此用戶登錄操作系統

useradd -r -s /sbin/nologin mysql
cd ../mysql-5.5.48
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 && make && make install

選項詳解:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
安裝位置
-DMYSQL_UNIX_ADDR=/tmp/mysąl.sock
指定 socket(套接字)文件位置
-DEXTRA_CHARSETS=al1
擴展字元支持
-DDEFAULT_CHARSET=ut f8
預設字元集
-DDEFAULT COLLATION=utf8_general_ci
預設字元校對
-DWITH_MYISAM_STORAGE ENGINE=1
安裝 myisam存儲引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1
安裝 innodb 存儲引擎
-DWITH MEMORY STORAGE ENGINE=1
安裝 memory 存儲引擎
-DWITH READLINE=1
支持 readline 庫
-DENABLED_LOCAL_INFILE=1
啟用載入本地數據
-DMYSQL_USER=mysql
指定 mysql 運行用戶
-DMYSQL TCP PORT-3306
指定 mysql 埠

MySQL 安裝後需要調整相應配置文件和參數才能正常運行

修改MySQL目錄的用戶歸屬

chown -R root .
chown -R mysql data/

生成配置文件,並初始化授權表

 cp -a /root/lamp/mysql-5.5.48/support-files/my-medium.cnf /etc/my.cnf

複製MySQL配置文件到指定位置,覆蓋掉系統自帶文件

cd /usr/local/mysql/
./scripts/mysql_install_db --user=mysql

創建資料庫授權表,初始化資料庫,相當於安裝完操作系統後的引導設置(添加第一個用戶)

啟動MySQL服務

在/usr/local/mysql/bin 下

./mysqld_safe --user=mysql &

設定MySQL密碼

./mysqladmin -uroot password 000000

登錄MySQL

./mysql -uroot -p000000

13.安裝PHP

安裝libtool和libtool-ltdl

yum install libtool* -y
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/ --with-freetype-dir=/usr/local/freetype/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql/ --with-gd --without-pear && make && make install

選項詳解:

--with-config-file-path=/usr/local/php/etc/
指定配置文件目錄
--with-apxs2=/usr/local/apache2/bin/apxs
指定 apache 動態模塊位置
--with-libxml-dir=/usr/local/libxml2/
指定 libxml 位置
--with-jpeg-dir=/usr/local/jpeg6/
指定 jpeg 位置
--with-png-dir=/usr/local/libpng/
指定 libpng 位置
--wi th-freetype-dir=/usr/local/freetype/
指定 freetype 位置
-with-mcrypt=/usr/local/libmcrypt/
指定 libmcrypt 位置
-with-mysqli=/usr/local/mysql/bin/mysql_config 
指定 mysqli 位置
with-gd
啟用 gd 庫
enable-soap
支持 soap 服務
enable-mbstring-all
支持多位元組,字元串
enable-sockets
支持套接字
with-pdo-mysql=/usr/local/mysql
啟用 mysql 的 pdo 模塊支持
without-pear
不安裝 pear(安裝 pear 需要連接互聯網)

PHP 安裝後需要調整相應配置文件和參數才能正常運行

生成 php 配置文件

mkdir /usr/local/php/etc
cp php.ini-production /usr/local/php/etc/php.ini

修改 Apache 配置文件,使其識別*.php 文件,並能通過 php 模塊調用 php 進行頁面解析

vim /usr/local/apache2/etc/httpd.conf
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

重啟 Apache 服務

/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start

測試php 頁面是否能正常解析(即 apache 和 php 連通性)

vim /usr/local/apache2/htdocs/test.php
<?php
        phpinfo();
?>

通過瀏覽器輸入地址訪問:http://Apache伺服器地址/test.php

14.為PHP安裝openssl模塊

yum install autoconf
cd /php-7.0.7/ext/openssl/
mv config0.m4 config.m4
/usr/local/php/bin/phpize
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config && make && make install

15,為PHP安裝memcache模塊

cd pecl-memcache-php7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config && make && make install

16.修改 php 配置文件,使其識別並調用 openssl 和 memcache 兩個模塊

vim /usr/local/php/etc/php.ini
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"
取消分號註釋,並添加以上路徑(此路徑來自於模塊安裝命令的結果)
extension="openssl.so"
extension="memcache.so"
添加以上兩個庫文件的調用

重啟 apache,刷新 phpinfo 頁面,並查看是否有兩個新增的模塊

17.安裝memcached服務

yum install libevent-devel
cd ../memcached-1.4.17
./configure --prefix=/usr/local/memcached && make &&make install
useradd -r -s /sbin/nologin memcache
添加memcache用戶,此用戶不用登錄,不設置密碼
/usr/local/memcached/bin/memcached -umemcache &
啟動memcache服務,並設置為後臺運行
netstat -an | grep 11211
檢查 memcache 是否正常啟動,並監聽了 11211 埠

18.安裝phpMyAdmin

cp -a ../phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin
cd /usr/local/apache2/htdocs/phpmyadmin/
cp -a config.sample.inc.php config.inc.php
vim config.inc.php
$cfg['Servers'][$i]['auth_type'] = 'http';
設置 auth type 為 http,即設置為HTTP身份認證模式(新增即可)

通過瀏覽器輸入地址訪問:http://Apache 伺服器地址/phpmyadmin/index.php

用戶名為root,密碼為MySQL設置時指定的root密碼123456

19.項目遷移:

1、把php項目拷貝到網站預設目錄下:/usr/local/apache2/htdocs/**
2、使用phpMyAdmin創建網站所需資料庫
註意事項:註意目錄許可權和歸屬,防止許可權過大或者許可權過小


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 預覽 技術實現 看過我上篇在 WPF 中實現 OpenGL 與 D3D 渲染的同學應該知道,我是依靠 WGL 中 WGL_NV_DX_interop 擴展與 D3D Surface 關聯併在使用該 Surface 實現渲染。 所以我們這次實現也是如此,但與 WPF 不同的是 WinUI 支持 D3D ...
  • 需求 swagger頁面按標簽Tags分組顯示。 沒有打標簽Tags的介面,預設歸到"未分組"。 分組內按介面路徑排序 說明 為什麼沒有使用GroupName對介面進行分組? 暫時不需要,以及不想點擊swagger頁面右上角那個下拉框。 當然Tags和GroupName不衝突,不影響通過GroupN ...
  • 背景: 我們項目一開始的所有提示都是中文,後來要做國際化。發現項目中的帶雙引號的中文居然有 2.3 w 多條!!!簡直讓人欲哭無淚... 如果使用人工改的話,首先不說正確率了。光是效率都是難難難。所以發揮了自己的才能寫了一個自動化工具。 思路: 首選讀取項目文件夾下的所有文件路徑 篩選路徑文件尾碼. ...
  • 接下來我們對依賴屬性進行一個簡單的剖析,從以下幾個方面入手吧。 1 - 為什麼是public static 首先說下為什麼是public 答:WPF有一種特殊屬性,叫附加屬性,需要直接訪問xxxxProperty的方法才能實現,所以xxxxProperty是public 的。 其次為什麼是靜態sta ...
  • 1. 選項 前面講完了.NET Core 下的配置系統,我們可以通過 IConfiguration 服務從各種來源的配置中讀取到配置信息,但是每次要用的時候都通過 Iconfiguration 讀取配置文件會比較不方便,而且效率低。.NET Core 體系下提供了一個選項系統,該功能用於實現以強類型 ...
  • 1、安裝 NLog.Web.AspNetCore 包 2、新增Configs文件夾,在Configs文件夾下新增nlog.config文件 nlog.config文件內容如下 <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://ww ...
  • 對於有輕微強迫症的技術人員來說,桌面有個IE圖標且刪不掉是非常不能忍受的,造成這種情況有可能是新裝的操作系統自帶,也有可能是裝了某個軟體(比如SQLyog)後…… 現將刪除IE圖標的方法整理如下: 1.打開運行對話框,兩種方式,點擊開始→運行;Win+R;輸入“gpedit.msc”,打開本地安全策 ...
  • 設置靜態網路 1、設置靜態網路,一是用來不讓地址飄忽不定,二來是為了訪問外網。 命令如下: [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改內容: TYPE="Ethernet" BOOTPROTO="stat ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...