您的位置:首页 > 运维架构 > Nginx

CentOS-6.4 源码包编译安装LNMP +Discuz开源论坛(mysql-5.6.14 +PHP-5.4.21+nginx-1.4.2)

2013-11-25 15:06 1361 查看
由于Nginx有大并发的优势,现在越来越多的企业LAMP平台都在向LNMP迁移。现实生产环境下,不同的业务需求都不相同,因此更多的企业会考虑使用源码搭建LNMP环境,这样可以更加灵活使用各个功能参数将性能调制到最佳状态。当然如果贵公司的环境比较简单,可以考虑rpm包安装。一、系统环境以Centos-6.4-x86_64为例,安装时选择中文Minimal模式,关闭selinux功能。[root@bbs ~]# uname -r2.6.32-358.el6.x86_64[root@bbs ~]# cat/etc/redhat-releaseCentOS release 6.4 (Final)[root@bbs ~]# vi/etc/sysconfig/iptables-A INPUT -m state --state NEW -mtcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙-A INPUT -m state --state NEW -mtcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙特别提示:很多人把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面。
二、开始安装部署LNMP1、部署环境之前,先准备好所需的软件包,简历一个ftp共享,下载libmcrypt-2.5.8.tar.gz,pcre-8.33.tar.gz,zlib-1.2.8.tar.gz,libmcrypt-2.5.8.tar.gz,mhash-0.9.9.tar.gz,nginx-1.4.3.tar.gz,mysql-5.6.14.tar.gz, php-5.4.21.tar.gz,软件包到ftp下的lnmp-bbs文件夹。并将Centos6.4关盘中yum软件仓库全都放到ftp的根目录下。修改yum配置指定的软件仓库位置如下:[local]name=CentOS-6.4-LANbaseurl=ftp://192.168.1.100/enabled=1gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6[root@bbs ~]# yum clean all //清空yum缓存[root@bbs ~]# yum check-update //检查可更新的rpm包
2、安装我们所需要的软件工具。[root@bbs ~]# yum -y install vimgcc gcc-c++ automake autoconf libtool glibc make cmake wget unzip sendmai安装一些lnmp依赖的库,yum能够自动解决依赖包问题,功能明显优越于rpm安装。[root@bbs ~]# yum -y installlibxslt-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel freetypefreetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-develncurses ncurses-devel curl libcurl-devel e2fsprogs e2fsprogs-devel krb5-devellibidn libidn-devel openssl openssl-devel3、安装nginx软件包关于nginx详细配置可参看以下文档:http://www.nginx.cn/install安装pcre软件包,为nginx提供兼容perl的正则表达式库。[root@bbs lnmp-bbs]# tar xfpcre-8.33.tar.gz[root@bbs pcre-8.33]# cd pcre-8.33[root@bbs pcre-8.33]# ./configure[root@bbs pcre-8.33]# make&& make install
为nginx提供gzip的支持[root@bbs lnmp-bbs]# tar xfzlib-1.2.8.tar.gz[root@bbs zlib-1.2.8]# cdzlib-1.2.8[root@bbs zlib-1.2.8]# ./configure[root@bbs zlib-1.2.8]# make&& make install
支持ssl协议[root@bbs lnmp-bbs]# tar xfopenssl-1.0.1e.tar.gz[root@bbs openssl-1.0.1e]# cdopenssl-1.0.1e[root@bbs openssl-1.0.1e]# ./config[root@bbs openssl-1.0.1e]# make&& make install
编译nginx[root@bbs lnmp-bbs]# useradd nginx-r -s /sbin/nologin[root@bbs lnmp-bbs]# tar xfnginx-1.4.3.tar.gz[root@bbs lnmp-bbs]# cd nginx-1.4.3[root@bbs nginx-1.4.3]# ./configure\> --prefix=/usr/local/nginx/ \> --sbin-path=/usr/local/nginx/sbin/nginx\>--conf-path=/etc/nginx/nginx.conf \>--error-log-path=/var/log/nginx/error.log \>--http-log-path=/var/log/nginx/access.log \>--pid-path=/usr/local/nginx/nginx.pid \> --user=nginx \> --group=nginx \> --with-http_ssl_module \> --with-http_flv_module \> --with-http_gzip_static_module\> --with-http_stub_status_module\>--http-client-body-temp-path=/usr/local/nginx/client \>--http-proxy-temp-path=/usr/local/nginx/proxy \>--http-fastcgi-temp-path=/usr/local/nginx/fcgi \>--with-pcre=/home/lnmp-bbs/pcre-8.33 \ //注意,这里是pcre源码包的位置,不是安装目录,写错了会报错,编译不过去>--with-zlib=/home/lnmp-bbs/zlib-1.2.8 \ //注意,这里是zlib源码包的位置>--with-openssl=/home/lnmp-bbs/openssl-1.0.1e //注意,这里是openssl源码包的位置[root@bbs nginx-1.4.3]# make&& make install[root@bbs nginx-1.4.3]# chown -Rnginx:nginx /usr/local/nginx/html[root@bbs nginx-1.4.3]# ln -s/usr/local/nginx/sbin/* /usr/local/sbin/[root@bbs nginx-1.4.3]# ln -s/usr/local/nginx/html /var/local/标准的nginx启动命令:/usr/local/nginx/sbin/nginx -c/etc/nginx/nginx.conf浏览器中输入 http://ip 看到上面nginx 欢迎界面说明启动成功

4、安装mysql数据库安装mysql包,并设置mysql开机自动启动。[root@bbs lnmp-bbs]# useradd mysql -r -s /sbin/nologin[root@bbs lnmp-bbs]# mv /etc/my.cnf /etc/my.cnf.bak //安装centos时,系统会自动穿件这个文件,一定要改名或删除,不然mysql会报错不能启动【StartingMySQL..... ERROR! The server quit without updating PID file(/var/lib/mysql/bbs.test.pid).】[root@bbs lnmp-bbs]# mkdir -p/data/mysqldb [root@bbs lnmp-bbs]# chown -Rmysql:mysql /data/mysqldb[root@bbs lnmp-bbs]# tar xfmysql-5.6.14.tar.gz[root@bbs nginx-1.4.3]# cd mysql-5.6.14cmake的详细参数,请参考以下文章:http://952259538.blog.51cto.com/6841773/1329339http://my.oschina.net/cxz001/blog/132090[root@bbs mysql-5.6.14]# cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ //mysql安装目录> -DDEFAULT_CHARSET=utf8 \ //默认的字符集> -DDEFAULT_COLLATION=utf8_general_ci\ //编码校对规则> -DENABLED_PROFILING=ON \ //是否启用代码查询分析> -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk\ //额外的字符集> -DWITH_READLINE=1 \ //使用绑定的readline> -DWITH_DEBUG=0 \ //不开启调试> -DWITH_MYISAM_STORAGE_ENGINE=1\ //myisam引擎> -DWITH_INNOBASE_STORAGE_ENGINE=1\ //innodb 引擎> -DMYSQL_DATADIR=/data/mysqldb\ //数据库存放目录> -DENABLED_LOCAL_INFILE=1 \ //允许从本地导入数据> -DEXTRA_CHARSETS=all //启用所有扩展字符集其它的一些数据引擎,在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP(Memory),其它的引擎也编译进去了,只是不启用。-DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1如果你想除去对某种引擎的支持,则在CMake编译选项中使用-DWITHOUT_<ENGINE>_STORAGE_ENGINE去掉该引擎。[root@bbs mysql-5.6.14]# make&& make install[root@bbs mysql-5.6.14]# chown -Rmysql:mysql /usr/local/mysql[root@bbs mysql-5.6.14]# \cp/usr/local/mysql/support-files/my-default.cnf /etc/my.cnf [root@bbs mysql-5.6.14]# \cp/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld[root@bbs mysql-5.6.14]# /usr/local/mysql/scripts/mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb //初始化mysql[root@bbs mysql-5.6.14]# chkconfigmysqld on //设置开机启动[root@bbs mysql-5.6.14]# service mysqld start[root@bbs mysql-5.6.14]# mysqladmin-u root password 123456 //创建数据库管理用户及密码或使用密文形式的命令创建密码:mysql_secure_installation[root@bbs mysql-5.6.14]# ln -s/usr/local/mysql/bin/* /usr/local/bin/[root@bbs mysql-5.6.14]# ln -s /usr/local/mysql/man/man1/* /usr/share/man/man1[root@bbs mysql-5.6.14]# ln -s /usr/local/mysql/man/man8/* /usr/share/man/man8
5、安装php软件包PHP5手册http://www.php100.com/manual/php/安装php软件之前,需要安装以下库,方可更佳完美的支持php软件//libmcrypt 可以使php支持更多加密算法。[root@bbs lnmp-bbs]# tar xflibmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8./configuremake && make install
//mhash是一个哈稀演函数库,它可以支持多种哈稀演算法[root@bbs lnmp-bbs]# tar xfmhash-0.9.9.tar.gzcd mhash-0.9.9./configuremake && make install
[root@bbs lnmp-bbs]# tar xfphp-5.4.21.tar.gz[root@bbs lnmp-bbs]# cd php-5.4.21[root@bbs php-5.4.21]# ./configure --prefix=/usr/local/php--enable-fpm \--with-mcrypt=/usr/local/libmcrypt\--enable-mbstring --disable-pdo--with-curl --disable-debug --disable-rpath \--enable-inline-optimization--with-bz2 --with-zlib --enable-sockets \--enable-sysvsem --enable-sysvshm--enable-pcntl --enable-mbregex \--with-mhash --enable-zip--with-pcre-regex --with-mysql --with-mysqli \--with-gd --with-jpeg-dir--with-iconv-dir --with-png-dir --with-libxml-dir \--with-curlwrappers --with-openssl--with-xmlrpc --enable-xml \--enable-gd-native-ttf --enable-shmop都需要定制哪些功能,参数选项根据自己需求去修改。[root@bbs php-5.4.21]# make && make install[root@bbs php-5.4.21]# \cp/usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf[root@bbs php-5.4.21]# \cp/home/lnmp-bbs/php-5.4.21/php.ini-production /usr/local/php/lib/php.ini[root@bbs php-5.4.21]# \cp/home/lnmp-bbs/php-5.4.21/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm[root@bbs php-5.4.21]# chmod +x /etc/init.d/php-fpm[root@bbs php-5.4.21]# ln -s/usr/local/php/bin/* /usr/local/bin/[root@bbs php-5.4.21]# ln -s/usr/local/php/sbin/* /usr/local/sbin/[root@bbs php-5.4.21]# ln -s/usr/local/php/etc/php-fpm.conf /etc/[root@bbs php-5.4.21]# ln -s/usr/local/php/lib/php.ini /etc/
6、无需重新编译php加入ftp扩展的解决方法在php编译的时候,没有添加ftp模块,我们不需要从新编译,从新安装php,也可以添加ftp模块。首先,进入源码目录cd php-5.4.21/ext/ftp#运行phpize生成configure/usr/local/php/bin/phpize#编译,指定php-config,注意这里的php-config,不是php.ini./configure--with-php-config=/usr/local/php/bin/php-config#上面可以添加--enable-ftp,也可以不用添加#编译安装make && make install#生成一个目录来存放扩展的模块mkdir /usr/local/php/ext#复制ftp.so到模块目录cp/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ftp.so/usr/local/php/ext/#编辑php.ini文件,指定PHP到哪个目录读模块vi /usr/local/php/lib/php.ini复制代码代码如下:extension_dir="/usr/local/php/ext"#Load模块extension=ftp.so#保存退出至此,成功完成ftp扩展的加载。
三、修改配置文件1、nginx配置文件修改vim /etc/nginx/nginx.conf//修改nginx使用的用户为nginx,编译时指定过默认使用的用户,此处默认注释即可,不修改也没关系2 user nginx; //添加php默认打开页面45 index index.php index.htmlindex.htm;//去掉一下注释,开启FastCGI功能,用来调用php接口65 location ~ \.php$ {66 root html;67 fastcgi_pass 127.0.0.1:9000; //设置监听IP及端口68 fastcgi_index index.php;69 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; //红色部分为网站相对路径,或改成绝对路径 70 include fastcgi_params; 71 }
2、php配置文件vim /usr/local/php/etc/php-fpm.conf去掉下边的分号 pid为php-fpm产生的进程号25 pid = run/php-fpm.pidphp的用户和组都改成nginx148 user = nginx149 group = nginxvim /usr/local/php/lib/php.ini禁止显示php版本的信息376 expose_php = Off//时区改为PRC,就是中华人民共和国。919 date.timezone = PRC测试php页面能够正常访问vim /usr/local/nginx/html/test.php<?phpphpinfo(); //长标签,php默认此模式?>或<?phpinfo();?> //短标签,需求改php.ini开启短标签,不推荐开启短标签功能
测试mysql是否成功vim /usr/local/nginx/html/conn.php加入以下<?php$link=mysql_connect('localhost','root','123456');var_dump($link);?>输入http://ip/conn.php看到下面字样,表示成功:resource(3) of type (mysql link)
三、Discuz_X3.1_SC_UTF8.zip1、使用unzip命令对Discuz_X3.1_SC_UTF8.zip进行解压,将upload中的文件全部复制到/usr/local/nginx/html里边。把目录属组都改成nginx或目录权限改成777,否则论坛无法使用,然后登陆浏览器,按向导安装就可以了。


数据库地址填写mysql服务器地址,如果是本机,写localhost就行。管理员账号和密码一定要记住,不然无法对网站用户进行管理。


mysql服务在本机时,可能出现此错误,这时数据库服务器地址不要使用localhost,改成127.0.0.1即可。修改论坛logo,第一种方法就是直接上传图片,在管理中心修改链接。第二种方法是直用相同名字的图片,直接替换网站路径里的图片。

修改左下角的外链,上半部分直接在管理中心去修改就可以了鼠标点击一下就可以了。


下半部分就要修改网页代码了,才能屏蔽掉。注意:htm页面用<!-- -->注释vim /usr/local/nginx/html/template/default/common/footer.htm76 <!-- </div>77 <div id="frt">78 <p>Powered by<strong><a href="http://www.discuz.net "target="_blank">Discuz!</a></strong> <em>$_G['setting']['version']</em><!- -{if!empty($_G['setting']['boardlicensed'])}--> <ahref="http://license.com senz.com/?pid=1&host=$_SERVER[HTTP_HOST]"target="_blank">Licensed</a><!--{/ if}--></p>79 <pclass="xs0">© 2001-2013 <a href="http://www. comsenz.com"target="_blank">Comsenz Inc.</a></p>80 </div>-->

右下角外链修改也是分为2部分,进行修改。

在管理中心,可以对Comsenz Inc.进行修改,删除或是改成其它的名字或链接。防水墙的链接修改,有一下几种方案。vim/usr/local/nginx/html/source/plugin/security/security.class.php①显示图片和图片上的文字,将原来的代码改成一下代码102 /* function global_footerlink() {103 return ' <ahref="http://discuz.qq.com/service/security"target="_blank" title="'.lang('plugin/security', 'title').'"><imgsrc="static/image/common/security.png"></a>';104 }102 function global_footerlink() {103 return ' <a target="_blank" title="'.lang('plugin/security','title').'" rel="nofollow"><img src ="static/image/common/security.png"></a> ';104 }②如果你要保留图标,那就只删除<a>…</a>标签的内容就可以了,<img>就别删了。③将图标与链接全部删除:用/*…..*/注释掉相关代码,或全部删除。
2、discuz论坛创始人密码忘记解决办法方法一直接修改数据库,前提是你能看到这个数据库用discuz建立一个论坛,创始人的密码忘了,只有修改数据库。修改这个表cdb_members。discuz中用的密码是用两次md5加密的。create proc updateAdminPwdasdeclare salt varchar(30)select set salt = salt from cdb_members whereusername = 'admin'update cdb_membersset password =md5(concat(md5('admin'),salt))where username = 'admin'
方法二在网站根目录下的子目录uc_server/data中打开找到文件config.inc.php以及 config/config_global.php、config/config_ucenter.php (这两个如果没有下面代码可以不用修改)找到类似以下代码:define('UC_FOUNDERPW','256955f2e034sad74f0e2953572ea360');define('UC_FOUNDERSALT', '217804');然后用以下代码替换define('UC_FOUNDERPW','047099adb883dc19616dae0ef2adc5b6');define('UC_FOUNDERSALT', '311254');修改完后,Ucenter创始人的密码就变为: 123456789 ,这时可以登录到Ucenter里再把密码改为自己想要的就可以了。方法三:创建下面的php文件<?php$ucfounderpw = '123123';$ucsalt = rand(100000,999999);$ucfounderpw =md5(md5($ucfounderpw).$ucsalt);echo $ucfounderpw.'<br/>'.$ucsalt;?>生成的ucfounderpw和ucsalt替换掉bbs\uc_server\data\config.inc.php文件里的参数方法三:下载工具程序直接修改,当然要上传到空间的http://www.discuz.net/thread-1667317-1-1.html
3、discuz数据库迁移,mysql密码更改后,相关配置文件修改如下网站系统需要修改的位置有两处 Discuz 和 UC-center①路径: /usr/local/nginx/html/config/config_global.php 这个根据你网站安装的路径而定。 打开 config_global.php 文件修改:$_config['db']['1']['dbpw'] = '原来密码'; 原来密码修改为新的数据库密码。②路径:/usr/local/nginx/html/config/config_ucenter.php 打开 config_ucenter.php 文件同样要修改:define('UC_DBPW', '原来密码');③路径:/usr/local/nginx/html/uc_server/data/config.inc.php 打开 config.inc.php 文件修改:define('UC_DBPW', '原来密码');原来密码修改为新的数据库密码。原来密码修改为新的数据库密码。在这个不修改的情况下,用户包括管理员都无法登录的,这个是用户登录管理密码。到这里整个论坛都恢复正常访问了。
Discuz默认使用的数据库引擎是MyISAM,MySQL InnoDB 引擎相比我们论坛默认的 MyISAM 引擎在写性能上有很大提升。InnoDB 支持行锁(更准确的说是索引锁)而 MyISAM 只能是表锁。使得 InnoDB 在高并发环境中有更好的表现。在 Discuz! X2 或者更早的版本,有站长手动把数据库引擎转为 InnoDB , 来避免论坛发帖高峰时期带来的卡顿,但是 Discuz! X2.5 以及 Discuz! X3版本,由于 post 表使用了联合自增主键,而InnoDB 不支持这个特性,而无法手动把数据库引擎改为 InnoDB 。考虑到大型站点站长们的这个需求后,发布了在大型论坛测试过的Discuz! X2.5 / X3 InnoDB 补丁测试版。基本原理:1,去掉 post 表 position 字段的自增属性。2,利用内存缓存来记录每个帖子的当前最大楼层数,并在发帖请求过来时依次分发并自增楼层号。3,由于内存缓存速度极快当多个发帖请求过来后能快速自增并分配楼层号,每条插入语句都能快速领取到唯一楼层号。4,内建了错误修复机制避免内存失效或者统计错误时自动修复。5,取消了 count(*) 语句,改为读取模糊值。适应场景:发帖比较频繁,适应于会员热衷于交流场景,日发帖一般在数万贴每日的。服务器要求:1,独立服务器,或能执行命令行(命令行避免超时)2,启用了内存缓存(建议为 memcache或redis )具体操作请看以下链接:http://www.discuz.net/thread-3251930-1-1.htmlhttp://www.discuz.net/thread-3330856-1-1.htmlhttp://www.discuz.net/thread-3334048-1-1.html

附件:http://down.51cto.com/data/2363787
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息