Linux CentOS编译安装LNMP环境 +discuz + PHPmyadmin
产品组成
Discuz-3.3 UTF8 完整版
Nginx-1.6.3
PHP-5.5.38
MysqL-5.5.20
PHPmyadmin-4.6.6
Openssl-1.0.0d
Vsftpd
产品特点
1、基于阿里云纯净镜像方便、安全、快捷、稳定
2、所有软件采用编译安装最小消耗系统资源
3、Discuz是一套通用的社区论坛软件系统用户可以在不需要任何编程的基础上通过简单的设置和安装在互联网上搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。
4、使用Nginx+PHP-fpm对高并发处理能力更好告别因为配置导致的502 报错
5、Nginx 开启https 模块支持优化配置Nginx提搞Nginx 数据处理能力运行更加稳定快速。
6、支持pathinfo开启pdo_MysqL 以及所有适合Discuz 运行的常见组件7、openssl 使用1.0.0d 版
使用说明
网站存放目录/data/www
Discuz 框架程序目录/data/www
PHPmyadmin 路径/data/www/PHPmyadmin
FTP 存放路径/data/ftp
编译包存放路径/usr/local/src
Discuz 框架程序访问地址 http://IP/
MysqL 账户root 密码10idccom
PHPmyadmin 管理地址 http://IP:81
FTP 账号admins 密码10idccom
使用教程
/etc/init.d/Nginx start|stop|restart [启动|停止|重启]
/etc/init.d/PHP-fpm start|stop|restart [启动|停止|重启]
/etc/init.d/MysqL start|stop|restart [启动|停止|重启]
安装编译工具及库文件使用CentOS yum命令安装
yuminstall-ymakeapr*autoconfautomakecurl-develgccgcc-c++zlib-developensslopenssl-develpcre-develkernelkeyutilsperlkernel-headerscompat*mpfrcppglibclibgomplibstdc++-develpplcloog-pplkeyutils-libs-devellibcom_err-devellibsepol-devellibselinux-develkrb5-devellibjpeg-devellibpng-develzlib-devellibXpm*freetypePHP-commonncurses*libtool*libxml2libxml2-develpatchfreetype-devel
开始安装
安装cmake
cd/usr/local/src#进入软件目录 tarzxfcmake-2.8.6.tar.gz#解压安装包 cdcmake-2.8.6#进入解压目录 ./configure#安装包配置 make#编译 makeinstall#安装
安装MysqL
groupaddMysqL#添加MysqL组 useradd-gMysqLMysqL-s/sbin/nologin#创建用户MysqL并加入到MysqL组不允许MysqL用户直接登录系统 mkdir-p/data/MysqL#创建MysqL数据库存放目录 chown-RMysqL:MysqL/data/MysqL#设置MysqL数据库目录权限 mkdir-p/usr/local/MysqL#创建MysqL安装目录 cd/usr/local/src tarzxfMysqL-5.5.20.tar.gz#解压 cdMysqL-5.5.20 cmake.-DCMAKE_INSTALL_PREFIX=/usr/local/MysqL-DMysqL_DATADIR=/data/MysqL-DSYSCONFDIR=/etc#配置 make#编译 makeinstall#安装 cd/usr/local/MysqL cp./support-files/my-huge.cnf/etc/my.cnf#拷贝配置文件注意如果/etc目录下面默认有一个my.cnf直接覆盖即可 vi/etc/my.cnf#编辑配置文件,在[MysqLd]部分增加下面一行 datadir=/data/MysqL#添加MysqL数据库路径 :wq!#保存退出 ./scripts/MysqL_install_db--user=MysqL#生成MysqL系统数据库 cp./support-files/MysqL.server/etc/rc.d/init.d/MysqLd#把MysqL加入系统启动 chmod755/etc/rc.d/init.d/MysqLd#增加执行权限 chkconfigMysqLdon#设置开机启动 vi/etc/rc.d/init.d/MysqLd#编辑 basedir=/usr/local/MysqL#MysqL程序安装路径 datadir=/data/MysqL#MysqL数据库存放目录 /etc/init.d/MysqLdstart#启动 vi/etc/profile#把MysqL服务加入系统环境变量在最后添加下面这一行 exportPATH=$PATH:/usr/local/MysqL/bin :wq!#保存退出
下面这两行把MysqL的库文件链接到系统默认的位置在编译类似PHP等软件时可以不用指定MysqL的库文件地址。
ln-s/usr/local/MysqL/lib/MysqL/usr/lib/MysqL ln-s/usr/local/MysqL/include/MysqL/usr/include/MysqL
登录MysqL修改root密码(如果登录不上或者显示找不到MysqL命令,就断开远程连接,重新连接) MysqL-uroot MysqL>SETPASSWORDFOR'root'@'localhost'=PASSWORD('10idccom');
/etc/init.d/MysqLdrestart#重启
到此MysqL安装完成
安装pcre
cd/usr/local/src mkdir/usr/local/pcre#创建安装目录 tarzxfpcre-8.36.tar.gz cdpcre-8.36 ./configure--prefix=/usr/local/pcre#配置 make makeinstall
安装 Nginx
cd/usr/local/src groupaddwww#添加www组 useradd-gwwwwww-s/sbin/nologin#创建Nginx运行账户www并加入到www组不允许www用户直接登录系统 tarzxfNginx-1.6.3.tar.gz tarzxfopenssl-1.0.0d.tar.gz cdNginx-1.6.3 ./configure--prefix=/usr/local/Nginx--without-http_memcached_module--user=www--group=www--with-http_stub_status_module--with-pcre=/usr/local/src/pcre-8.36--with-openssl=/usr/local/src/openssl-1.0.0d--with-http_ssl_module
注意:�Cwith-pcre=/usr/local/src/pcre-8.30指向的是源码包解压的路径而不是安装的路径否则会报错
最后两个是开启ssl,如不开启可以不添加
make makeinstall /usr/local/Nginx/sbin/Nginx#启动Nginx vi/etc/rc.d/init.d/Nginx#设置Nginx开机启动
######################################################################### #!/bin/bash #NginxStartupscriptfortheNginxHTTPServer #itisv.0.0.2version. #chkconfig:-8515 #description:Nginxisahigh-performancewebandproxyserver. #Ithasalotoffeatures,butit'snotforeveryone. #processname:Nginx #pidfile:/var/run/Nginx.pid #config:/usr/local/Nginx/conf/Nginx.conf Nginxd=/usr/local/Nginx/sbin/Nginx Nginx_config=/usr/local/Nginx/conf/Nginx.conf Nginx_pid=/usr/local/Nginx/logs/Nginx.pid RETVAL=0 prog="Nginx" #Sourcefunctionlibrary. ./etc/rc.d/init.d/functions #Sourcenetworkingconfiguration. ./etc/sysconfig/network #Checkthatnetworkingisup. [${NETWORKING}="no"]&&exit0 [-x$Nginxd]||exit0 #StartNginxdaemonsfunctions. start(){ if[-e$Nginx_pid];then echo"Nginxalreadyrunning...." exit1 fi echo-n$"Starting$prog:" daemon$Nginxd-c${Nginx_config} RETVAL=$? echo [$RETVAL=0]&&touch/var/lock/subsys/Nginx return$RETVAL } #StopNginxdaemonsfunctions. stop(){ echo-n$"Stopping$prog:" killproc$Nginxd RETVAL=$? echo [$RETVAL=0]&&rm-f/var/lock/subsys/Nginx/usr/local/Nginx/logs/Nginx.pid } reload(){ echo-n$"Reloading$prog:" #kill-HUP`cat${Nginx_pid}` killproc$Nginxd-HUP RETVAL=$? echo } #Seehowwewerecalled. case"$1"in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; status) status$prog RETVAL=$? ;; *) echo$"Usage:$prog{start|stop|restart|reload|status|help}" exit1 esac exit$RETVAL ################################################################################## :wq!#保存退出
返回命令行操作
chmod775/etc/rc.d/init.d/Nginx#赋予文件执行权限 chkconfigNginxon#设置开机启动 /etc/rc.d/init.d/Nginxrestart#重启
安装libmcrypt
cd/usr/local/src tarzxflibmcrypt-2.5.7.tar.gz#解压 cdlibmcrypt-2.5.7 ./configure#配置 make#编译 makeinstall#安装
安装PHP
cd/usr/local/src tarzxfPHP-5.5.38.tar.gz cdPHP-5.5.38 mkdir-p/usr/local/PHP5#建立PHP安装目录 ./configure--prefix=/usr/local/PHP5--with-config-file-path=/usr/local/PHP5/etc--with-MysqL=/usr/local/MysqL--with-MysqLi=/usr/local/MysqL/bin/MysqL_config--with-MysqL-sock=/tmp/MysqL.sock--with-pdo-MysqL=/usr/local/MysqL--with-gd--with-iconv--with-zlib--enable-xml--enable-magic-quotes--enable-safe-mode--enable-bcmath--enable-shmop--enable-sysvsem--enable-inline-optimization--with-curlwrappers--enable-mbregex--enable-fpm--enable-mbstring--enable-ftp--enable-gd-native-ttf--with-openssl--enable-pcntl--enable-sockets--with-xmlrpc--enable-zip--enable-soap--without-pear--with-gettext--enable-session--with-mcrypt--with-curl--with-jpeg-dir--with-freetype-dir make#编译 makeinstall#安装
如果内存小于1G会报错make: * [ext/fileinfo/libmagic/apprentice.lo] Error 1
在./configure添加�Cdisable-fileinfo 即可
cpPHP.ini-production/usr/local/PHP5/etc/PHP.ini#复制PHP配置文件到安装目录 rm-rf/etc/PHP.ini#删除系统自带配置文件 ln-s/usr/local/PHP5/etc/PHP.ini/etc/PHP.ini#添加软链接 cp/usr/local/PHP5/etc/PHP-fpm.conf.default/usr/local/PHP5/etc/PHP-fpm.conf#拷贝模板文件为PHP-fpm配置文件 vi/usr/local/PHP5/etc/PHP-fpm.conf#编辑 pid=run/PHP-fpm.pid#取消前面的分号 user=www#设置PHP-fpm运行账号为www group=www#设置PHP-fpm运行组为www cp/usr/local/src/PHP-5.5.38/sapi/fpm/init.d.PHP-fpm/etc/rc.d/init.d/PHP-fpm#设置PHP-fpm开机启动拷贝PHP-fpm到启动目录 chmod+x/etc/rc.d/init.d/PHP-fpm#添加执行权限 chkconfigPHP-fpmon#设置开机启动 /etc/init.d/PHP-fpmstart
vi/usr/local/PHP5/etc/PHP.ini#编辑配置文件
找到
disable_functions=
修改为
disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
列出PHP可以禁用的函数如果某些程序需要用到这个函数可以删除取消禁用。
找到
;date.timezone=
修改为
date.timezone=PRC#设置时区
找到
expose_PHP=On
修改为
expose_PHP=OFF#禁止显示PHP版本的信息
PS在编译PHP的过程中可能会报UNDEFINED REFERENCE TO `LIBICONV_OPEN 无法编译PHP LIBICONV错误.
配置Nginx支持PHP
mkdir/data/www vi/usr/local/Nginx/conf/Nginx.conf#编辑配置文件 userwwwwww;#首行user去掉注释,修改Nginx运行组为wwwwww必须与/usr/local/PHP5/etc/PHP-fpm.conf中的user,group配置相同否则PHP运行出错index server{ listen80; server_namelocalhost; location/{ root/data/www/; indexindex.PHPindex.htmlindex.htm; } error_page500502503504/50x.html; location=/50x.html{ roothtml; } location~\.PHP${ root/data/www/; fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.PHP; fastcgi_paramSCRIPT_FILENAME/data/www/$fastcgi_script_name; includefastcgi_params; } }
注意取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为/data/webroot/(此为网站根目录绝对路径)$fastcgi_script_name
/etc/init.d/Nginxrestart#重启Nginx
测试
vim /data/www/index.PHP
<?PHP
PHPinfo();
?>
==========================================================================================
rm -rf /data/www/index.PHP
测试步骤可省略。测试好了之后装论坛和PHPmyadmin
unzipDiscuz_X3.3_SC_UTF8 mvupload/data/wwwupload是Discuz_X3.3_SC_UTF8解压出来的 cd/data/www/ chown-Rwww:wwwupload/* cd/usr/local/src tarzxfPHPMyAdmin-4.6.6-all-languages.tar.gz-C/data/www/ cd/data/www mvPHPMyAdmin-4.6.6-all-languagesPHPmyadmin vi/usr/local/Nginx/conf/Nginx.conf server{ listen80; server_namelocalhost; location/{ root/data/www/upload; indexindex.PHPindex.htmlindex.htm; } error_page500502503504/50x.html; location=/50x.html{ roothtml; } location~\.PHP${ root/data/www/upload; fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.PHP; fastcgi_paramSCRIPT_FILENAME/data/www/upload/$fastcgi_script_name; includefastcgi_params; } } server{ listen81; server_namelocalhost; location/{ root/data/www/PHPmyadmin; indexindex.PHPindex.htmlindex.htm; } error_page500502503504/50x.html; location=/50x.html{ roothtml; } location~\.PHP${ root/data/www/PHPmyadmin; fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.PHP; fastcgi_paramSCRIPT_FILENAME/data/www/PHPmyadmin/$fastcgi_script_name; includefastcgi_params; } } /etc/init.d/Nginxrestart 安装论坛http://ip 登录PHPmyadminhttp://ip:81 MysqL账号:root密码10idccom
==========================================================================================
yum install -y vsftpd
mkdir -p /data/ftp
chmod -R 755 /data/ftp
useradd -s /sbin/nologin admins
passwd admins
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=no
在最后一行添加
local_root=/data/ftp
/etc/init.d/vsftpd start
~~~~~~~~~~~或者~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#yuminstall-yvsftpd #useradd-d/data/ftp-s/sbin/nologin-Madmins-gftp #passwdadmins #mkdir-p/data/ftp #chmod-R755/data/ftp #vi/etc/vsftpd/vsftpd.conf anonymous_enable=no ascii_upload_enable=YES ascii_download_enable=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list use_localtime=YES添加 #vi/etc/vsftpd/chroot_list admins #/etc/init.d/vsftpdrestart ftp访问地址ftp://ip账号:admins密码:10idccom
不建议在网页上测试,建议直接使用ftp客户端工具测试