部署(分布式)lamp

LAMP平台(分布式)

名称 IP
http 192.168.1.20
mysql 192.168.1.21
php 192.168.1.22

编译安装httpd

关闭防火墙和selinux,并修改主机名

[root@localhost ~]# hostnamectl set-hostname httpd
[root@localhost ~]# bash
[root@httpd ~]# systemctl stop firewalld
[root@httpd ~]# systemctl disable firewalld
[root@httpd ~]# setenforce 0

下载前提软件

[root@httpd ~]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

编写脚本安装前提软件:

[root@httpd ~]# mkdir -p /server/soft
[root@httpd ~]# cd /server/soft
上传包:1.apr-1.5.2.tar.gz   2.httpd-2.4.25.tar.gz    3.zlib-1.2.8.tar.gz   4.apr-util-1.5.4.tar.gz  5.openssl-1.0.1u.tar.gz    6.pcre-8.39.tar.gz
[root@httpd soft]# cd ..
[root@httpd server]# mkdir scripts
[root@httpd server]# cd scripts/

前提脚本

[root@httpd scripts]# vim httpd-install.sh

#!/bin/bash
cd /server/soft
tar zxf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install

cd ..
tar zxf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install

cd ..
yum -y install zlib-*

tar zxf pcre-8.39.tar.gz
cd pcre-8.39
./configure --prefix=/usr/local/pcre && make && make install

cd ..
tar zxf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
./config -fPIC --prefix=/usr/local/openssl enable-shared && make && make install

保存退出

(直接添加Apache主程序也可以)
执行脚本:sh httpd-install.sh
[root@httpd scripts]# sh httpd-install.sh

3.安装Apache主程序

[root@httpd scripts]# vim apache.sh

#!/bin/bash
cd /server/soft
tar zxf httpd-2.4.25.tar.gz
cd httpd-2.4.25
./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-cgid --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-fcgi --enable-expires --enable-deflate && make && make install

保存退出
执行脚本:sh httpd-install.sh
[root@httpd scripts]# sh apache.sh

4.优化链接

[root@httpd scripts]# ln -s /usr/local/httpd/bin/* /usr/local/bin
添加系统服务
[root@httpd scripts]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@httpd init.d]# pwd
/etc/init.d
[root@httpd init.d]# vim httpd
定位到第二行:修改为cd
#chkconfig: 35 85 15       \\声明服务启动级别,开机启动顺序,关机关闭顺序
#description: apache 2.4.25    \\服务声明,简要信息
保存退出
[root@httpd init.d]# chkconfig --add httpd            \\添加httpd到系统服务 (chkconfig --list httpd 查看)
[root@httpd init.d]# chkconfig httpd on                \\设置服务开机自启(等同于:systemctl enable httpd)
[root@httpd init.d]# systemctl start httpd              \\开启服务(等同于:service httpd start)

编译安装mysql

选择预先准备好的虚拟机mysql:192.168.1.21

为了方便区分,可以修改主机名

~]# hostnamectl set-hostname mysql
~]# bash

首先创建目录用来存放软件包和编译安装脚本

~]# mkdir -p /server/{soft,scripts}

把所需要的软件包移动到/server/soft目录下:cmake-2.8.6.tar.gz、mysql-5.6.36.tar.gz

编写编译安装脚本如下

~]# vim /server/scripts/mysql.sh
#!/bin/bash
#由于没有下载mysql源码包,所以提前准备好
echo '正在下载资源包...'
yum -y install ncurses-devel gcc gcc-c++ 

tar zxf /server/soft/cmake-2.8.6.tar.gz -C /usr/src
cd /usr/src/cmake-2.8.6
echo '正在编译安装...'
./configure &> /dev/null
gmake && gmake install &> /dev/null

groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql

tar zxf /server/soft/mysql-5.6.36.tar.gz -C /usr/src
cd /usr/src/mysql-5.6.36
echo '预编译中...'
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all &> /dev/null
echo  '正在编译安装...'
make && make install &> /dev/null

echo  '对数据库目录进行授权:'
chown -R mysql:mysql /usr/local/mysql
echo  '建立配置文件:'
rm -rf /etc/my.cnf
cp support-files/my-default.cnf /etc/my.cnf
echo '安装Perl模块...'
yum -y install perl-Data-Dumper &> /dev/null
echo '初始化数据库...'
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
echo '设置环境变量:'
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile
#mysql 的启动和关闭:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
/etc/init.d/mysqld start

echo  '创建软连接,优化路径:'
ln -s /usr/local/mysql/bin/mysql /usr/local/bin
ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin
#/etc/init.d/mysqld是一个shell脚本,在启动过程中会调用mysqld_safe脚本,最后调用mysqld服务启动mysql,如下所示.
#$bindir/mysql_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 
netstat -anpt | grep 3306
cat << EOF

****************************************
* Mysql  has been installed successfully. *
****************************************

EOF

运行脚本

~]# sh mysql.sh

编译安装php

选择预先准备好的虚拟机mysql:192.168.1.22

关闭防火墙和selinux并修改主机名

[root@localhost ~]# hostnamectl set-hostname php
[root@localhost ~]# bash
[root@php ~]# systemctl stop firewalld
[root@php ~]# systemctl disable firewalld
[root@php ~]# setenforce 0

1.安装前提软件

[root@php ~]# yum -y install epel-release
[root@php ~]# yum -y install gcc gcc-c++ libxml2-devel lzip2-devel libcurl-devel libmcrypt-devel openssl-devel bzip2-devel

2.把所需软件包移动到/usr/src目录下,所需软件包为:libmcrypt-2.5.7.tar.gz、php-5.6.27.tar.gz

进行加密工具编译安装

[root@php ~]# cd /usr/src
[root@php src]# ls
php-5.6.27.tar.gz
libmcrypt-2.5.7.tar.gz
[root@php src]# tar zxf libmcrypt-2.5.7.tar.gz 
[root@php src]# cd libmcrypt-2.5.7/
[root@php libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install

3.安装php

[root@php libmcrypt-2.5.7]# cd /usr/src/
[root@php src]# tar zxf php-5.6.27.tar.gz 
[root@php src]# cd php-5.6.27/
[root@php php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts && make && make install

选项解释

--prefix=/usr/local/php5.6  //安装位置
--with-mysql=mysqlnd  //支持mysql
--with-pdo-mysql=mysqlnd  //支持pdo模块
--with-mysqli=mysqlnd  //支持mysqli模块
注:上面的三选项的作用:数据库与php不在一个服务器上,指定此种方式,安装数据库连接驱动.
--with-openssl  //支持openssl模块
--enable-fpm  //支持fpm模式
--enable-sockets  //启用socket支持
--enable-sysvshm  //启用系统共享内存支持
--enable-mbstring  //多字节字串、像我们的中文就是多字节字串
--with-freetype-dir  //支持freetype,就要装freetype-devel、跟字体相关的、字体
解析工具
--with-jpeg-dir
--with-png-dir
注:上面的二选项的作用:处理jpeg、png图片的、php可以动态生成jpeg图片
--with-zlib  //是个压缩库、在互联网传输时用来压缩传输的
--with-libxml-dir=/usr  //这个libxml是用来解析xml的、指定/usr下
--enable-xml  //支持xml的
--with-mhash  //支持mhash
--with-mcrypt=/usr/local/libmcrypt  //libmcrypt-devel这个程序包所指定的
--with-config-file-path=/etc  //指定配置文件的存放路径的
--with-config-file-scan-dir=/etc/php.d  //配置文件扫描路径
--with-bz2  //支持BZip2
为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts
选项
如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要
先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用
和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。

4.提供php配置文件

[root@php php-5.6.27]# cp /usr/src/php-5.6.27/php.ini-production /etc/php.ini

5.为php-fpm提供脚本

[root@php ~]# cd /usr/src/php-5.6.27/
[root@php php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@php php-5.6.27]# chmod +x /etc/init.d/php-fpm 
[root@php php-5.6.27]# chkconfig --add php-fpm
[root@php php-5.6.27]# chkconfig php-fpm on

6.提供php-fpm配置文件并编辑

[root@php ~]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@php ~]# vim /usr/local/php5.6/etc/php-fpm.conf
修改:
pid = run/php-fpm.pid
listen = 192.168.1.22:9000
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

7.启动php-fpm服务

[root@php ~]# systemctl start php-fpm

测试Apache与PHP的静/动分离

1.启用Apache服务的代理转发

[root@httpd ~]# vim /usr/local/httpd/conf/httpd.conf
找到下面三行,去除#号
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Include conf/extra/httpd-vhosts.conf
找到AddType所在行
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
添加下面两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
找到DirectoryIndex,改为:
DirectoryIndex index.php index.html
保存退出并重启服务
[root@httpd ~]# systemctl restart httpd

2.配置虚拟主机文件

[root@httpd ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
修改:(下面原有的可以都删掉在添加)
<VirtualHost *:80>
 ServerAdmin [email protected]
 DocumentRoot "/var/www/benet"
 ServerName www.benet.com
 ServerAlias benet.com
 ErrorLog "logs/benet.com-error_log"
 CustomLog "logs/benet.com-access_log" common
 ProxyRequests Off
 ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://192.168.1.22:9000/var/www/benet/$1
 #<LocationMatch "^(.*\.php(/.*)?)$">
 # ProxyPass fcgi://192.168.1.22:9000/var/www/benet
 #</LocationMatch>
 <Directory "/var/www/benet">
 Options FollowSymLinks
 AllowOverride None
 Require all granted
 </Directory>
 </VirtualHost>

重启服务

[root@httpd ~]# systemctl restart httpd

测试
(1)在mysql服务器,创建测试数据库用户

[root@mysql scripts]# mysql    \\登录数据库命令
mysql> grant all on *.* to testuser@'%' identified by '123';

(2)在php服务器上的/var/www目录下创建benet目录并在其下面创建index.php的测试页:

[root@php ~]# mkdir -p /var/www/benet
[root@php ~]# vim /var/www/benet/index.php
<?php
phpinfo();
?>

可以访问查看,访问的只能是前台,也就是Apache。
192.168.1.20/index.php

可以再建立一个测试页,访问mysql

[root@php ~]# vim /var/www/benet/test1.php
<?php
$link=mysql_connect('192.168.1.21','testuser','123');
if ($link)echo "connection success......";
mysql_close();
?>

再次访问查看
192.168.1.20/test1.php

(3)在mysql服务器上测试访问Apache,会出现php内容

部署Discuz论坛

(1)复制Discuz包到apache和php服务器的/var/www/benet目录,解压并重命名赋权(两个服务器的操作步骤一样)所需软件包:
Discuz_X3.3_SC_UTF8.zip

[root@httpd benet]# mkdir -p /var/www/benet
[root@httpd benet]# unzip Discuz_X3.3_SC_UTF8.zip
[root@httpd benet]# mv upload/ /var/www/benet/bbs
[root@httpd benet]# chmod -R 777 /var/www/benet/bbs

(2)在php服务器修改配置文件,重启服务

[root@php benet]# vim /etc/php.ini
找到下行并改为:
short_open_tag = On
[root@php benet]# service php-fpm restart

(3)在mysql服务器上创建bbs数据库及用户

[root@mysql scripts]# mysql
mysql> create database bbsdb;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on bbsdb.* to runbbs@'%' identified by '123.com';
Query OK, 0 rows affected (0.00 sec)

(4)访问Apache,安装discuz论坛(安装过程,除了数据库名:bbsdb数据库用户名:runbbs 密码:123.com,其他一律下一步)

http://192.168.1.20/bbs

使用rpm包安装lamp,并发布discuz论坛
(1)修改主机名,测试ping通外网,关闭防火墙和selinux

[root@localhost ~]# hostnamectl set-hostname lamp
[root@localhost ~]# bash
[root@lamp ~]# systemctl stop firewalld
[root@lamp ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@lamp ~]# setenforce 0
[root@lamp ~]# ping baidu.com

(2)使用yum安装httpd mariadb php

[root@lamp ~]# yum -y install httpd mariadb-server mariadb php php-mysql

(3)启动httpd、mariadb

[root@lamp ~]# systemctl start httpd
[root@lamp ~]# systemctl start mariadb

(4)无密登录mariadb,为提高安全性,设置密码

[root@lamp ~]# mysql     \\无密root登录
[root@lamp ~]# mysql_secure_installation    \\修改root密码

(5)使用新密码登录Mariadb,并为网站创建数据库和管理用户

[root@lamp ~]# mysql -uroot -p123.com
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database bbs;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on bbs.* to runbbs@localhost identified by '123.com';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

(6)测试php是否安装成功

[root@lamp ~]# cd /var/www/html/
[root@lamp html]# vim info.php
<?php
phpinfo();
?>

测试访问:http://192.168.1.10/info.php

在这里插入图片描述
(7)复制discuz代码包到/usr/src,解压

[root@lamp ~]# ls
 Discuz_X3.3_SC_UTF8.zip
[root@lamp ~]# unzip Discuz_X3.3_SC_UTF8.zip

(8)移动解压后的upload到网站根目录下

[root@lamp ~]# mv upload/ /var/www/html/bbs

(9)设置bbs目录权限

[root@lamp ~]# chmod -R 777 /var/www/html/bbs/      //这只是实验,正式环境很危险

(10)安装discuz论坛
浏览器访问:http://192.168.1.10/bbs
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hjyhjy0/article/details/109770750
今日推荐