LAMP软件所需源码版本 | |
---|---|
httpd | 2.4.16 |
apr | 1.5.2 |
pcre | 8.37 |
apr-util | 1.5.4 |
mysql | 5.6.26 |
php | 5.6.13(yum装5.4.16) |
lsb_release -a #正常看版本cat /etc/redhat-release,这条也能查
Description: Red Hat Enterprise Linux Server release 7.6(Santiago)
uname -a
Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 GNU/Linux
yum groupinstall -y "Development Tools" "Development Libraries" #里面有很多系统依赖的环境
hostname LAMP ; su #192.168.1.43改成名字为LAMP的机器
#yum 后面有很多install的方式,如果我想安装rpm,可以localinstall 。 如果我此时安装redis,yum redis他会自动帮助你去解决依赖,而localinstall就单独帮你装这个包。
#如果客户端装了图形界面。linux图形具备firefox,实际已经开启了apache,要把他关掉和卸载 。
yum -y install gcc gcc-c++ openssl-devel
cd /opt ; yum -y install lrzsz #把源码包放到这个文件夹
rz lamp源码编译软件包.7z #7z在linux也能解压
yum -y install epel-release
yum provides */7z
yum -y install p7zip
7za e lamp源码编译软件包.7z -o/opt/ # e表示解压 , -o表示解压到哪(不要加空格)
3那么现在我们一个一个去装,先装我们的apache,而apache有两个依赖
tar xf apr-1.5.2.tar.gz -C /usr/local/src/ #解压到/usr/local/src
tar xf apr-util-1.5.4.tar.bz2 -C /usr/local/src/
cd /usr/local/src
cd apr-1.5.2
./configure --prefix=/usr/local/apr #正常情况下都会把三方软件安装在/usr/local/ ,给他起个名字/usr/loca/apr,有些小依赖甚至都不用指定目录
#会发现很多的no,只要没有error就不要怕 。 你会发现
rm: cannot remove 'libtoolT': No such file or directory #这不知道是正确还是错误的话就echo $?
echo $? #返回0则正确
make -j8 && make install -j8 #给他快一点
#安装成功,下一步进入 apr-util
cd ../apr-util-1.5.4/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ #注意要进行安装的路径同样也是 /usr/local/apr-util,但是前面介绍过apr-util是基于apr的, 得先装apr,还得告诉你apr在哪里。
#一般来说预编译单独执行,预编译没有问题,编译安装就可以同时执行
make -j8 && make install -j8
.#那么前两个搞定了,还剩四个。记住,大的包都是后面装
cd /opt #还得把这个pcre给装了
tar xf pcre-8.37.tar.bz2 -C /usr/local/src/
cd /usr/local/src/pcre-8.37/
./configure --prefix=/usr/local/pcre/
make -j8 && make install -j8
cd /opt
tar xf httpd-2.4.16.tar.bz2 -C /usr/local/src #命名方式统一
cd /usr/local/src/http-2.4.16
./configure --prefix=/usr/local/apache2.4 \ #我们说过,你们所有的攻击都是基于版本。所以命名的时候命名好,让后面有迹可循,比如版本号。所以在生产环境中,http是以apache加上版本号
--prefix=/usr/local/apache2.4 \
--enable-so \ #so是模块,如果我想对接到php就得用到enable-so这个东西 如果要看需要哪些此参数就 -help
--enable-rewrite \ #支持网站地址的重写,网站地址的重写是安全的选项
--enable-ssl \ #支持ssl加密,apache开启ssl有两种方式。一种是CA认证,一种是安装ssl模块
--with-apr=/usr/local/apr \ #我刚刚这三个包都是我的依赖,所以这三个包我要给他指出来
--with-apr-util=/usr/local/apr-util \ #一定都给出来
--with-pcre=/usr/local/pcre \ #后面跟/不跟都没关系
#后面参数如果是so,我们用enable去开启。如果是依赖源码的,我就用--with来进行链接
--enable-modules=most \ #开启我们大多数的模块功能
--enable-mpms-shared=all \ #咱们apache有三种工作模式,一个叫Perfork,一个worker,一个mpm。mpm表示我们的多进程处理模块。用all表示同时启用,都支持都用。
--with-mpm=event
make -j8 && make install -j8
chkconfig httpd off #同时让他不要开机自启
#现在/etc/init.d 里面没有apache2.4 没有就不用管他了。
#再后面你只要把脚本复制过来
cp -a /usr/local/apache2.4/bin/apachectl /etc/init.d/
chmod +x /etc/init.d/apachectl
vim /etc/init.d/apachectl #注意,在这里面需要加上几行
# chkconfig: 2345 64 36 #2345是指启动级别,64是开机顺序(表示在网卡服务后面) 36在network前面,apache要在network前面关 保存退出
/etc/init.d/apachectl start #启动很慢
AH00558: httpd: Could not reliably determine.......‘ServerName' directive globally to suppress this message
#这个不是报错,提示你要修改ServerName,实际这个解析叫做fqdn。
vim /usr/local/apache2.4/conf/httpd.conf
/ServerName #找这个,默认的改成自己
ServerName 192.168.1.43:80 #保存退出
/etc/init.d/apachectl restart #重启很快
chkconfig apchectl on #让他执行开机自启
ps -aux | grep apache #看一下,当你通过这种方式去看的时候会有什么问题
#默认用户是daemon 来看一下daemon的id
id daemon
\uid=2(daemon) gid=2(daemon) groups=2(daemon)
#这是一个可知的用户,假如有人入侵了你的系统,把这个daemon改成了可登录的,就出问题了。所以正常情况下会把这个daemon改一下
useradd -M -s /sbin/nologin apache #M表示不创建家目录
vim /usr/local/apache2.4/conf/httpd.conf #最快的方法是使用 !vim
/User #改成
User apache
Group apache #保存退出
/etc/init.d/apachectl restart #再次重启
id apache # 如果是6系统的话就是500以下
chown -R apache:apache /usr/local/apache2.4 #对应的家目录授权,因为你默认情况下他是root的
到此为止apache就搞定了。
cd /opt/
tar xf mysql-5.6.26.tar.gz -C /usr/local/src/
#从mysql5.5以后我们使用新的cmake编译方式,我们依赖于cmake,是跨平台的编译工具,所有的平台。他可以输出各种各样的makefile文件,project,预编译之后生成的
#而cmake又依赖于ncurses-devel
yum -y install ncurses-devel cmake
cd /usr/local/src/mysql-5.6.26
useradd -M -s /sbin/nologin mysql #进入来之后我们先创建用户,编译安装是必须起用户的
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #这里这些指定的都是绝对路径
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ #unix这个是安全套接层,也就是说.sock文件放在哪里。
-DDEFAULT_CHARSET=utf8 \ #默认字符集utf_8
-DDEFAULT_COLLATION=utf8_general_ci \ #默认的字符选择 utf8_general_ci
-DWITH_EXTRA_CHARSETS=all \ #这里是额外的字符集
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #后面的1表示支持这种引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \ #表示支持readline库
-DENABLED_LOCAL_INFILE=1 \ #开启本地的infile,允许本地导入infile,启用我们加载的数据
-DMYSQL_DATADIR=/usr/local/mysql/data \ #以及我们数据放在哪里
-DMYSQL_USER=mysql # 以及我们运行的用户是谁
#cmake很快但是make会很慢
#http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html 里面记录了所有编译的参数
#cmake至少要保证有2G的内存不然会卡在某个地方
make -j8 && make install -j8
chown -R mysql:mysql /usr/local/mysql/ #做一个属主属组的更改
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #如果你要启动mysql,你的启动脚本在哪里?mysql.server是我们的启动脚本
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
vim /etc/init.d/mysqld #先去更改启动脚本
/basedir
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data #前面再cmake指定的参数
chmod +x /etc/init.d/mysqld #加个可执行权限,没有可执行权限他是没有用的
chkconfig mysqld on #同时让mysql开机自启
#源码安装,初始化。
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql #初始化
OK
OK #正常来说应该是看到有两个OK的
# /usr/local/mysql/data/mysql 这个数据库存放了很多信息
ln -s /usr/local/mysql/bin/* /bin/ #我不做环境变量,直接做链接让系统调用
/etc/init.d/mysqld start #Success
netstat -lnt #找一下3306
mysql_secure_installation #优化,初始化
Enter current password for root: 输入空
Set root password : Y # 输入两次 123456
Remove annoymous users? Y
Disallow root login remotely? Y
Remove test databaees and access to it? Y
Reload privilege tables now? Y
mysql -uroot -p #此时必须要密码才能进入
#我们还需要做一些配置,先把php装了
yum -y install libxml2-devel #php的依赖还没有装,lib是功能库,xml是最早的编程语言,大多是用来写模板的。大多加上epel源都有这个依赖
cd /opt
tar xf php-5.6.13.tar.bz2 -C /usr/local/src/
cd /usr/local/src/php-5.6.13
./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql/ \ #你要连接数据库
--with-apxs2=/usr/local/apache2.4/bin/apxs \ #apache使用apxs工具将php编译成自身的一个模块,插入到自身
--with-config-file-path=/usr/local/php #指定一下主配置文件,php的主配置文件叫php.ini,其实默认的环境是有的,但是我们指定到新的目录下面去
#只要看到thank you for use php 基本上就没有什么问题了。一些no就是没有开启的功能模块,可以通过源码重新编译。
make && make install #用到的mysql连接,如果没有连接上,在预编译的时候就报错了。
#我们在apache上启用,跟mysql没有关系。一般编译问题是内存不够。环境检测会检测你缺失什么工具
libtool: install: install .libs/libphp5.so /usr/local/apache2.4/modules/libphp5.so #这个把libphp5.so装到哪里是有迹可查的
#如果你没有装的话,是不会再这个/usr/local/apache2.4/modules/ 下面出现php的
#此时在源码当中有一个 php.ini两个文件
php.ini-development
php.ini-production
#development是开发环境或测试环境,而production是生产环境。如果我是这正工作肯定是放production
cp php.ini-production /usr/local/php/php.ini
#在 /usr/local/apache2.4/modules/ 有一个 httpd.exp 文件 还有一个 libphp5.so 都是绿颜色的
#安装好了之后再进行一个所谓的搭配,你是模块我肯定是去控制php。可以看一眼这里
vim /usr/local/php/php.ini
[Date] #正常的话你得跟个时区
date.timezone = Asia/Shanghai #因为我们有很多的监控zabbix,elk都要用到时区,你没有的话我每次都需要重启一下
#但是如果我要把他嵌入到apache我肯定是要控制apache。找到配置文件
vim /usr/local/apache2.4/conf/httpd.conf`
/Directory #先找到这个
<IfModule dir_module> #这是默认的首页,还能是html吗?
DirectoryIndex index.php index.html #你们安装apache的时候已经默认带了index.html了,他这里会按顺序读。要不然不html删掉。
</IfModule>
/AddType #找一下这个,这块有两个
AddType application/x-compress .Z #这一看就是压缩,也就是apache支持.gz .tgz这样的文件。有时候我们一点到链接就下载了,其实就是通过这种方式支持的。
AddType application/x-gzip .gz .tgz #这两个是我们以前有的,所以不用管它,我们要加两个
AddType application/x-httpd-php .php #用它来支持我们php的文件
AddType application/x-httpd-php-source .phps #前面有个替代就好了,php的源码``
#有空格
cd /usr/local/apache2.4/htdocs #这是你默认的网页目录
cat index.html
<html><body><h1>It works !</h1></body></html>
#我们进入到这里创建一个页面
vim index.php #php的测试页
<?php
phpinfo();
?>
/etc/init.d/apachectl restart #重启apache
systemctl stop firewalld
iptables -F
setenforce 0
rz wordpress-4.8.zip
yum -y install unzip
#wordpress和discuz都是集成软件,他的一些功能开发人员都已经帮你写好了,你拿来之后解压。你会得到很多的目录
ls -l #你会看到很多的目录,我们要把他全部复制到默认的下面去
cp -a ./* /usr/local/apache2.4/htdocs/
/etc/init.d/apachectl restart
mysql -uroot -p #用户名,数据库,密码都统一为wordpress,注意Table Prefix 这里不用改
create database wordpress;
grant all on wordpress.* to 'wordpress'@'localhost' identified by 'wordpress';
flush privileges;
开始安装。