超详细介绍源码编译构建LAMP

####编译安装HTTP服务####

#####安装Apache所需软件#####
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz
####将上面3个包传到opt目录下####
[root@localhost ~]# cd /opt
[root@localhost opt]# ll
总用量 8020
-rw-r–r-- 1 root root 1071074 8月 4 17:33 apr-1.6.2.tar.gz
-rw-r–r-- 1 root root 565507 8月 4 17:33 apr-util-1.6.0.tar.gz
-rw-r–r-- 1 root root 6567926 8月 4 17:33 httpd-2.4.29.tar.bz2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh

[root@localhost opt]# tar xf apr-1.6.2.tar.gz
[root@localhost opt]# tar xf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xf httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

######软件包说明:apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz(工具)是跨平台的组件包####
要测APR给tomcat带来的好处最好的方法是在慢速网络上(模拟Internet),将Tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,
新的请求会毫无阻塞的进来。
APR对于Tomcat最大的作用就是socket调度。你在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以
生产环境下用apr是非常必要的。
##################安装环境#######
[root@localhost opt]#
yum -y install
gcc
gcc-c++
make
pcre-devel
expat-devel
perl
####依赖环境包包说明####
gcc ###C语言的编译器
gcc-c++ ###C++的编译器
make ###源代码编译(源代码转换成二进制文件)
pcre-devel ###支持正则表达式
expat-devel ###网站解析HTML文件
perl ###perl编译器

#########################
[root@localhost opt]# cd /opt/httpd-2.4.29/

./configure
–prefix=/usr/local/httpd
–enable-so
–enable-rewrite
–enable-charset-lite
–enable-cgi
####配置模块解释####
–prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
–enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
–enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
–enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码
–enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。
###编译及安装###
make && make install ###先make -j3 然后make install -j3是你核心数,最大不要超过虚拟机的核心数

####优化执行路径####
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
httpd -v ###查看下HTTP版本
###建立[service].service 配置文件添加系统给服务####
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,
用于控制由 systemd 管理或监控的 httpd 服务
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
[root@localhost ~]# cd /lib/systemd/system/
[root@localhost system]# vim httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

[root@localhost system]# systemctl start httpd.service
[root@localhost system]# systemctl enable httpd.service ###开机自启http
[root@localhost system]# systemctl is-enabled httpd.service ###检查HTTP单元是否启动
####httpd.conf修改配置文件###
vi /usr/local/httpd/conf/httpd.conf
ServerName www.51xit.top:80 ###更改下

systemctl restart httpd####重启httpd服务

###############配置文件解读##################
1.全局配置项
全局配置决定 httpd 服务器的全局运行参数,使用“关键字 值”的配置格式。例如, 配置网站名称时使用的“ServerName www.kgc.com”,其中“ServerName”为配置关键字, 而“www.kgc.com”为对应的值。 每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了 httpd.conf 文件中最常用的一些全局配置项
ServerRoot “/usr/local/httpd”
Listen 80
User daemon
Group daemon
ServerAdmin webmaster@kgc.com
ServerName www.kgc.com
DocumentRoot “/usr/local/httpd/htdocs”
DirectoryIndex index.htmlindex.php
ErrorLog “logs/error_log”
LogLevel warn
CustomLog logs/access_log
common PidFile logs/httpd.pid
AddDefaultCharset UTF-8
Include conf/extra/httpd-default.conf

在上述设置行中,各全局配置项的含义如下
ServerRoot:设置 httpd 服务器的根目录,该目录下包括了运行 Web 站点必需的子
目录和文件。默认的根目录为/usr/local/httpd,与 httpd 的安装目录相同。在 httpd.conf 配置文件中,如果指定目录或文件位置时不使用绝对路径,则目录或文 件位置都认为是在服务器的根目录下。 ?
Listen:设置 httpd 服务器监听的网络端口号,默认为 80
User:设置运行 httpd 进程时的用户身份,默认为 daemon
Group:设置运行 httpd 进程时的组身份,默认为 daemon
ServerAdmin:设置 httpd 服务器的管理员 E-mail 地址,可以通过此 E-mail 地址及 时联系 Web 站点的管理员
ServerName:设置 Web 站点的完整主机名(主机名+域名)
DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置 项比较容易和 ServerRoot 混淆,需要格外注意
DirectoryIndex:设置网站的默认索引页(首页),可以设置多个首页文件,以空格 分开,默认的首页文件为 index.html
ErrorLog:设置错误日志文件的路径,默认路径为 logs/error_log。 ? LogLevel:设置记录日志的级别,默认级别为 warn(警告)
CustomLog:设置访问日志文件的路径、日志类型,默认路径为 logs/access_log, 使用的类型为 common(通用格式)
PidFile:设置用于保存 httpd 进程号(PID)的文件,默认保存地址为 logs/httpd.pid, logs 目录位于 Apache 的服务器根目录下
AddDefaultCharset:设置站点中的网页默认使用的字符集编码,如 UTF-8、gb2312
Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单 独的文件中,再使用 Include 配置项将其包含到 httpd.conf 文件中,这样便于独立 进行配置功能的维护而不影响主配置文件。 以上配置项是 httpd.conf 文件中主要的全局配置项。还有其他很多配置项

2.区域配置项
除了全局配置项以外,httpd.conf 文件中的大多数配置是包括在区域中的。区域
配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形
###定义"/“目录区域的开始
Options FollowSymLinks ###控制选项,允许使用符号链接
AllowOverride None ###不允许隐含控制文件中的覆盖配置
Require all denied ###禁止任何人访问此区域
###定义”/"目录区域的结束

###用系统的浏览器验证###
netstat -anpt | grep 80
验证成功
(注意,网页默认显示内容为:/usr/local/httpd/htdocs/index.html)

#########安装mysql######

yum -y install
ncurses
ncurses-devel
bison
cmake

useradd -s /sbin/nologin mysql

###上传mysql-boost-5.7.20.tar.gz到opt目录下###
cd /opt
tar xf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/

cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
-DSYSCONFDIR=/etc
-DSYSTEMD_PID_DIR=/usr/local/mysql
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DMYSQL_DATADIR=/usr/local/mysql/data
-DWITH_BOOST=boost
-DWITH_SYSTEMD=1

####配置选项含义###
1、DCMAKE_INSTALL_PREFIX:指定将 mysql 数据库程序安装到某目录下,
如目录/usr/local/ mysql。
2、DMYSQL_UNIX_ADDR:指定套接字文件的存储路径,数据库连接的文件
3、DSYSCONFDIR:指定初始化参数文件目录
3、DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8。
5、DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci 是适用于 UTF-8 字符集的通用规则。
6、DWITH_INNOBASE_STORAGE_ENGINE=1 :安装INNOBASE存储引擎
7、DWITH_ARCHIVE_STORAGE_ENGINE=1 :安装ARCHIVE存储引擎
8、DWITH_BLACKHOLE_STORAGE_ENGINE=1 :安装ARCHIVE存储引擎
9、DWITH_PERFSCHEMA_STORAGE_ENGINE :安装FEDERATED存储引擎

指定安装文件的安装路径时常用的选项:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 指定安装路径
-DMYSQL_DATADIR=/data/mysql 数据安装路径
-DSYSCONFDIR=/etc 配置文件的安装路径

由于MySQL支持很多的存储引擎而默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:

-DWITH_INNOBASE_STORAGE_ENGINE=1 安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 安装BLACKHOLE存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 安装FEDERATED存储引擎

若要明确指定不编译某存储引擎,可以使用类似如下的选项:

-DWITHOUT__STORAGE_ENGINE=1

比如:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 不启用或不编译EXAMPLE存储引擎
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1

如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:

-DWITH_READLINE=1
-DWITH_SSL=system 表示使用系统上的自带的SSL库
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0

其它常用的选项:

-DMYSQL_TCP_PORT=3306 设置默认端口的
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock MySQL进程间通信的套接字的位置
-DENABLED_LOCAL_INFILE=1 是否启动本地的LOCAL_INFILE
-DEXTRA_CHARSETS=all 支持哪些额外的字符集
-DDEFAULT_CHARSET=utf8 默认字符集
-DDEFAULT_COLLATION=utf8_general_ci 默认的字符集排序规则
-DWITH_DEBUG=0 是否启动DEBUG功能
-DENABLE_PROFILING=1 是否启用性能分析功能

##################################################################################################

------注意:如果在CMAKE的过程中有报错—
当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
------注意:make: *** No targets specified and no makefile found. Stop.解决方法
1、wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
2.、tar zxvf ncurses-5.6.tar.gz
3、 ./configure -prefix=/usr/local -with-shared-without-debug
4、make
5、make install

###############################################################################################

######编译安装####

make && make install

#####数据库目录进行权限调整###

chown -R mysql:mysql /usr/local/mysql/

#####建立调整配置文件########

vi /etc/my.cnf

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

chown mysql:mysql /etc/my.cnf

#######设置环境变量####

echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH’ >> /etc/profile
echo ‘export PATH’ >> /etc/profile
source /etc/profile

cd /usr/local/mysql/

bin/mysqld
–initialize-insecure
–user=mysql
–basedir=/usr/local/mysql
–datadir=/usr/local/mysql/data

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306

mysqladmin -u root -p password “abc123” //刚开始没密码是空的直接回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的

mysql -u root -p ##这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123

####################安装PHP环境#####

yum -y install
libjpeg
libjpeg-devel
libpng libpng-devel
freetype freetype-devel
libxml2
libxml2-devel
zlib zlib-devel
curl curl-devel
openssl openssl-devel

-------------以下两行可能用不到-----------
vi /usr/local/httpd/bin/apxs
#!/usr/bin/perl -w

#######上传php-7.1.10.tar.bz2包到opt目录下#####
cd /opt
tar xjvf php-7.1.10.tar.bz2
cd php-7.1.10
./configure
–prefix=/usr/local/php
–with-apxs2=/usr/local/httpd/bin/apxs
–with-mysql-sock=/usr/local/mysql/mysql.sock
–with-mysqli
–with-zlib
–with-curl
–with-gd
–with-jpeg-dir
–with-png-dir
–with-freetype-dir
–with-openssl
–enable-mbstring
–enable-xml
–enable-session
–enable-ftp
–enable-pdo
–enable-tokenizer
–enable-zip

#######编译详解#####
1、prefix=/usr/local/php ###指定将 PHP 程序安装到哪个目录下
2、with-apxs2=/usr/local/httpd/bin/apxs ###设置 Apache HTTP Server 提供的 apxs 模块支持程序的文件位置
3、with-mysql-sock=/usr/local/mysql/mysql.sock ###指定mysql的mysql.sock位置
4、with-mysqli ###mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。
5、with-zlib ###支持zlib功能–压缩流
6、with-curl ###开启curl扩展功能
libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。PHP中使用cURL实现Get和Post请求的方法
7、with-gd ###激活gd库的支持
8、with-jpeg-dir ###要激活 jpeg 的支持
9、with-png-dir ###要激活png的支持
10、enable-mbstring ###启用多字节字符串功能,以便支持中文等代码。

make && make install

cp php.ini-development /usr/local/php/lib/php.ini ###将php.ini-development开发样板,复制到生产环境中去

vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai

/usr/local/php/bin/php -m //验证安装的模块

vi /etc/httpd.conf ####在合适位置新增

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndex index.php index.html

rm -f /usr/local/httpd/htdocs/index.html
vi /usr/local/httpd/htdocs/index.php

<?php phpinfo(); ?>

systemctl restart httpd

http://192.168.32.21/

mysqladmin -uroot -p password ‘abc123’
这个地方回车后,输入是初始密码,我们这边安装的初始密码是空的。回车即可
--------下面测试数据库工作是否正常-----
mysql -u root -p

CREATE DATABASE myadm;
GRANT all ON myadm.* TO ‘myadm’@’%’ IDENTIFIED BY ‘admin123’;
GRANT all ON myadm.* TO ‘myadm’@‘localhost’ IDENTIFIED BY ‘admin123’;
flush privileges;

vi /usr/local/httpd/htdocs/index.php

<?php $link=mysqli_connect('192.168.32.21','myadm','admin123'); if($link) echo "Success!!"; else echo "Fail!!"; ?>

########http://192.168.32.21/测试下###

#########上传phpMyAdmin-4.7.6-all-languages.zip到opt下面#####

—以下安装phpMyadmin------
cd /opt
unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
cd /usr/local/httpd/htdocs/myadm
cp config.sample.inc.php config.inc.php

vi config.inc.php

c f g [ ′ S e r v e r s ′ ] [ cfg['Servers'][ cfg[Servers][i][‘host’] = ‘127.0.0.1’; //把localhost 改成IP 31行

http://192.168.32.21/myadm
使用root 以及前面为root配置的密码登录管理系统。可以对数据库进行管理操作了

######问题1######
2019-02-20T10:25:17.505498Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

解决方案:在打开my.cf(可用记事本打开),找到“[mysqld]”设置项,添加代码:

#开启查询缓存
explicit_defaults_for_timestamp=true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值