day23学习笔记(4月2日)

编译安装LAMP架构(最小化安装系统)

编译环境说明

Linux
Apache(2.4)
MySQL(5.6.31)
PHP(7.2.17)

说明

编译安装顺序,由于软件之间存在依赖性,会有先后顺序。

  1. apache必须要先于php安装
  2. apache和mysql之间并没有直接先后顺序的依赖,所以谁先谁后没所谓。
  3. 在php-5.3版本前,mysql必须先于php的编译;因为php需要实现连接数据库的功能,它通过mysql的接口才能编译出该功能;
  4. 在php-5.3版本或者之后,php已经集成了一套连接mysql数据的代码,并不依赖mysql的接口,这个时候,mysql和php的编译顺序也就无所谓了。

配置YUM源,安装基础软件

配置两个阿里的yum源

cd   /etc/yum.repos.d/
mkdir    backup

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

mv   ./*.repo   ./backup     #备份yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

#清除缓存
yum   clean  all         
rm -rf /var/cache/yum

#生成新的缓存
yum  makecache

#在机器上安装上一些基础软件
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel  zip  unzip   gzip vim wget  cmake pcre-devel  libcurl-devel  libxml2-devel  libxml2-devel libjpeg-devel  libpng-devel   freetype-devel -y

#linux很多软件的运行,依赖于操作系统本身的一些软件支持
yum groupinstall "Development tools" -y

#桌面开发工具包(图形化相关包)
yum groupinstall "Desktop Platform Development" -y 


关闭防火墙

getenforce     #查看selinux状态是( enforcing运行中、permissive临时关闭开机还会自启、disabled永久关闭 )

setenforce 0   #切换selinux的状态

vim  /etc/selinux/config    #修改selinux配置文件,永久关闭
 7 SELINUX=disabled

iptables   -F          #清空防火墙规则 
systemctl   stop   firewalld    #关闭防火墙
systemctl   disable   firewalld    #永久关闭防火墙
systemctl   is-enabled    firewalld   #检查防火墙状态

reboot    #重启机器

编译安装mysql

#创建mysql用户
useradd -r -s /sbin/nologin mysql

#创建目录,进入解压目录
cd   /usr/local/
mkdir   software_mysql
cd  software_mysql/

#下载,解压缩,进入目录
wget -c https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.6/mysql-5.6.50.tar.gz
tar  -zxf mysql-5.6.50.tar.gz 
cd  mysql-5.6.50


# 创建编译脚本,设置编译参数
vim   cmake.sh
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql

=====================================================================================================
关于编译传输的解析
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \            安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data \                数据目录
-DENABLED_LOCAL_INFILE=1 \                                    开启加载外部文件功能;1开启,0关闭
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                        将InnoDB存储引擎静态编译到服务器
-DMYSQL_TCP_PORT=3306 \                                        端口
-DDEFAULT_CHARSET=utf8mb4 \                                字符集
-DDEFAULT_COLLATION=utf8_general_ci \                    字符校验规则
-DWITH_EXTRA_CHARSETS=all \                                扩展字符集
-DMYSQL_USER=mysql                                            用户身份mysql

=====================================================================================================


#增加执行权限,执行脚本
chmod  +x  cmake.sh
./cmake.sh

#编译且安装
make  && make  install

#修改mysql安装目录的属主属组
chown  -R   mysql.mysql   /usr/local/mysql

#移除默认的mysql配置文件,改名即可
mv   /etc/my.cnf   /etc/my.cnf.ori

#进入mysql安装目录,开始初始化
cd   /usr/local/mysql
./scripts/mysql_install_db --user=mysql

#拷贝脚本,放入linux一个固定的服务启动目录
 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
 
 #配置环境变量
 vim  /etc/profile
 export PATH=/usr/local/mysql/bin/:$PATH
 source /etc/profile
 echo  $PATH
 
 
 #启动启动、检查mysql服务
 service mysql start
 
 #设置mysql默认密码
 /usr/local/mysql/bin/mysqladmin -uroot password '666'
 
#登录mysql
 mysql -uroot -p666
 mysql> show databases;
 mysql> select  version();
  mysql> exit;

编译安装apache

#安装依赖包apr
apr(apache portable run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。

#下载、解压缩
mkdir  /usr/local/software_apache
wget -c http://archive.apache.org/dist/apr/apr-1.5.2.tar.bz2
tar   -xf apr-1.5.2.tar.bz2 

#进入文件,修改配置参数,编译且安装
cd apr-1.5.2
vim configure
29605     RM='$RM -f'
./configure
make  && make  install

#安装apr-util软件
完整的APR(Apache portable Run-time libraries,Apache可移植运行库)实际上包含了三个开发包:apr、apr-util以及apr-iconv,每一个开发包分别独立开发,并拥有自己的版本。apr-util该目录中也是包含了一些常用的开发组件。
这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等

#进入目录,下载,解压缩
cd  /usr/local/software_apache
wget -c https://archive.apache.org/dist/apr/apr-util-1.5.4.tar.bz2
tar  -xf    apr-util-1.5.4.tar.bz2 
cd  apr-util-1.5.4

#开始编译安装apr-utils ,且需要指定安装的apr命令路径
./configure --with-apr=/usr/local/apr/bin/apr-1-config
make  &&   make  install

#ldconfig命令
一般来说,库文件安装到/lib,/lib64,/usr/lib/,/usr/lib64等,都可以找得到; 但是如果一个软件A把库文件安装到/usr/local/A/lib下,就要把这个路径加入到ldconfig命令可以找到的路径列表里面去,别人才能找到。
ldconfig是一个动态链接库管理命令;主要用途是在默认搜索目录(/lib,/lib64,/usr/lib/,/usr/lib64)以及动态库配置文件/etc/ld.so.conf中所列的目录中搜索出可共享的动态链接库。

#方法一:在/etc/ld.so.conf这个主配置文件里加上一行,写上让别人要查找库文件的路径
echo "/usr/local/apr/lib/" >> /etc/ld.so.conf

#方法二:在/etc/ld.so.conf.d/目录下创建一个*.conf结尾的文件,里面加入该路径即可    

# echo /usr/local/apr/lib/ > /etc/ld.so.conf.d/lamp.conf
# ldconfig      上面加入路径后,就使用此命令让其生效

#编译安装httpd
#进入目录,下载,解压缩,写配置脚本
cd   /usr/local/software_apache
 wget -c https://archive.apache.org/dist/httpd/httpd-2.4.37.tar.bz2
 tar  -xf   httpd-2.4.37.tar.bz2
 cd  httpd-2.4.37
 
 vim   apache-configure.sh
 ./configure \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--with-pcre \
--enable-ssl \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config

#修改权限,开始配置,编译且安装
chmod   +x  apache-configure.sh
./apache-configure.sh 
make  &&  make install

=====================================================================================================
# ./configure 
--enable-modules=all                  加载所有支持模块
--enable-mods-shared=all               共享方式加载大部分常用的模块
--enable-so                           启动动态模块加载功能
--enable-rewrite                      启用url地址重写功能
--enable-ssl                             编译ssl模块,支持https
--with-pcre                             支持正则表达式
--with-apr=/usr/local/apr/bin/apr-1-config     指定依赖软件apr路径
--with-apr-util=/usr/local/apr/bin/apu-1-config
--with-mpm=prefork    插入式并行处理模块,称为多路处理模块,Prefork 是类UNIX平台上默认的MPM

(1)prefork
    多进程模型,每个进程响应一个请求
(2)worker
    多进程多线程模型,每个线程处理一个用户请求 
(3)event(最优)
    事件驱动模型,多进程模型,每个进程响应多个请求
=====================================================================================================


编译安装PHP

#下载、解压缩
mkdir  /usr/local/software_php
cd   /usr/local/software_php
wget -c https://museum.php.net/php7/php-7.2.17.tar.xz
tar   -xf php-7.2.17.tar.xz 


#进入文件,写配置脚本,执行脚本,编译且安装
 cd  php-7.2.17

vim   configure_php.sh

./configure \
--with-openssl \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysqli \
--with-pdo-mysql \
--with-zlib \
--with-curl \
--enable-zip \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-opcache \
--enable-mbstring \
--enable-mbregex \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-calendar \
--enable-bcmath


#修改权限,开始配置,编译且安装
chmod +x configure_php.sh
./configure_php.sh
make  &&  make  install

=====================================================================================================
--with-openssl       开放式安全套接层协议
--with-apxs2=/usr/local/apache2/bin/apxs
指定apxs路径,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具
--with-mysql        php7中已被废弃
--with-mysqli    
--with-pdo-mysql
以上三个是php的扩展,用于连接mysql数据库的
--with-iconv-dir
--with-freetype-dir
--with-jpeg-dir
--with-png-dir
--with-gd
--with-zlib
--with-libxml-dir
这些都是在启用对某种文件的支持
--with-curl 和 --with-curlwrappers
用于支持 curl 函数,此函数允许你用不同的协议连接和沟通不同的服务器
--with-openssl,--with-mhash,--with-mcrypt
这都是和加密有关的参数,启用它们是为了让php可以更好的支持各种加密。
--enable-bcmath                            高精度数学运算组件。
--enable-shmop和 --enable-sysvsem        
使得你的PHP系统可以处理相关的IPC函数.IPC是一个Unix标准通讯机制,它提供了使得在同一台主机不同进程之间可以互相通讯的方法。
--enable-inline-optimization        栈堆指针和优化线程。
--enable-pcntl                            多线程优化。

with-apxs2        调用apache加载模块支持PHP
gd                  画图库
libiconv         字符变换转换
libmcrypt         字符加密
mcrypt              字符加密
mhash               哈希运算
=====================================================================================================

结合php和apache配置

1、修改apache配置文件支持php

vim  /usr/local/apache2/conf/httpd.conf

161 LoadModule negotiation_module modules/mod_negotiation.so   去掉#,打开此选项

484 Include conf/extra/httpd-languages.conf  打开此选项,扩展配置文件就生效了

让apache支持php语言的插件,当有用户访问php程序时,apache自动转发给php程序去解析。
168 LoadModule php7_module        modules/libphp7.so   找到这一行,然后在下面添加语句
添加以下两行意思是以.php结尾的文件都认为是php程序文件,注意两句话的.php前面都是有一个空格的
也就是长这样
168 LoadModule php7_module        modules/libphp7.so
169 AddHandler php7-script .php
170 AddType text/html .php

添加一个默认的网站首页,添加为php的文件
265 # DirectoryIndex: sets the file that Apache will serve if a directory
266 # is requested.
267 #
268 <IfModule dir_module>
269     DirectoryIndex index.php  index.html
270 </IfModule>

关于网站默认的首页html文件,存放的目录路径,由以下参数控制
231 # DocumentRoot: The directory out of which you will serve your
232 # documents. By default, all requests are taken from this directory, bu    t
233 # symbolic links and aliases may be used to point to other locations.
234 #
235 DocumentRoot "/usr/local/apache2/htdocs"
236 <Directory "/usr/local/apache2/htdocs">
=====================================================================================================

#修改apache的子配置文件,优先支持中文,需要做如下两步操作
vim /usr/local/apache2/conf/extra/httpd-languages.conf
 
 19  DefaultLanguage zh-CN

 72 # LanguagePriority allows you to give precedence to some languages
 73 # in case of a tie during content negotiation.
 74 #
 75 # Just list the languages in decreasing order of preference. We have
 76 # more or less alphabetized them here. You probably want to change this    .
 77 #
 78 LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz     nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW 
 79 #LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl n    n no pl pt pt-BR ru sv tr zh-CN zh-TW 

#修改apache的域名,也就是我们网站的域名配置(暂时忽略)
 210 ServerName yan-lamp.cc

2、测试apache是否支持php

#进入apache网页根目录,创建一个php文件,查找
cd   /usr/local/apache2/htdocs
vim   index.php
<?php
    phpinfo();
?>

3、启动apache

#拷贝apache默认提供的一个脚本即可,就是启动apache的命令
cp /usr/local/apache2/bin/apachectl /etc/init.d/apache
service apache start

使用浏览器访问网页,如果能看到php页面则正常

部署web应用

1.下载源码
cd  /opt
wget -c https://cn.wordpress.org/wordpress-4.7.3-zh_CN.tar.gz

2.创建目录,保存wordpress的代码
mkdir -p /www/yan-blog
tar -zxf wordpress-4.7.3-zh_CN.tar.gz
cp -a wordpress/*  /www/yan-blog/

3.更改wordpress源码属主属组
chown -R daemon.daemon /www/yan-blog

4.准备网站上线发布(给apache添加一个新配置文件,专门发布我们这个wordpress)虚拟主机
 vim /usr/local/apache2/conf/httpd.conf
493 # Virtual hosts
494 Include conf/extra/httpd-vhosts.conf

5.修改该虚拟主机配置文件,添加关于wordpress的配置信息

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/www/yan-blog"
    ServerName yan-wordpress.cc
    ErrorLog "logs/blog-error_log"
    CustomLog "logs/blog-access_log" common
</VirtualHost>

6.关于hosts文件修改,做好域名解析
vim /etc/hosts
192.168.0.170 yan-lamp.cc
192.168.0.170 yan-wordpress.cc
                              
7.mysql数据库配置,写博客,数据往mysql里面存。密码yuchao666
 mysql -uroot -p666
 create database yan_blog default charset utf8;
service apache restart

测试访问wordpress

测试访问wordpress

#记得做好本地域名解析
vim  /etc/hosts
192.168.0.170  yan-wordpress.cc

发现提示Forbidden,也就是禁止访问了,这种是403错误,权限不足,并且要知道,这是apache给的响应,只要去找apache的配置就行。

修改apache配置,添加可访问权限
修改这里Require all denied        默认拒绝所有,改为Require all granted

vim  /usr/local/apache2/conf/httpd.conf

214 # Deny access to the entirety of your server's filesystem. You must
215 # explicitly permit access to web content directories in other 
216 # <Directory> blocks below.
217 #
218 <Directory />
219     AllowOverride none
220     Require all granted

成功的页面

总结

1.关于源码编译的记录

# 通过指定参数,来确认你想要安装的软件安装在哪里,加上哪些功能和去掉哪些功能
./configure 或者 cmake
# 如果这一步报错,基本都是缺少依赖包,解决办法:

1>    使用yum去安装,一般来说,rhel/centos做为一个成熟的linux操作系统,常见的底层依赖包都自带了,所以安装下面这两个组,一般都会有你所需要的依赖包。
# yum groupinstall "Development tools" -y
# yum groupinstall "Desktop Platform Development" -y 

2>    如果缺少依赖包在rhel/centos的yum源里找不到,则上网下载第三方的软件,先编译第三方软件,再编译本软件

2、关于./configure的参数解释

./configure --help 查看所有的编译参数
第一个重要参数
--prefix=    此参数指定安装目录(一般安装到/usr/local/或者/usr/local/软件名下)
注意:如果指定了新的路径,注意后续环境变量的修改

第二类重要参数:
--enable-xxx    打开一个功能(默认是关闭的)
--disable-xxx    关闭一个功能(默认是打开的)

第三类参数:
--with-xxx=DIR/file    指定一个目录或文件,调用此目录或文件的功能

3、编译阶段

make

相当于是根据你上一步定义好的文件(Makefile),把这个软件给做出来(这一步一般很少出错,如果出错,问题都比较麻烦。可能是一些兼容性的问题等等,你可以尝试上网查询解决方法,如果查不到,只能换个环境或者换个软件版本或者换些编译参数重新编译)

4、安装软件阶段

make install

把做好的软件,安装到你第一步所指定的安装目录里(这一步几乎不会出错的),如果目录不存在会自动创建

5、部署流程

所有部署的任务,都可以遵循一个简单的解决办法

1.确认部署的目标,业务需求

2.下载软件

3.编辑软件配置文件

4.运行软件

5.测试软件

6.应用软件

posted on 2022-04-05 14:59  Cloud~Commander  阅读(49)  评论(0编辑  收藏  举报