1、查看系統版本
[niemx@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
2、安裝軟件准備
(1)apr-1.5.2.tar.bz2
Apache可移植運行時(APR)是Apache web服務器的支持庫。它提供了一組映射到底層操作系統(OS)的應用程序編程接口(api)。如果操作系統不支持特定的功能,APR將提供一個仿真。因此,程序員可以使用APR使程序跨不同平台進行移植。APR對於Tomcat最大的作用就是socket調度。
下載地址http://archive.apache.org/dist/apr/apr-1.5.2.tar.bz2
(2)apr-util-1.5.4.tar.bz2
apr-util和apr都是為上層應用提供的運行庫。為沒有stl庫的C語言提供了一些數據結構和操作系統封裝接口。顯然apache的許多軟件都是以apr/apr-util為基礎庫進行開發的。apr-util只是在apr的基礎上提供了更多的數據結構和操作系統封裝接口而已。
下載地址http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.bz2
(3)pcre-8.43.tar.gz
PCRE(PerlCompatibleRegularExpressions)是一個Perl庫,包括perl兼容的正則表達式庫。這些在執行正規表達式模式匹配時用與Perl5同樣的語法和語義是很有用的。httpd編譯過程需要依賴於pcre-devel軟件包。
下載地址https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
(4)httpd-2.4.41.tar.gz
httpd為Apache HTTP服務器程序。直接執行程序可啟動服務器的服務。
下載地址http://www.apache.org/dist/httpd/httpd-2.4.41.tar.gz
(5)mysql-5.6.25.tar.gz
先查看linux版本,下載mysql源碼包時要選擇對應的系統的源碼包。
[niemx@localhost ~]$ uname -a
Linux localhost.localdomain 3.10.0-957.10.1.el7.x86_64 #1 SMP Mon Mar 18 15:06:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
下載地址https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.46.tar.gz
(6)php-5.6.37.tar.bz2
下載地址https://www.php.net/distributions/php-5.6.37.tar.bz2
**直接在linux中下載源碼包可能比較慢,可以在windows中下載好,然后安裝lrzsz,使用SecureCRT傳輸到linux服務器**
3、編譯安裝apache
(1)安裝apr
# tar -xjvf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install
(2)安裝apr-util
# tar -xjvf apr-util-1.5.4.tar.bz2
# cd apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
(3)安裝pcre
# tar -zxvf pcre-8.43.tar.gz
# cd pcre-8.43
# ./configure --prefix=/usr/local/pcre
# make && make install
(4)創建用戶、組
# groupadd -r apache
# useradd -r -g apache apache
(5)安裝httpd
# tar -zxvf httpd-2.4.41.tar.gz
# cd httpd-2.4.41
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
---------------------------------------------------------------------------------------------------
出現如下錯誤:
**checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not be built due to prerequisite failures**
沒有安裝openssl-devel
解決方式:yum install openssl-devel
然后重新執行./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
---------------------------------------------------------------------------------------------------
#make && make install
(6)配置apache並設置開機啟動
# vi /etc/httpd/httpd.conf
(1)搜索ServerName www.example.com:80 去掉前面的注釋
(2)修改DocumentRoot到/home/htdocs,以及這一行下面的一句中的<Directory到/home/htdocs 這個是www的根目錄設置
# mkdir -p /home/htdocs
# cp /usr/local/apache/htdocs/index.html /home/htdocs
# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
# vi httpd 在第一行下添加如下兩行文字(#!/bin/sh下面)
# chkconfig: 2345 90 90 #注意前面要加上#號
# description:http server #注意前面要加上#號
注冊該服務
# chkconfig --add httpd #所有開機模式下自啟動
# chkconfig httpd on #345開機模式下自啟動
(7)關閉防火牆,驗證apache是否安裝成功
查看防火牆狀態
# systemctl status firewalld.service
臨時關閉防火牆
# systemctl stop firewalld.service
永久關閉防火牆
# systemctl status firewalld.service
啟動apache
# /usr/local/apache/bin/apachectl start
瀏覽器訪問服務器IP地址,出現“It works”表示apache安裝成功
關閉apache
# /usr/local/apache/bin/apachectl stop
4、編譯安裝MySQL
(1)創建用戶、組
# mkdir /usr/local/mysql
# mkdir /home/data
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /home/data mysql
# chown -R mysql:mysql /home/data
# chown -R mysql:mysql /usr/local/mysql
(2)安裝
從mysql5.5起,mysql源碼安裝開始使用cmake了,設置源碼編譯配置腳本
# yum -y install cmake
# yum -y install ncurses-devel
# tar -xzvf mysql-5.6.46.tar.gz
# cd mysql-5.6.46
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
# make && make install
(3)初始化mysql數據庫
拷貝啟動的服務腳本
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chmod 700 /etc/init.d/mysqld
改變環境變量
# echo 'PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
# source /etc/profile
修改配置文件
# vim /etc/my.cnf
[mysqld]
server_id=1
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
log_bin=/usr/local/mysql/mysql-bin
log_error=/var/log/mysql.log
character-set-server=utf8
[client]
socket=/usr/local/mysql/mysql.sock
忘記mysql的登錄密碼了
vi /etc/my.cnf
在最后一行添加上:skip-grant-tables
保存退出,重啟mysql,
mysql>use mysql;
mysql> UPDATE user SET authentication_string= password ( 'root' ) WHERE User = 'root' ;//單引號內的字符即使需要設置的新密碼(無password字段的版本)
mysql>update user set password=password('root') where user='root';(有password字段的版本)
mysql>quit;
刪除/etc/my.cnf文件里面的“skip-grant-tables”。最后重啟,輸入新密碼就可以了。
5、編譯安裝PHP
(1)解決依賴關系
# yum -y install bzip2-devel libmcrypt-devel libxml2-devel
安裝libmcrypt-devel 需要配置epel源
# rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
# yum clean all
# yum makecache
# yum update
# yum install -y libmcrypt-devel
(2)安裝php
# tar -xjvf php-5.6.37.tar.bz2
# cd php-5.6.37
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
# make && make install
(3)修改配置
# cp php.ini-production /etc/php.ini
# vim /etc/httpd/httpd.conf
<IfModule unixd_module>
...
User apache
Group apache
...
</IfModule>
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mime_module>
...
AddType application/x-httpd-php .php
...
</IfModule>
重新啟動httpd
# service httpd restart
------------------------------------------------------------------
**/usr/local/apache/bin/apachectl: line 95: lynx: command not found**
錯誤解決方式: # yum install lynx -y
-----------------------------------------------------------------
(4)編寫測試代碼
測試頁面index.php示例如下:
<?php
$link = mysql_connect('127.0.0.1','root','root');
if ($link)
echo "mysql connected success.";
else
echo "mysql connected faild.";
mysql_close();
phpinfo();
?>