LNMP集群搭建

LNMP集群搭建

  • MySQL
  • PHP
  • NGINX
  • Discuz论坛搭建
  • 小结

MySQL

解压安装mysql

tar zxf mysql-boost-5.7.17.tar.gz

安装cmake(相当于configure),用来编译mysql

yum install -y gcc gcc-c++ ncurses-devel bison
yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm 同时解决依赖性
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安装目录 
         -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \  #数据库存放目录
	 -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ #Unix socket 文件路径
	 -DWITH_MYISAM_STORAGE_ENGINE=1 \  #安装 myisam 存储引擎
	 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装 innodb 存储引擎
	 -DDEFAULT_CHARSET=utf8 \ #使用 utf8 字符
	 -DDEFAULT_COLLATION=utf8_general_ci \ #校验字符
	 -DEXTRA_CHARSETS=all \#安装所有扩展字符集

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ 
     -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \  
	 -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ 
	 -DWITH_MYISAM_STORAGE_ENGINE=1 \  
	 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 
	 -DDEFAULT_CHARSET=utf8 \ 
	 -DDEFAULT_COLLATION=utf8_general_ci \ 
	 -DEXTRA_CHARSETS=all \
	 -DWITH_BOOST=boost/boost_1_59_0/ 


make && make install (过程较长) ##如果make还有问题,删除原来的目录,重新解压编译

重新编译时,需要清除原来的对象文件和缓存信息
make clean;rm -fr CmakeCache.txt

启动数据库

复制启动脚本
cd /root/mysql-5.7.17/support-files
cp mysql.server /etc/init.d/mysqld   

备份
cp my.cnf my.cnf.bak   
cp my-default.cnf /etc/my.cnf

vim my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock

groupadd -g 27 mysql
useradd -u 27 -g 27 mysql (id=27是因为rpm默认安装时mysql用户的id为27,并非强制)
chown mysql.mysql /usr/local/lnmp/mysql -R (修改mysql目录的权限,使其对mysql用户可写)

添加环境变量
vim ~/.bash_profile 
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile

mysqld --user=mysql --initialize(以mysql用户身份初始化)
初始化会生成一个临时密码,用于登录mysql(要记住此密码)

chown root /usr/local/lnmp/mysql -R   所有者改为root
chown mysql /usr/local/lnmp/mysql/data -R  ##数据目录所有者必须是mysql,不然mysql用户不能写

/etc/init.d/mysqld start
mysql_secure_installation

mysql -uroot -pr#9VqAoA/au: #使用刚才的临时密码

执行mysql_secure_installation,然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求,剩余全部选 y

LNMP集群搭建_第1张图片

PHP

解决依赖问题

tar jxf php-5.6.35.tar.bz2
yum -y install bzip2
yum -y install wget vim pcre pcre-devel openssl openssl-devel httpd-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
yum install -y re2c-0.13.5-1.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash

--with-config-file-path=/etc      指定php.ini位置
--with-MySQL=mysql安装目录,对mysql的支持
--with-MySQLi=mysqli文件目录,优化支持
--enable-fpm
--with-freetype-dir  打开对freetype字体库的支持 
--with-zlib 打开zlib库支


make && make install

PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,它其实是PHP源代码的一个补丁,旨在将Fast-CGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。新版的PHP已经集成了php-fpm,在./configure的时候带 –enable-fpm参数即可开启PHP-FPM

以上为php需要编译的模块,把刚才编译mysql的参数要加进来,添加mysqlnd(这是mysql的驱动,php开发的

更改配置文件

cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf

user = nginx
group = nginx
pid = run/php-fpm.pid

cp php.ini-production /usr/local/lnmp/php/etc/php.ini 
date.timezone = Asia/Shanghai

启动PHP

cd /root/lnmp/php-5.6.35/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm 
chmod +x /etc/init.d/php-fpm 

/etc/init.d/php-fpm start

测试

vim /etc/profile.d/php.sh
PATH=$PATH:/usr/local/php/bin
export PATH
source /etc/profile
php -v

LNMP集群搭建_第2张图片

NGINX

解压,解决依赖性问题,注释debug和版本信息

tar zxf nginx-1.14.0.tar.gz 
pcre-devel

cd nginx-1.14.0/
vim src/core/nginx.h
#define NGINX_VER          "nginx/"
将此行末尾显示nginx版本号的配置删除

vim auto/cc/gcc 
 debug
#CFLAGS="$CFLAGS -g" 
将这2行注释,关闭debug

编译安装nginx

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module 
--with-threads --with-file-aio --user=nginx --group=nginx

make && make install

开启php模块

vim 

43  location / {
44             root   html;
45             index  index.php index.html index.htm; (添加php页面)
46         }


65  location ~ \.php$ {
66             root           html;
67             fastcgi_pass   127.0.0.1:9000;
68             fastcgi_index  index.php;
69             #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
70             include        fastcgi.conf;
71         }

启动nginx,编写发布文件

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
nginx -t	
nginx		


vim /usr/local/lnmp/nginx/html/index.php
()
?>

测试

curl localhost

LNMP集群搭建_第3张图片

Discuz论坛搭建

unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/

将解压后的upload目录改名为bbs,便于访问
mv upload bbs

浏览器访问
http://172.25.0.1/bbs

点击同意后会出现很多目录不存在和不可写的报错

cd /usr/local/lnmp/nginx/html/bbs

chmod 777 config/ -R
chmod 777 data/ -R
chmod 777 uc_server/ uc_client/  -R
给以上目录增加权限,再刷新就可以了

进入浏览器进行配置

选择全新安装--->填写数据库名(任意) 数据库用户名:root 数据库密码:自己设定的数据库root用户密码
管理员帐号:admin 密码:westos
下面会报数据库连接错误:No such file or directory

PHP和MySQL连接

vim /usr/local/lnmp/php/etc/php.ini

pdo_mysql.default_socket= /usr/local/lnmp/mysql/data/mysql.sock
mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock

重新加载php
/etc/init.d/php-fpm reload

再次刷新页面,还是报错:Permission denied

由于 nginx用户 对于 /usr/local/lnmp/mysql/data 目录没有权限
chmod 755 data/
再次刷新,成功安装

点击页面中“管理中心”,会出现报错:Please delete install/index.php via FTP!

cd /usr/local/lnmp/nginx/html/bbs/install
rm -fr index.php 

可以在数据库中查找到相关信息

use databases;
show tables;
select * from pre_ucenter_members;

如果把nginx配置文件中php模块注释掉,再刷新页面,会让你下载,这就是打开php模块的原因
LNMP集群搭建_第4张图片

小结

编译数据库时可能会出现以下报错

CMake Error at cmake/boost.cmake:81 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=

  This CMake script will look for boost in .  If it is not there,
  it will download and unpack it (in that directory) for you.

  If you are inside a firewall, you may need to use an http proxy:

  export http_proxy=http://example.com:80
解决
缺少 -DWITH_BOOST= 参数 -DWITH_BOOST=boost/boost_1_59_0/ (可Tab补齐)
后面编译会有一个warning:
CMake Warning at cmake/bison.cmake:20 (MESSAGE):
  Bison executable not found in PATH
Call Stack (most recent call first):
  sql/CMakeLists.txt:514 (INCLUDE)

解决
yum install -y bison

初次编译PHP时,建议还是先直接编译,在编译的过程中逐步解决依赖性问题

未完

你可能感兴趣的:(Linux企业运维)