LNMP集群搭建
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
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
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
<?php
phpinfo()
?>
测试
curl localhost
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模块的原因
小结
编译数据库时可能会出现以下报错
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
This CMake script will look for boost in <directory>. 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=<directory> 参数 -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时,建议还是先直接编译,在编译的过程中逐步解决依赖性问题
未完