Centos下源碼編譯安裝apache、php、mysql

安裝前準備

安裝目錄創建

mkdir /server

需要安裝以下依賴

yum install gcc
yum install gcc-c++
yum install ncurses-devel
yum install autoconf
yum install expat-devel
yum install zlib-devel
yum install libxml2-devel
yum install openssl
yum install openssl-devel
yum install curl-devel
yum install libpng-devel
yum install freetype-devel

cmake編譯參數詳情:
https://blog.csdn.net/zero_295813128/article/details/51223209
https://www.cnblogs.com/martinzhang/p/3455681.html

Mysql源碼編譯安裝

1. 資源獲取

下載地址:https://dev.mysql.com/downloads/mysql/
版本區別:https://www.cnblogs.com/langtianya/p/5185601.html
獲取安裝包:

# cmake安裝包獲取
wget https://github.com/Kitware/CMake/releases/download/v3.14.2/cmake-3.14.2.tar.gz
# boost安裝包獲取 
# mysql5.7.5版本及以上需要boost,而且可能需要的boost版本還不一樣,最好下載mysql源碼的時候就下載帶有boost的
#wget https://dl.bintray.com/boostorg/release/1.59.0/source/boost_1_59_0.tar.gz
#下面的mysql是自帶boost的
# mysql安裝包獲取
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.26.tar.gz

5.7版本以後需要使用boost
不同版本的Mysql使用的boost版本不同

2.安裝

  1. 安裝cmake
tar -zxvf cmake-3.14.2.tar.gz && cd cmake-3.14.2
./configure --prefix=/usr/local/cmake
# 編譯完會提示使用gmake 
# 在centos上gmake和make都是GUN make 在某些發行版上make不是GUN make就需要使用gmake,這裏使用make就行
make && make install
  1. 安裝mysql
# 檢測是否有mysql用戶
id mysql
# 創建mysql用戶
groupadd -g 550 mysql
useradd -g mysql -u 550 mysql
# 創建mysql安裝目錄 版本號5.5
mkdir /server/mysql57
# 解壓安裝包並進入目錄
tar -zxvf mysql-boost-5.7.26.tar.gz && cd mysql-5.7.26
/usr/local/cmake/bin/cmake . -DCMAKE_INSTALL_PREFIX=/server/mysql57 \
-DMYSQL_DATADIR=/server/mysql57/data \
-DWITH_BOOST=./boost/boost_1_59_0/ \ #使用mysql安裝包自帶的boost
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/server/mysql57/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DTRACE=0  \
-DWITH_DEBUG=1
make && make install

這一步編譯時間較長

#增加環境變量
vim /etc/profile
# 添加到最後一行,保存
PATH=/server/mysql57/bin:/server/mysql57/lib:$PATH
source /etc/profile # 導入新的環境變量

初始化配置

# 創建數據存儲目錄
mkdir /server/mysql57/data
# 創建日誌存放目錄
mkdir /server/mysql57/log
# 創建日誌文件
touch /server/mysql57/log/mariadb.log
#編輯配置文件
vim /etc/my.cnf

編輯配置文件

[mysqld]
datadir=/server/mysql57/data
socket=/server/mysql57/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# 自定義內容
explicit_defaults_for_timestamp=true
port=3306
user=mysql


[mysqld_safe]
log-error=/server/mysql57/log/mariadb.log
pid-file=/server/mysql57/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

初始化

#兩種方式 使用配置文件和使用參數
# 1.使用配置文件初始化
mysqld --defaults-file=/etc/my.cnf --initialize
# 2. 使用參數初始化
mysqld --initialize --user=mysql --basedir=/server/mysql57 --datadir=/server/mysql57/data
# 兩種方式哪種都可以
# 初始化成功後會生成root用戶的密碼
# 使用--initialize-insecure代替--initialize就不會生成root的密碼,root爲無密碼賬戶

# 讀寫權限
chown -R mysql:mysql /server/mysql
# 因爲配置文件中用到的目錄都在此目錄下,所以一個命令就搞定,如果在不同的目錄,需要分別授權或者修改目錄所有者

# 複製啓動腳本到/etc/init.d
cp /server/mysql55/support-files/mysql.server 

啓動Mysql服務

service mysqld start # 啓動服務
# 正常情況下能啓動成功,出現問題可查看日誌找到具體錯誤
cat /server/mysql57/log/mariadb.log

故障處理

如果服務啓動成功,使用mysql通過socket連接本地服務提示Segmentation fault (core dumped)
修改源碼重新編譯

vim ./mysql-5.7.26/cmd-line-utils/libedit/terminal.c
#將869行註釋
/*char buf[TC_BUFSIZE];*/
# 將879行修改 原  area = buf; 修改爲
area = NULL;
# 然後重新cmake make make install

安裝Apache

獲取源碼包

# 獲取apache
wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.29.tar.gz
# 新版apache不包含apr和apr-util
# 獲取 apr
wget http://mirror.bit.edu.cn/apache//apr/apr-1.6.3.tar.gz
# 獲取apr-util源碼包
wget http://archive.apache.org/dist/apr/apr-util-1.5.2.tar.gz
# 獲取pcre源碼包
wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz

安裝apr

mkdir /server/apr
tar tar -zxvf apr-1.6.5.tar.gz
cd apr-1.6.5
./configure --prefix=/server/apr
make && make install

安裝apr-util

tar -jxvf apr-util-1.6.1.tar.bz2
cd apr-util-1.6.1
./configure --prefix=/server/apr-util --with-apr=/server/apr
make && make install

安裝pcre

mkdir /server/pcre
tar -zxvf pcre-8.41.tar.gz
cd pcre-8.41
./configure --prefix=/server/pcre
make && make install

安裝Apache

apache編譯參數詳解:https://blog.51cto.com/superleedo/1890080

groupadd www
# 創建一個不允許登錄的用戶www 屬於www用戶組
useradd -g www www -s /bin/false
mkdir /server/httpd # apache安裝目錄
mkdir /server/www # web服務根目錄
tar -zxvf httpd-2.4.38.tar.gz
cd httpd-2.4.38
./configure --prefix=/server/httpd \
--with-apr=/server/apr \
--with-apr-util=/server/apr-util \
--with-pcre=/server/pcre \
--sysconfdir=/server/httpd/conf \
--datadir=/server/www \
--enable-so \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared  \
--enable-cache
make

make時,如果出現undefined reference to "XML_GetErrorCode"錯誤,需要安裝libxml2-devel,並重新編譯安裝apr-util

rm /server/apr-util/* -rf
cd /server/source/apr-util-1.6.1
make clean
./configure --prefix=/server/apr-util --with-apr=/server/apr
make && make install

然後重新執行httpd 編譯 configure
修改配置文件
vim /server/httpd/conf/httpd.conf
162行附近 修改User daemon 爲 www
163行附近 修改Group daemon 爲 www
193行附近 修改爲 ServerName 127.0.0.1:80
保存

chown -R www /server/www/*
cp /server/httpd/bin/apachectl /etc/init.d/httpd
# 啓動服務
/etc/init.d/httpd start

虛擬機測試可能需要關閉防火牆,或者開通對應端口
systemctl stop firewalld.service

安裝php

資源獲取

wget https://www.php.net/distributions/php-5.6.38.tar.gz
wget https://downloads.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

安裝libmcrypt

mkdir /usr/local/libmcrypt
tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt
make
make install

安裝php

tar -zxvf php-5.6.38.tar.gz
cd php-5.6.38
./configure --prefix=/server/php56 \
--with-apxs2=/server/httpd/bin/apxs \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--enable-mbstring \
--with-zlib \
--enable-sockets \
--with-curl \
--with-pcre-regex \
--with-mcrypt=/usr/local/libmcrypt \
--with-gd \
--with-png-dir \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-opcache

注意
如果在configure過程中出現如下錯誤

configure: error: Don’t know how to define struct flock on this
system, set --enable-opcache=no

解決辦法:

vim /etc/ld.so.conf.d/local.conf
# 添加2行
/usr/local/lib64   //64系統
# 如果是32位 則換成 /usr/local/lib
# libmcrypt源碼下的/lib/.libs
/usr/local/src/libmcrypt-2.5.7/lib/.libs
# 加載動態鏈接庫
ldconfig
# 重新configure

make
make install
cp /server/source/php-5.6.38/php.ini-development /server/php56/lib/php.ini
# 修改httpd配置文件
vim /server/httpd/conf/httpd.conf
# 添加如下內容
<FilesMatch "\.php$">
  SetHandler application/x-httpd-php
</FilesMatch>
# 啓動httpd服務
/etc/init.d/httpd start
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章