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