实战之LAMP环境源码搭建

时间:2022-03-13 03:06:28

一、实验要求

源码部署LAMP环境。

二、实验环境

web服务器IP为192.168.189.128,通过源码包进行安装,网站为WordPress。

软件的版本分别为:

apr-1.5.2

apr-util-1.5.4

httpd-2.4.37

mysql-5.6.31

php-7.2.17

wordpress-4.7.3

三、实验具体步骤

1.修改主机名

[root@jiangfeng2 src]# vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=web.jiangfeng.cc

2.主机名和IP进行绑定

[root@jiangfeng2 src]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.189.128 web.jiangfeng.cc

3.安装依赖包

//开发工具包
[root@web ~]# yum groupinstall "Development tools" -y
//桌面开发工具包(图形化相关包)
[root@web ~]# yum groupinstall "Desktop Platform Development" -y
//其他依赖包
[root@web ~]# yum install cmake pcre-devel ncurses-devel openssl-devel libcurl-devel -y

4.编译安装MySQL

1)创建mysql用户

[root@web ~]# useradd -r -s /sbin/nologin mysql
[root@web ~]# tail -1 /etc/passwd
mysql:x:498:498::/home/mysql:/sbin/nologin

2)解压软件并进入解压目录

[root@web ~]# cd /usr/local/src/
[root@web src]# tar -zxf mysql-5.6.31.tar.gz 
[root@web src]# cd mysql-5.6.31
[root@web mysql-5.6.31]# pwd
/usr/local/src/mysql-5.6.31

3)根据需求对mysql进行配置

[root@web mysql-5.6.31]# 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

4)进行编译安装

make && make install

5)后续配置

//更改数据目录权限
[root@web ~]# chown -R mysql.mysql /usr/local/mysql/
//清空环境
[root@web ~]# rm -f /etc/my.cnf
[root@web ~]# cd /usr/local/mysql/
//初始化数据库
[root@web mysql]# ./scripts/mysql_install_db --user=mysql
…………
New default config file was created as ./my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings
//查看上个操作的返回值是否报错
[root@web mysql]# echo $?
0
//拷贝启动脚本
[root@web mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
//启动服务前查看端口是否被占用
[root@web mysql]# netstat -nltp |grep 3306
//启动服务
[root@web mysql]# service mysql start
Starting MySQL.. SUCCESS!
//设置数据库root密码 
[root@web mysql]# /usr/local/mysql/bin/mysqladmin -u root password '123'
Warning: Using a password on the command line interface can be insecure.
//在环境变量中添加mysql相关启动软件
[root@web mysql]# echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
[root@web mysql]# . /etc/profile

5.编译安装Apache

1)安装依赖包apr和apr-util

注:两个压缩包在同一个目录
安装apr和apr-util软件:
[root@web ~]# tar xf apr-1.5.2.tar.bz2
[root@web ~]# cd apr-1.5.2
[root@web ~]# ./configure
[root@web ~]# make && make install
[root@web ~]# cd ../
[root@web ~]# tar xf apr-util-1.5.4.tar.bz2
[root@web ~]# cd apr-util-1.5.4/
[root@web ~]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config  //指定软件apr的路径
[root@web ~]# make && make install
把apr放入动态链接库中
[root@web php-7.2.17]# echo "/usr/local/apr/lib/" >>/etc/ld.so.conf
[root@web php-7.2.17]# ldconfing

2)根据需求安装httpd

[root@web src]# tar -jxf httpd-2.4.37.tar.bz2 
[root@web src]# cd httpd-2.4.37
[root@web httpd-2.4.37]# ./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

参数的解释:

--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(最优)   事件驱动模型,多进程模型,每个进程响应多个请求

3)编译并安装

make && make install

6.编译安装PHP

[root@web src]# tar Jxf php-7.2.17.tar.xz
[root@web src]# cd php-7.2.17
[root@web src]# ./configure \
--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
[root@web src]# make && make install

相关参数的解释

--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   #哈希运算

7.配置Apache和php联系

1. 修改apache主配置文件
[root@web ~]# vim /usr/local/apache2/conf/httpd.conf
#配置语言支持
LoadModule negotiation_module modules/mod_negotiation.so 
//此模块打开注释

Include conf/extra/httpd-languages.conf //打开此选项,扩展配置文件就生效了
...
//对虚拟主机的支持,后续再打开
#Include conf/extra/httpd-vhosts.conf
加载php模块解析php页面,添加两行,告诉httpd把.php文件交给模块去编译
LoadModule php7_module   modules/libphp7.so //找到这一句,在这句下面加上两句
AddHandler php7-script .php
AddType text/html .php
//默认主页加上index.php,并放在index.html前,支持php的首页文件
<IfModule dir_module>   DirectoryIndex index.php index.html
</IfModule>
注意:默认的网站目录是:/usr/local/apache2/htdocs/
2. 修改apache的子配置文件,优先支持中文
[root@web ~]# vim /usr/local/apache2/conf/extra/httpd-languages.conf
DefaultLanguage zh-CN //打开注释,默认语言集改为中文
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-TW 
//语言集优先集,把zh-CN 写到前面

8.部署web应用

[root@web ~]# mkdir /www/myblog -p
[root@web ~]# tar -zxf /usr/local/src/wordpress-4.7.3-zh_CN.tar.gz -C /www/myblog/
[root@web ~]# chown -R daemon:daemon /www/myblog
[root@web ~]# cd /usr/local/apache2/conf/
//打开加载虚拟主机配置文件
[root@web ~]# vim /usr/local/apache2/conf/httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf 
//子配置文件目录里修改虚拟主机配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
        ServerAdmin webmaster@dummy-host2.example.com
        DocumentRoot "/www/myblog"
        ServerName web.jiangfeng.cc
        ErrorLog "logs/myblog-error_log"
        CustomLog "logs/myblog-access_log" common
</VirtualHost>
<Directory "/www/myblog">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

网站连接后台数据库配置
mysql -p
Enter password: 
mysql> create database myblog default charset utf8; //创建myblog库来存放wordpress的数据

9.测试

在windows的hosts配置文件中绑定web服务器的域名

在C:\Windows\System32\drivers\etc目录下的hosts文件中追加如下内容

192.168.189.128    www.jiangfeng.cc

在浏览器中输入网址

实战之LAMP环境源码搭建

四、拓展实验:一台主机部署两个应用

1.更改/usr/local/apache2/conf/extra/httpd-vhosts.conf配置文件

[root@web ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
        ServerAdmin webmaster@dummy-host2.example.com
        DocumentRoot "/www/phpmyadmin"
        ServerName www.php.cc
        ErrorLog "logs/myblog-error_log"
        CustomLog "logs/myblog-access_log" common
</VirtualHost>
<Directory "/www/phpmyadmin">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

2.把你的网站内容放入相应的目录下

[root@web src]# cp -a phpMyAdmin-4.8.5-all-languages /www/phpmyadmin/

实战之LAMP环境源码搭建