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();
?>