基于LAMP架构搭建BBS论坛或者博客


使用源码方式基于LAMP架构搭建BBS论坛或者博客
本章的目标是完全通过源代码编译安装,组建一个LAMP的环境,并运行一个PHP写的web网站。

思考:yum工具搭建lamp环境和源码包搭建的区别

  • rpm版本
    安装方便,升级、卸载都很灵活,很难或者无法定制主要组件的功能,适合批量部署
  • 源码包编译
    根据业务需求定制,前提是必须对平台的功能需要非常了解:卸载、升级、安装并不是很方便灵活
  • 生产环境如何做
    ·上线前,在测试环境中编译安装并且调试完毕后,把编译后的源码同步到其余软硬环境一样的机器,直接 make install即可
    ·上线前,在测试环境中编译安装并且调试完毕后,把源码包封装成rpm包,再使用批量化部署软件进行统一安装

一、项目简介

LAMP(Linux+Apache+MySQL+Perl/PHP/Python)的一个缩写,它们通常一起使用来运行动态网站。虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于它们的免费和开源,这个组合开始流行(大多数Linux发行版本捆绑了这些软件),这就导致这些组件经常在一起使用。LAMP网站架构是目前国际流行的web框架,是国际上非常成熟的架构框架,很多流行的商业应用都是采取这个架构的。LAMP具有通用、跨平台、高性能、低价格的优势,因此lamp无论是性能、质量还是价格都是企业搭建网站的首选平台,现已为商用型web架构代名词。

二、环境准备

1.需要准备的软件包

共享文件夹/LAMP下
apr-1.5.2.tar.bz2
apr-util-1.5.4.tar.bz2
httpd-2.4.12.tar.bz2
php-5.6.11.tar.xz
mysql-5.6.25.tar.gz

http://archive.apache.org/dist/
https://www.php.net/releases/

2.安装前环境准备

说明:
如果你在一台机器启动两个apache和mysql,那么很可能造成一定的冲突,所以为了减少不必要的麻烦,首先停止卸载它们
由于整个环境会设计比较多的依赖关系包,所以我们先将一些依赖包装上。(根据不同的环境可能不仅限于这些包)

清空环境,安装相应的软件包
yum -y groupinstall "Development tools"         开发工具包
yum -y groupinstall "Desktop Platform Development"      桌面开发工具包(图形化相关包)
yum install cmake
yum install ncurses-devel

3.编译方式 (讲究顺序)

Apache–>MySQL–>php 或者 MySQL–>Apache–>php

说明
1.apache必须要先于PHP安装,因为PHP是作为apache的模块libphp.so,被apache加载调用
2.apache和MySQL之间并没有直接先后顺序的依赖,谁先谁后无所谓
3.在PHP-5.3版本前,MySQL必须先于php的编译,因为PHP需要实现连接数据库的功能,它通过MySQL的接口才能编译出该功能
4.在PHP-5.3版本或者之后,PHP已经集成了一套连接MySQL数据的代码,并不依赖MySQL的接口,这时,MySQL和PHP的编译顺序也就无所谓了

三、编译安装MySQL

所需要的包:
apr-1.5.2.tar.bz2
apr-util-1.5.4.tar.bz2
httpd-2.4.12.tar.bz2
php-5.6.11.tar.xz
mysql-5.6.25.tar.gz

清空环境,安装相应的软件包

yum -y groupinstall "Development tools"         开发工具包
yum -y groupinstall "Desktop Platform Development"      桌面开发工具包(图形化相关包)
yum install cmake
yum install ncurses-devel
版本:mysql-5.6.25.tar.gz
需求:
1.安装目录	/mysql25/mysql_basedir
2.数据目录	/mysql25/data
3.端口		3307
4.socket文件	/mysql25/mysql_basedir

安装:
1.官方网站下载相应的软件包
mysql-5.6.25.tar.gz
2.解压软件包
[root@lamp ~]# cd /LAMP/
[root@lamp LAMP]# ll
total 32428
-rwxr-xr-x 1 root root 33203321 Apr 29 18:06 mysql-5.6.25.tar.gz
//-x:解压   -f:file    -C:指定解压目录
[root@lamp LAMP]# tar -xf mysql-5.6.25.tar.gz -C /usr/src/
[root@lamp LAMP]# ls /usr/src
debug  kernels  mysql-5.6.25

3.安装
1)创建相应的目录和用户并授权
[root@lamp LAMP]# mkdir -p /mysql25/mysql_basedir 
[root@lamp LAMP]# mkdir /mysql25/data
[root@lamp LAMP]# id mysql  
id: mysql: No such user
//-r系统用户的uid是 1~499
//-r创建一个系统用户,-s指定默认的shell   /sbin/nologin  不能像其他用户一样登录操作系统
[root@lamp LAMP]# useradd -r mysql -s /sbin/nologin 
[root@lamp LAMP]# su - mysql
su: warning: cannot change directory to /home/mysql: No such file or directory
This account is currently not available.
[root@lamp LAMP]# id mysql
uid=496(mysql) gid=493(mysql) groups=493(mysql)
[root@lamp LAMP]# ll -d /mysql25/
drwxr-xr-x 4 root root 4096 Apr 29 18:32 /mysql25/

[root@lamp LAMP]# chown -R mysql.mysql /mysql25/    更改属主和属组为mysql
[root@lamp LAMP]# ll -d /mysql25/
drwxr-xr-x 4 mysql mysql 4096 Apr 29 18:32 /mysql25/
[root@lamp LAMP]# ll /mysql25/
total 8
drwxr-xr-x 2 mysql mysql 4096 Apr 29 18:32 data
drwxr-xr-x 2 mysql mysql 4096 Apr 29 18:32 mysql_basedir

2)进入到解压后的路径进行安装
[root@lamp ~]# cd /usr/src/mysql-5.6.25/
[root@lamp mysql-5.6.25]# pwd
/usr/src/mysql-5.6.25
[root@lamp mysql-5.6.25]# vim /usr/src/mysql-5.6.25/cmake.sh
这个反斜杠是对换行符的转义,把以下添加进去。下下面已经做好了去除文字的
cmake . \
-DCMAKE_INSTALL_PREFIX=/mysql25/mysql_basedir/ \    安装目录   
-DMYSQL_DATADIR=/mysql25/data \        数据目录
-DENABLED_LOCAL_INFILE=1 \             开启外部加载功能
-DWITH_INNOBASE_STORAGE_ENGINE=1 \     指定打开引擎
-DSYSCONFDIR=/mysql25/mysql_basedir/etc \     指定MySQL配置文件
-DMYSQL_UNIX_ADDR=/mysql25/basedir/mysql.sock \    指定sock文件放在安装目录里
-DMYSQL_TCP_PORT=3307 \               指定端口号
-DDEFAULT_CHARSET=utf8 \             设置字符集
-DDEFAULT_COLLATION=utf8_general_ci \           设置校验规则
-DWITH_EXTRA_CHARSETS=all \              设置扩展字符集
-DMYSQL_USER=mysql                   指定用户

[root@bogon mysql-5.6.25]# chmod +x cmake.sh
[root@bogon mysql-5.6.25]# ./cmake.sh
./cmake.sh: line 1: cmake: command not found
[root@bogon mysql-5.6.25]# yum install cmake
[root@bogon mysql-5.6.25]# ./cmake.sh

★编译
[root@bogon mysql-5.6.25]# make

安装
[root@bogon mysql-5.6.25]# make install

总结:
1.配置的时候,指定安装的路径,该路径可以存在也可以不存在,建议事先创建并且更改权限chown
2.系统默认自动创建,权限是root,需要自己更改,因此自己事先创建比较好
如果自动创建的话初始化会 默认到 /var/lib/mysql/ 而不是指定的 mysql25/data
cmake . \
-DCMAKE_INSTALL_PREFIX=/mysql25/mysql_basedir/ \
-DMYSQL_DATADIR=/mysql25/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DSYSCONFDIR=/mysql25/mysql_basedir/etc \
-DMYSQL_UNIX_ADDR=/mysql25/basedir/mysql.sock \
-DMYSQL_TCP_PORT=3307 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql


根据需求配置:
查看官方文档
https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html 

在这里插入图片描述

后续配置:(官方文档。。。2.2)
shell> scripts/mysql_install_db --user=mysql    默认初始化数据库到/var/lib/mysql
shell> bin/mysqld_safe --user=mysql &     启动mysql,&放在后台执行
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server  以service启动

实际环境操作:
初始化数据库,初始化数据到/mysql25/data
[root@bogon mysql25]# cd mysql_basedir/
[root@bogon mysql_basedir]#scripts/mysql_install_db --user=mysql --basedir=/mysql25/mysql_basedir/ --datadir=/mysql25/data/

启动mysql
[root@bogon mysql_basedir]# bin/mysqld_safe --user=mysql     //如果一直都Starting说明正常
[root@bogon mysql_basedir]# ps -ef|grep mysql   //是否启动成功
[root@bogon mysql_basedir]# netstat -nltp|grep 3307

********************************************
tail -f /var/log/mysqld.log  如果启动失败,可以进行排错
#ls /etc/my.cnf
#rpm -qf /etc/my.cnf
#cat /etc/my.cnf   因为这个默认安装的配置文件。  怎么知道要去找这个文件?
#/mysql25/mysql_basedir/bin/mysql --help   里面会说。 Default options are read   默认情况下先去查这个文件,然后再去读取下一个,如果冲突,以最后一个为准
原因:在启动数据库的时候,默认会到/var/lib/mysql里去找相应的文件,但是我们指定的数据目录/mysql25/data
因为系统有一个默认的配置文件/etc/my.cnf,在该文件中定义了数据目录是/var/lib/mysql
启动的时候,要加载配置文件。 
解决:
方法1.删除/etc/my.cnf
方法2.修改/etc/my.cnf文件
********************************************

如果希望使用service方式启动mysql,可以做如下配置:
[root@bogon mysql_basedir]# cp /mysql25/mysql_basedir/support-files/mysql.server /etc/init.d/mysql25
补充:如果是用二进制安装的话,就要去/etc/init.d/mysql25 指定安装路径和数据目录
[root@bogon mysql_basedir]# service mysql25 start
Starting MySQL SUCCESS! 

[root@bogon mysql_basedir]# /mysql25/mysql_basedir/bin/mysql
不想这么方法,输入这么长才登录。  环境变量问题
临时更改:
[root@bogon mysql_basedir]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
[root@bogon mysql_basedir]# export PATH=/mysql25/mysql_basedir/bin:$PATH
[root@bogon mysql_basedir]# mysql
mysql>
永久更改:
[root@bogon mysql_basedir]# vim /etc/profile   最后一行加↓
export PATH=/mysql25/mysql_basedir/bin:$PATH
[root@bogon mysql_basedir]# source /etc/profile   //重新读取该配置文件


mysql设置密码:
[root@lamp ~]# mysqladmin -u root password '123'
Warning: Using a password on the command line interface can be insecure.
[root@lamp ~]# mysql -u root -p   这样登录更安全  

四、编译安装Apache

环境准备
rpm -q httpd
rpm -e httpd --nodeps
先清空环境(卸载2.2版本)

1.安装依赖包apr

说明:
在RHEL6.5下直接编译apache的2.4版本,会报下面的错误:
checking for APR… configure: WARNING: APR version 1.4.0 or later is required,found 1.3.9
configure: WARNING: skipped APR at apr-1-config, version not acceptable

原因:表示系统自带的apr软件版本为1.3.9,但需要1.4.0以上的版本

解决方法:
第一种:把apache降为2.2系列
第二种:去下载新版本apr先编译,再编译apache调用它(选择第二种)

安装apr软件:
# tar -xf apr-1.5.2.tar.bz2 -C /usr/src/
# cd /usr/src/
[root@bogon src]# ls
apr-1.5.2  apr-util-1.5.4  debug  kernels  mysql-5.6.25
[root@bogon src]# cd apr-1.5.2/
[root@bogon apr-1.5.2]# ./configure    默认会安装到/usr/local/
#make
#make install

# tar -xf apr-util-1.5.4.tar.bz2  -C /usr/src/
# cd /usr/src
[root@bogon src]# ls
apr-1.5.2  apr-util-1.5.4  debug  kernels  mysql-5.6.25
[root@bogon src]# cd apr-util-1.5.4/
[root@bogon apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config
                            指定软件apr的路径
#make
#make install

安装Apache为什么安装apr ——因为是依赖包,需要用到 apr的库文件
现在apr是安装到 /usr/local/apr/下,Apache找不到,所以需要重新指定路径 用Idconfig

思考:一个软件的库文件是有可能被其他软件所调用,那么其他软件能否找到你的库文件呢?

  • 一般来说,库文件安装到/lib,/lib64,/usr/lib/,/usr/lib64等,都可以找到:但是如果一个软件A把库文件安装到/usr/local/A/lib下,就要把这个路径添加到 ldconfig 命令可以找到的路径列表里去,别人才能找到。

  • ldconfig是一个动态链接库管理命令:主要用途是在默认搜索目录(/lib,/lib64,/usr/lib/,/usr/lib64/)
    一级动态库配置文件/etc/ld.so.conf中所列的目录中搜索出可共享的动态链接库。

问题:怎样将库文件的指定安装路径加入到 ldconfig命令的搜索列表中?

方法1:在/etc/ld.so.conf这个主配置文件里面加上一行,写上让别人要查找库文件的路径
★方法2:在/etc/ld.so.conf.d/目录下创建一个*.conf结尾的文件,里面加入该路径即可

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

2.安装httpd软件

版本:httpd-2.4.12.tar.bz2
1.下载 http://archive.apache.org/dist/
2.解压
3.安装(解压的目录里安装)  #make   #makeinstall   配置——》编译——》安装

2.解压
#cd /LAMP/
#tar -xf httpd-2.4.12.tar.bz2 -C /usr/src/     这个指定解压路径不是必须的,一般情况下都会在这
[root@bogon LAMP]# cd /usr/src/httpd-2.4.12/

3.安装
配置:放到 apache.sh,下下面有配置说明
./configure \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config

[root@lamp httpd-2.4.12]# vim apache.sh
[root@lamp httpd-2.4.12]# chmod +x apache.sh 
[root@lamp httpd-2.4.12]# cat apache.sh
./configure \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config
[root@lamp httpd-2.4.12]# ./apache.sh 

***************************************************
如果报错,[root@lamp httpd-2.4.12]# yum list|grep pcre    检查有没有pcre
发现已安装,那么问题是pcre-devel没有安装
[root@lamp httpd-2.4.12]# yum -y install pcre-devel
安装之后再次执行配置脚本apache.sh
***************************************************

[root@lamp httpd-2.4.12]# make
[root@lamp httpd-2.4.12]# make install        源码包默认安装到/usr/local/apache2/
[root@lamp httpd-2.4.12]# ls /usr/local/apache2/      确认这个目录产生后,说明apache编译安装成功   
bin    cgi-bin  error   icons    logs  manual
build  conf     htdocs  include  man   modules


配置说明:

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

五、编译安装PHP

版本:php-5.6.11.tar.xz
1.下载  https://www.php.net/releases/
2.解压
[root@lamp httpd-2.4.12]# cd /LAMP/
[root@lamp LAMP]# ls
apr-1.5.2.tar.bz2       httpd-2.4.12.tar.bz2  php-5.6.11.tar.xz
apr-util-1.5.4.tar.bz2  mysql-5.6.25.tar.gz
[root@lamp LAMP]# tar -xf php-5.6.11.tar.xz -C /usr/src/
[root@lamp LAMP]# cd /usr/src
[root@lamp src]# ls
apr-1.5.2       debug         kernels       php-5.6.11
apr-util-1.5.4  httpd-2.4.12  mysql-5.6.25
[root@lamp src]# cd php-5.6.11/
[root@lamp php-5.6.11]# pwd
/usr/src/php-5.6.11        解压路径

3.安装(在解压目录里)   配置——》编译——》安装
1)配置 (看下下面 php.sh的配置内容)
[root@lamp LAMP]#cd /usr/src/php-5.6.11/
[root@lamp php-5.6.11]# vim /usr/src/php-5.6.11/php.sh
[root@lamp php-5.6.11]# chmod +x /usr/src/php-5.6.11/php.sh 
[root@lamp php-5.6.11]# ./php.sh

***************************************************
./php.sh: line 5: --with-mysqli=/mysql25/mysql_basedir/bin/mysql_config: No such file or directory
./php.sh: line 7: --with-zlib: command not found
./php.sh: line 26: --enable-calender: command not found
检查脚本文件的书写是否有误,一般都是因为 转义换行的\没加,导致的错误

还有一种错误,因为没有安装 libcurl-devel
checking for cURL support... yes
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
    easy.h should be in <curl-dir>/include/curl/
#yum -y install libcurl-devel
***************************************************

2)编译
[root@lamp php-5.6.11]# make

3)安装
[root@lamp php-5.6.11]# make install

[root@lamp php-5.6.11]# ls /usr/local/apache2/modules/libphp5.so 
/usr/local/apache2/modules/libphp5.so


/mysql25/mysql_basedir
# ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql/ \    要改成自定义的目录   /mysql25/mysql_basedir
--with-mysqli=/usr/local/mysql/bin/mysql_config \   /mysql25/mysql_basedir/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql \ 链接mysql模块   /mysql25/mysql_basedir
--with-zlib \
--with-zlib-dir=/usr/local/mysql/zlib \  数据压缩用的函数库  /mysql25/mysql_basedir/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 \

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


make    //make成功后,会显示让你make test,不用做
make install

ls /usr/local/apache2/modules/libphp5.so    确认有这个.so模块文件,就表示编译PHP成功

php.sh

./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/mysql25/mysql_basedir \
--with-mysqli=/mysql25/mysql_basedir/bin/mysql_config \
--with-pdo-mysql=/mysql25/mysql_basedir \
--with-zlib \
--with-zlib-dir=/mysql25/mysql_basedir/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 \

参考 :php各参数配置详解
https://www.jianshu.com/p/0a79847c8151
https://www.cnblogs.com/fps2tao/p/7884011.html
 

六、后续配置

1.配置apache和php的联系

apache要解析一个动态页面,需要调用php模块,怎么联系起来呢?

1.修改apache配置文件
# vim /usr/local/apache2/conf/httpd.conf
1>配置优先支持中文
LoadModule negotiation_modules/mod_negotiation.so   此模块打开注释
Include conf/extra/httpd-languages.conf 打开此选项,扩展配置文件就生效了

修改子配置文件
# vim /usr/local/apache2/conf/extra/httpd-languages.conf    
DefaultLanguage zh-CN   打开注释,默认语言集改为中文 (可无)
LanguagePriority zh-CN en ca ...语言及优先集,把zh-CN写到前面

2>配置apache对php支持    也就是apache和php的联系
# vim /usr/local/apache2/conf/httpd.conf
LoadeModule php5_module     modules/libphp5.so  找到这一句,在这句下面
----添加两行,告诉httpd把.php文件交给模块去编译
AddHandler php5-script      .php    
AddType text/html   .php    
这两句的意思是以.php结尾的文件都认为是php程序文件,注意这两句的.php前面都是有一个空格的

3>默认主页加上index.php,并放在index.html前,支持php的首页文件
# vim /usr/local/apache2/conf/httpd.conf
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

4>配置网站家目录   (此处暂不配置,因为后面是搭两个网站,用到虚拟主机)
DocumentRoot "/web"

默认:/usr/local/apache2/htdocs/index.php

到 第九大点 配置虚拟主机
[root@lamp ~]# vim /usr/local/apache2/conf/httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf


2.让php支持链接本地的数据库

说明:
本地数据库一般是通过socket文件链接,而本地数据库的socket文件如果不在默认路径,就必须告诉php从哪里读取socket文件。
///usr/local/lib/ 默认
# cp /usr/src/php-5.6.11/php.ini-production  /usr/local/lib/php.ini
vim /usr/local/lib/php.ini
...

[MySQL]
mysql.default_port=3307
mysql.default_socket = /mysql25/mysql_basedir

[MySQLi]
mysql.default_port=3307
mysql.default_socket = /mysql25/mysql_basedir

3.网站加目录里写php测试页

要跟随环境  查看 /usr/local/apache2/conf/httpd.conf 的 DocumentRoot
DocumentRoot "/usr/local/apache2/htdocs"

[root@lamp ~]# cd /usr/local/apache2/htdocs
[root@lamp htdocs]# ls
index.html
[root@lamp htdocs]# mv index.html index.php
[root@lamp htdocs]# vim index.php
<?php
        phpinfo();
?>

4.启动服务

启动数据库
#mysql -p 123

启动apache
[root@lamp htdocs]# /usr/local/apache2/bin/apachectl start
[root@lamp htdocs]# netstat -nltp|grep 80

5.测试验证

在这里插入图片描述 

七、源码编译软件经验总结

1.配置阶段

# 通过制定参数,来确认你想要安装的软件安装在哪里,加上哪些功能和去掉哪些功能
./configure 或者 cmake
# 如果这一步报错,基本都是缺少依赖包,解决办法:
1> 使用yum去安装,一般来说,rhel/centos做为一个成熟的linux操作系统,常见的底层依赖包都自带了,
所以安装下面这两个组,一般都会有你所需要的依赖包
# yum groupinstall "Development tools" -y
# yum groupinstall "Desktop Platform Development" -y
2> 如果缺少依赖包在rhel/centos的yum源里找不到,则上网下载第三方的软件,先编译第三方第三方软件,再编译本软件
关于 ./configure 参数选择的基本方法:
./configure --help 查看所有的编译参数
第一个重要参数
--prefix = 此参数指定安装目录(一般安装到/usr/local/ 或者 /usr/local/软件名下)
第二类重要参数:
--enable-xxx 		打开一个功能(默认是关闭的)
--disable-xxx		关闭一个功能(默认是打开的)

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

2.编译阶段

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

3.安装阶段

make install 把做好的软件,安装到你第一步所指定的安装目录里

4.思考总结

假设有一个软件aaa,安装到/usr/local和安装到/usr/local/aaa之间的区别?

  • 安装到/usr/local下:
  • 优点:
    此软件的命令一般会安装到/usr/local/bin或者/usr/local/sbin等;
    这些路径都默认在$PATH里,所以安装的命令可以直接使用,而不用使用绝对路径;
    库文件一般都会安装到/usr/locallib下,所以把它加入ldconfig,以后所以安装在此目录的库文件都可以被找到
    缺点:
    不方便删除,因为很多软件都安装在/usr/local下
    安装到/usr/local/aaa下:
    优缺点与上面相反
    建议:小软件默认安装在/usr/local下,大软件安装在/usr/local/软件名下

八、部署WEB应用

搭建Discuz论坛
所需软件包:
Discuz_X3.2_SC_UTF8.zip  Discuz论坛
phpwind_v9.0.1_utf8.zip  wind论坛
phpMyAdmin-4.4.11-all-language.zip  php写的mysql的管理工具(类似oracle的OEM)
wordpress-4.7.3-zh_CN.tar.gz  博客

需求:搭建2个网站,一个博客,一个是web界面管理mysql数据库的应用(我这里只搭了博客)

步骤:
1.创建两个目录来分别存放不同的网站
# cd /usr/local/apache2/conf/
# vim httpd.conf   查找 /User 发现 2.4版本用户是daemon
apache2.4版本默认用户为
User daemon
Group daemon
# chown -R daemon.  /webserver/         这里daemon. 表示用户和用户组同名直接用点。
# mkdir   /webserver/{admin,myblog} -p

 

2.拷贝网站相关的数据到网站目录里
[root@bogon LAMP]# unzip phpMyAdmin-4.4.11-all-languages.zip
[root@bogon LAMP]# tar xf wordpress-4.7.3-zh_CN.tar.gz
[root@bogon LAMP]# cd /LAMP/phpMyAdmin-4.4.11-all-languages
[root@bogon phpMyAdmin-4.4.11-all-languages]# cp -a ./* /webserver/admin/
[root@bogon LAMP]# cd ..    返回上一级目录
[root@bogon LAMP]# cp -a wordpress/* /webserver/myblog/ 



3.通过虚拟主机将网站发布出去   (Apache 2.2和2.4不同,默认目录那些也不同)
虚拟主机:(用虚拟主机 就要用 模块)
# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/webserver/admin"
    ServerName www.mysqladmin.cc
#   ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/webserver/myblog"
    ServerName www.myblog.net
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

打开主配置文件里面的模块
[root@lamp ~]# vim /usr/local/apache2/conf/httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf    去掉注释

4.重启服务
/usr/local/apache2/bin/apachectl restart

5.测试验证
出现403错误,首先查看目录权限都是daemon,接着查看主配置文件,修改如下
#ll -d /webserver/admin/  
然后检查 getenforce  [root@bogon LAMP]# vim /etc/selinux/config
然后检查防火墙,检查端口开启没
[root@bogon LAMP]# vim /usr/local/apache2/conf/httpd.conf
<Directory />
    AllowOverride none
    #Require all denied   版本原因,2.4的apache目录拒绝所有人访问 403,因此要注释掉
    Require all granted   全部允许
</Directory>
重启服务后重新测试 /usr/local/apache2/bin/apachectl restart

在CLIENT客户端的 hosts文件  写上对应关系  
#vim /etc/hosts
192.168.93.137  www.mysqladmin.cc
192.168.93.137  www.myblog.net

排错

第一个排错  打得开,登不进去
1>第一个原因:数据库用户名密码不对
2>第二个原因:数据库连接不了
#cd /webserver/admin
#cp config.sample.inc.php config.inc.php
#vim config.inc.php
$cfg['Servers'][$i]['host'] = 'localhost';  登录不成功尝试修改为127.0.0.1  root 123

Myblog: 第二个网站
第二个排错  登进去,创建不了数据库。 因此先在本机数据库建立一个myblog的database
#mysql -p123
mysql> create database myblog;  
//再次建立,  提示建立数据库时出错,提示:wp-config.php

第三个排错  修改 wp-config.php 文件,指定数据库
#cd /webserver/myblog/
#cp wp-config-sample.php  wp-config.php   //sample是默认样板
#vim wp-config.php
 22 /** WordPress数据库的名称 */
 23 define('DB_NAME', 'myblog');
 24 
 25 /** MySQL数据库用户名 */
 26 define('DB_USER', 'root');
 27 
 28 /** MySQL数据库密码 */
 29 define('DB_PASSWORD', '123');
 //又出错,又提示建立数据库时出错
 
 第四个排错 
 现在进入到mysql里面删除myblog数据库,再次重建
 mysql> drop database myblog;
 然后进入网页刷新,清空缓存
 又是建立数据库时出错,这个时候只能是思考配置文件的问题

在这里插入图片描述
 
然后发现 文件权限是 root,修改为daemon (apache2.4版本默认用户为User daemon,Group daemon
[root@bogon myblog]# chown daemon. wp-config.php
在这里插入图片描述还是错,修改 wp-config.php 将localhost修改为127.0.0.1
/** MySQL主机 */
32 define(‘DB_HOST’, ‘127.0.0.1’);

重启服务:# /usr/local/apache2/bin/apachectl restart OK
终于完成!
在这里插入图片描述

发布了26 篇原创文章 · 获赞 6 · 访问量 1945

猜你喜欢

转载自blog.csdn.net/qq_39578545/article/details/105055424