記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、設置靜態網路,一是用來不讓地址飄忽不定,二來是為了訪問外網。 命令如下: [[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改內容: TYPE="Ethernet" BOOTPROTO="stat ...
一周排行
    -Advertisement-
    Play Games
  • @ 先看一下導出的整體效果(如下圖),其中標註的區域都是通過後臺動態生成的: 一、先在Word中建立好表格模板 1.1、參數創建方法(Word和WPS) 1.1.1、Office中Word域的創建 1.1.1.1、選中指定的單元格 -> 點擊頭部工具欄中的”插入“ -> 選擇 ”文檔部件“ -> 選 ...
  • 在實際工作中,經常會有一些需要定時操作的業務,如:定時發郵件,定時統計信息等內容,那麼如何實現才能使得我們的項目整齊劃一呢?本文通過一些簡單的小例子,簡述在.Net6+Quartz實現定時任務的一些基本操作,及相關知識介紹,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 紙殼CMS支持將評論、留言、表單提交、訂閱等通知,通過WebHook發送到第三方平臺,比如釘釘。 創建釘釘WebHook 需要在釘釘群中創建自定義機器人,具體方法可以參考釘釘的官方文檔: 自定義機器人接入 需要註意的是,在安全設置中不要使用加簽,使用自定義關鍵字即可。在發送的消息中,只要包含這個關鍵 ...
  • 向下轉型的使用 Java的多態性: 父類指向子類的聲明 Animal animal = new Dog()//Dog()重寫了父類Animal 有了對象的多態性以後,記憶體實際上載入的是==子類==的屬性和方法,但是由於變數聲明為==父類類型==,導致編譯時只能調用父類的屬性和方法,子類特有的屬性方法 ...
  • spring源碼環境搭建 組件 版本 jdk 1.8.0_192 spring-framework 5.3.x gradle 7.5.1 idea 2022.3.3 aspectJ 1.9 可根據spring-framwork項目說明靈活選擇 一、拉取spring-framework項目 1、spr ...
  • 首先任何的商業邏輯,光流量增長,沒法變現是沒用的。 就像博客群發提效工具,得有對應的用戶,更得有對應付費用戶群體的畫像。剩下的就是靠增長,被動讓他們找到你的產品,用產品解決他們痛點,他們自然而然會付費。 下麵大致分享下從三個方向分享下: 用戶痛點 -> 真正的付費用戶群體 產品價值 PLG 增長 一 ...
  • Object類的使用 Object類 Object類中的方法可以在網上搜索得到 Object類是所有java類的父類 如果類在聲明中未使用extends關鍵字指明其父類,則預設父類為java.lang.Object類 Object類中的功能(屬性、方法)具有通用性。 屬性:無 方法:equals() ...
  • Qt 源碼分析之moveToThread 這一次,我們來看Qt中關於將一個QObject對象移動至一個線程的函數moveToThread Qt使用線程的基本方法 首先,我們簡單的介紹一下在Qt中使用多線程的幾種方法: 重寫QThread的run函數,將要在多線程執行的任務放到run函數里 /*myt ...
  • 包裝類的使用 包裝類的使用 java提供8種基本數據類型對應的包裝類,使得基本數據類型變數具有類的特征 掌握:==基本數據類型、包裝類、String==三者之間的互相轉換 自動裝箱與自動拆箱==[基本數據類型和包裝類的轉換]== JDK5.0新特性,自動裝箱與自動拆箱。 class Test{ pu ...
  • 本文已經收錄到Github倉庫,該倉庫包含電腦基礎、Java基礎、多線程、JVM、資料庫、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分散式、微服務、設計模式、架構、校招社招分享等核心知識點,歡迎star~ Github地址 大家好,我是大彬~ 今天來聊聊接 ...