LAMP分布式部署
LAMP分布式部署LAMP分布式部署是将数据,PHP(python,perl,这里主要说PHP)和apache分开部署在不同主机上的web架构。PHP以fpm独立守护进程的方式监听另一台apache服务器以fcgi模式发送来的请求的工作模式。如下图:一、环境准备IP地址如下:apache服务器 172.16.1.120172.16.1.150(其中一个接受用户请求,一个发送动态内容请求到php服务器)php服务器 172.16.1.160数据服务器 172.16.1.170
系统环境:所有系统全部是最小化安装的centos6.7
1
2
3
4
5
6
7
8
# cat/etc/redhat-release
CentOS release6.7 (Final)
# uname -rm
2.6.32-573.el6.x86_64x86_64
# setenforce 0
# serviceiptables stop
需要准备的软件包mariadb-5.5.36-linux-x86_64.tar.gzDiscuz_X3.2_SC_GBK.zip libiconv-1.9.2.tar.gz php-5.6.14.tar.gzapr-1.5.2.tar.gz apr-util-1.5.4.tar.gz Discuz_X3.2_SC_GBK.zip httpd-2.4.16.tar.gz
二、安装MariaDB数据库服务器注:如果是集中式安装LAMP,应先安装apache和mysql。因为php在安装时需要指定apache和数据库的路径。我们使用MariaDB 5.5.36通用二进制格式安装。# mkdir /tools把安装程序放到这个目录下。1、解压软件包:#tar xzvf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/src/# ln -sv/usr/src/mariadb-5.5.36-linux-x86_64/ /usr/local/mysql `/usr/local/mysql'-> `/usr/src/mariadb-5.5.36-linux-x86_64/' # cd/usr/local/mysql2、创建mysql用户和组:# groupadd -r -g 306mysql#useradd -r -g 306 -u 306 -s /sbin/nologin -M mysql3、建立数据目录并授权:# mkdir /data/mysql/{data,logs} -pvmkdir: created directory `/data'mkdir: created directory `/data/mysql'mkdir: created directory `/data/mysql/data'mkdir: created directory `/data/mysql/logs'# chown -R mysql.mysql /data/mysql/# chown -R mysql.mysql /usr/local/mysql/ 4、建立配置文件目录并创建配置文件: # mkdir /etc/mysql # cp /usr/local/mysql/support-files/my-large.cnf/etc/mysql/my.cnf 主配置文件 # cp/usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld 启动脚本 5、修改配置主文件: vim /etc/mysql/my.cnf 添加和修改如下内容: port = 3306socket= /tmp/mysql.sockdatadir= /data/mysql/datapid_file= /data/mysql/mysql.pidlog-bin= /data/mysql/logs/mysql-binlog-error = /data/mysql/logs/mysql.err 6、修改启动脚本: vim/etc/rc.d/init.d/mysqld 修改如下参数:basedir=/usr/local/mysqldatadir=/data/mysql/data# chkconfig mysqld –add# chkconfig mysqld on# chmod +x /etc/rc.d/init.d/mysqld 7、初始化数据库: #/usr/local/mysql/scripts/mysql_install_db --user=mysql--datadir=/data/mysql/data/--basedir=/usr/local/mysql/ --defaults-extra-file=/etc/mysql/my.cnf 一般看到两个OK就表示初始化成功了。 8、启动数据库并设置数据密码: # service mysqld startStarting MySQL... SUCCESS!export PATH=$PATH:/usr/local/mysql/bin/# mysqladmin -u root password ABCabc123# mysql -u root -pABCabc123 9、到这里数据库就安装完成了。三、安装PHP在172.16.1.160上安装php服务器.版本选择PHP5.6.14# mkdir /tools;cd /tools 创建程序包下载路径1、安装依赖环境:# cd /etc/yum.repos.d/# wget http://mirrors.aliyun.com/repo/epel-6.repoyum installgccgcc-c++ autoconf automake ncurses-devellibxml2-develbisonmake pcre pcre-develzlib-devellibtool-ldtd-devellibtool flex vimopenssl openssl-develbzip2-develgmp-devel openldap-devellibxslt*libcurl libcurl-devel libmcrypt libmcrypt-devel-y# tar xzvf libiconv-1.9.2.tar.gz -C /usr/src/;cd/usr/src/libiconv-1.9.2/# ./configure --prefix=/usr/local/libiconv# make && make install2、开始编译安装PHP # tar xzvf php-5.6.14.tar.gz -C/usr/src/;cd /usr/src/php-5.6.14 # ./configure --prefix=/usr/local/php--with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/--enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir--with-zlib --with-libxml-dir --enable-xml --with-mcrypt --with-bz2--with-openssl --with-curl --with-xsl--with-iconv=/usr/local/libiconv--enable-sockets --enable-short-tags --enable-static --enable-gd-native-ttf--enable-ftp --enable-maintainer-zts --with-mysql=mysqlnd--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm # make && make installfastcgi:php-5.3.3 之后的版本自带了fpm组件,fpm组件能把PHP解释器工作为守护进程,并提供类似prefork模式的应用,它能够接收来自前端httpd,http-proxy-fcgi反向代理用户对动态内容请求至后端的fastcgi server注意:把php编译为fpm工作模式时需要加一个重要的选项 --enable-fpm,而不再使用 -with-apxs2=/usr/local/apache/bin/apxs3、为php提供主配置文件# mkdir /etc/php/etc/php.d# cp/usr/src/php-5.6.14/php.ini-production /etc/php/php.ini4、配置和修改php-fpm信息 #cp /usr/src/php-5.6.14/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm# chkconfig php-fpm --add# chkconfig php-fpm on
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# vim /usr/local/php/etc/php-fpm.conf修改php-fpm配置文件,添加和修改如下信息listen= 192.168.1.160:9000pm.max_children= 50 ###静态方式下开启的php-fpm进程数量pm.start_servers= 5 ###动态方式下的起始php-fpm进程数量pm.min_spare_servers= 2 ###动态方式下的最小php-fpm进程数量pm.max_spare_servers= 8 ###动态方式下的最大php-fpm进程数量pid =/usr/local/php/var/run/php-fpm.pid ###PID文件路径启动php-fpm#service php-fpm startStartingphp-fpmdone到这里,PHP服务器安装完成!
四、安装Apache mkdir/tools创建包下载目录
cd/tools
1、装依赖环境:# yum groupinstall "Development Tools" "Server PlatformDevelopment" -y# yum install pcre-devel zlib-devel –y2、apr# tar xzvf apr-1.5.2.tar.gz -C /usr/src/# cd /usr/src/apr-1.5.2/# ./configure --prefix=/usr/local/apr #make&& make install3、apr-util# tar xzvf apr-util-1.5.4.tar.gz -C /usr/src/# cd /usr/src/apr-util-1.5.4/# ./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr/#make && makeinstall
4、安装 apache cd/tools
# tar xzvf httpd-2.4.16.tar.gz -C /usr/src/# cd /usr/src/httpd-2.4.16/# ./configure --prefix=/usr/local/apache--with-apr=/usr/local/apr/--with-apr-util=/usr/local/apr-util/ --enable-so --enable-ssl --enable-cgi--enable-rewrite --with-zlib --with-pcre --enable-deflate --enable-expires--enable-headers --enable-modules=most --enable-mpms-shared=all--with-mpm=event# make && make install
编译参数说明:--prefix ###安装路径--sysconfdir ###指定配置文件路径--with-apr ###指定apr安装路径--with-apr-util ###指定par-util安装路径--enable-so ##DSO兼容,DSO=Dynamic Shared Object,动态共享对象,可实现模块装载--enable-ssl ###支持SSL/TLS,可以实现https访问--enable-cgi ###支持CGI脚本--enable-rewrite ###加入mod_rewrite模块,支持URL重写--with-zilb ###打开zlib库的支持--with-pcre ###支持perl的正则表达式--enable-deflate ###支持网页压缩--enable-expires ###支持HTTP控制,对网站图片、js、css等内容,提供在客户端游览器缓存--enable-headers ###允许对HTTP请求头的控制--enable-modules=most ###支持大多数模块--enable-mpms-shared=all 支持动态加载的MPM模块--with-mpm=event #设置默认启用的MPM模式
★关于MPM模块的构建:(1)构建MPM为静态模块在全部平台中,MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,请在执行 configure脚本时,使用参数 --with-mpm=NAME。NAME是指定的MPM名称。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。此命令会列出编译到服务器程序中的所有模块,包括 MPM。
(2)构建 MPM 为动态模块在 Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。构建 MPM 为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。还可以在参数中给出模块列表。默认MPM,可以自动选择或者在执行configure脚本时通过--with-mpm选项来指定,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。
5、apache用户和组# groupadd-rapache # useradd -r -gapache -s /sbin/nologin-M apache
6、Apache配置文件# cd/usr/local/apache/conf/# cp httpd.confhttpd.conf.ori
vim/usrl/local/apache/conf/httpd.conf1)找到如下模块并打开LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so2)如下内容 AddTypeapplication/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps 3)修改监听地址Listen 192.168.1.120:804)注销DocumentRoot#DocumentRoot "/usr/local/apache/htdocs"#<Directory "/usr/local/apache/htdocs">因为我们要使用虚拟主机。5)添加虚拟主机 在文件末尾添加虚拟主机如下:<VirtualHost *:80>ServerAdmin yy@yy.comDocumentRoot "/data/www/yy"ServerName www.yy.comServerAlias yy.comProxyRequests OffProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.160:9000/data/www/yy/$1ErrorLog"/usr/local/apache/logs/phpinfo-error_log"CustomLog"/usr/local/apache/logs/phpinfo-access_log"common<Directory "/data/www/yy">AllowOverride NoneOptions NoneRequire all granted</Directory>6)添加PHP主页索引index.php<IfModule dir_module> DirectoryIndexindex.php index.html</IfModule>7)修改ServerName ServerName www.yy.com:808)户和组改为apache User apache Group apache9)创建DocumentRoot目录 # mkdir /data/www/yy –pv 这条命令要分别在php服务器和apache服务器上都执行。即两边都创建这个目录 。10)提供索引文件 apache服务器上放置静态内容 # echo "www.yy.com" >/data/www/yy/index.html php服务器上放置动态内容 # cat > /data/www/yy/index.php<<EOF > <?php > phpinfo(); > ?> > EOF 7、Apache #/usr/local/apache/bin/apachectl -t
Syntax OK 语法检查OK#/usr/local/apache/bin/apachectl start
# netstat -ntpul| grep 80检查端口有没有启动
修改测试客户端的host地址,在 C:\Windows\System32\drivers\etc\hosts下添加192.168.1.120www.yy.comyy.com使用浏览器访问www.yy.com到这里LAMP的分布式部署就完成了。需要注意的问题:动态资源需要放在PHP服务器上,当httpd服务器接收到客户端浏览器请求的是动态页面内容时,会把请求发往指定的PHP服务器上处理,但是静态页面例如:html、jpg等还是会在httpd服务器上处理,不然图片等信息可能就无法显示,因此在部署网站时,需要把网站的资源分别放在两边。分别在HTTPD服务器和PHP服务器上各自创建同样路径的目录,不然启动httpd服务时会报错。
五、实验搭建discuz# cd/tools# wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip# mkdir /data/www/discuz# unzip Discuz_X3.2_SC_GBK.zip -d /data/www/discuz/以上操作要同时在PHP和apache服务器上都做一次修改apache服务器添加如下虚拟主机<VirtualHost *:80>ServerAdmin yy@yy.comDocumentRoot "/data/www/discuz"ServerName www.discuz.comServerAlias discuz.comProxyRequests OffProxyPassMatch ^/(.*\.php)$fcgi://192.168.1.160:9000/data/www/discuz/$1ErrorLog "/usr/local/apache/logs/phpinfo-error_log"CustomLog "/usr/local/apache/logs/phpinfo-access_log"common<Directory "/data/www/discuz">AllowOverride NoneOptions NoneRequire all granted</Directory></VirtualHost>
回到MariaDB,创建数据库并授权#mysql -u root -pEnterpassword: ===>输入密码,前面设置的 ABCabc123MariaDB[(none)]> create database bbsdb;QueryOK, 1 row affected (0.00 sec)
MariaDB[(none)]> GRANT ALL ON bbsdb.* TO'bbsAdmin'@'%' IDENTIFIED BY'magelinux';QueryOK, 0 rows affected (0.02 sec)
MariaDB[(none)]> FLUSH PRIVILEGES;QueryOK, 0 rows affected (0.00 sec)
MariaDB[(none)]> SHOW DATABASES;+--------------------+|Database |+--------------------+|information_schema || bbsdb ||mysql ||performance_schema || test |+--------------------+5 rowsin set (0.01 sec)
MariaDB[(none)]>
在客户机添中如下host192.168.1.120discuz.comwww.discuz.com在浏览器中访问http://www.discuz.com/upload/install/后面按提示来即可。由于最小化安装没有字符集支持,这里看到的中文是乱码。后面如可提示没有权限,可把/data/www/discuz目录设为777即可。
页:
[1]