Discuz! PHP运行环境搭建-Linux 服务器部署标准
[p=24, 2, left]Discuz! X 是一款以 PHP 为编程语言,以 MySQL 为数据库,并使用 Apache/IIS/Nginx(任意一种即可) 提供 web 服务的产品。要搭建 Discuz! X 站点,服务器必须安装由 PHP、MySQL、Apache/IIS/Nginx 构成的环境。其中,IIS 主要用于 Windows 服务器,Apache、Nginx 多用于 Linux 服务器(即 LAMP 和 LNMP)。[/p][p=24, 2, left]Linux 服务器部署时,需要按照一定的部署顺序,即:[url=http://faq.comsenz.com/library/system/env/env_linux.htm#init]系统环境初始化[/url] -> [url=http://faq.comsenz.com/library/system/env/env_linux.htm#download]Apache/Nginx、MySQL、PHP 程序包下载[/url] -> [url=http://faq.comsenz.com/library/system/env/env_linux.htm#install]Apache/Nginx、MySQL、PHP 安装[/url][/p][p=24, 2, left]下面以在 Linux 服务器上部署 Apache、MySQL、PHP 为例,演示搭建环境的具体过程。[/p]系统约定[table=98%]
[tr][td]软件源代码包存放位置[/td][td]/usr/local/src[/td][/tr]
[tr][td]Apache、MySQL、PHP 源码包编译安装位置(prefix)[/td][td]/usr/local/Comsenz/software_name[/td][/tr]
[tr][td]脚本以及维护程序存放位置[/td][td]/usr/local/Comsenz/sbin[/td][/tr]
[tr][td]MySQL 数据库位置[/td][td]/data/mysql(可按情况设置)[/td][/tr]
[tr][td]Apache 网站根目录[/td][td]/data/wwwroot(可按情况设置)[/td][/tr]
[tr][td]Apache 虚拟主机日志根目录[/td][td]/data/wwwroot/logs(可按情况设置)[/td][/tr]
[tr][td]Apache 运行账户[/td][td]www:www[/td][/tr]
[/table]
系统环境初始化1、检查系统是否正常[p=24, 2, left]more /var/log/messages(检查有无系统级错误信息)[/p][p=24, 2, left]dmesg (检查硬件设备是否有错误信息)[/p][p=24, 2, left]cat /proc/cpuinfo (检查 CPU 频率是否正常)[/p][p=24, 2, left]top (按 1 检测 CPU 核数是否正常,内存大小是否正常)[/p][p=24, 2, left]ifconfig(检查网卡设置是否正确)[/p][p=24, 2, left]ping [url]www.qq.com[/url](检查网络是否正常)[/p]2、关闭不需要的服务[p=24, 2, left]执行 ntsysv 命令:[/p][p=24, 2, left]ntsysv[/p][p=24, 2, left]在服务设置界面,设置各项服务的开关。以下仅列出需要启动的服务,未列出的服务一律推荐关闭:[/p][p=24, 2, left]atd[/p][p=24, 2, left]crond[/p][p=24, 2, left]irqbalance[/p][p=24, 2, left]microcode_ctl[/p][p=24, 2, left]network[/p][p=24, 2, left]sendmail[/p][p=24, 2, left]sshd[/p][p=24, 2, left]syslog[/p][p=24, 2, left]关闭 SElinux ,关闭方法如下:[/p][p=24, 2, left]修改 /etc/selinux/config 文件中的 SELINUX= 为 disabled。[/p]3、更换快速下载源[p=24, 2, left]mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.old[/p][p=24, 2, left]cd /etc/yum.repos.d/[/p][p=24, 2, left]wget [url]http://c.sihost.net/CentOS-Base-sohu.repo[/url][/p][p=24, 2, left]mv CentOS-Base-sohu.repo CentOS-Base.repo[/p][p=24, 2, left]yum clean[/p][p=24, 2, left]yum -y update[/p][p=24, 2, left]lsb_release -a[/p][p=24, 2, left]yum -y erase mysql[/p][p=24, 2, left]yum -y erase php[/p][p=24, 2, left]yum -y erase httpd[/p]4、使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)[p=24, 2, left]yum -y install ntp make openssl openssl-devel pcre pcre-devel libpng libpng-devel libtiff-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel fontconfig-devel zlib zlib-devel libevent-devel gcc gcc-c++ flex bison bzip2-devel libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel[/p]5、定时校正服务器时钟,定时与中国国家授时中心授时服务器同步[p=24, 2, left]编辑计划任务:[/p][p=24, 2, left]crontab –e[/p][p=24, 2, left]加入下面一行:[/p][p=24, 2, left]*/30 * * * * ntpdate 210.72.145.44 > /dev/null 2>&1[/p][p=24, 2, left]编辑完成后,保存即可。[/p]6、下载程序包[p=24, 2, left]Apache[/p][p=24, 2, left]推荐稳定版 2.2.21,下载地址为 [url=http://archive.apache.org/dist/httpd/]http://archive.apache.org/dist/httpd/[/url][/p][p=24, 2, left]PHP[/p][p=24, 2, left]推荐稳定版 5.2.17,下载地址为 [url=http://cn.php.net/downloads.php]http://cn.php.net/downloads.php[/url][/p][p=24, 2, left]Mysql[/p][p=24, 2, left]推荐稳定版 5.5.18,下载地址为 [url=http://www.mysql.com/downloads/mysql/]http://www.mysql.com/downloads/mysql/[/url][/p][p=24, 2, left]文中的配置文件和脚本限于篇幅,请到以下地址下载(仅支持 Linux 下使用 wget 下载)[/p][p=24, 2, left]Apache控制脚本,下载地址为 [url=http://c.sihost.net/jb/httpd]http://c.sihost.net/jb/httpd[/url][/p][p=24, 2, left]Apache配置文件,下载地址为 [url=http://c.sihost.net/jb/httpd.conf]http://c.sihost.net/jb/httpd.conf[/url][/p][p=24, 2, left]单独下载各程序及文件的方式较为繁琐,我们将上面所需程序和文件整理成下载列表,如下:[/p][p=24, 2, left][url=http://c.sihost.net/lamp_tools.list]http://c.sihost.net/lamp_tools.list[/url][/p][p=24, 2, left]在 /usr/local/src 目录下执行下面两个命令,下载 lamp_tools.list 及该列表中的程序:[/p][p=24, 2, left]wget [url]http://c.sihost.net/lamp_tools.list[/url][/p][p=24, 2, left]wget -i lamp_tools.list[/p]7、创建 web 运行用户[p=24, 2, left]groupadd www[/p][p=24, 2, left]useradd -g www www[/p][p=24, 2, left]mkdir -p /data/wwwroot[/p][p=24, 2, left]chmod +w /data/wwwroot[/p][p=24, 2, left]chown www:www /data/wwwroot -R[/p]8、重新启动[p=24, 2, left]init 6[/p]
编译安装环境1、安装 MySQL[p=24, 2, left]cd /usr/local/src[/p][p=24, 2, left]tar zxvf cmake-2.8.5.tar.gz[/p][p=24, 2, left]cd cmake-2.8.5/[/p][p=24, 2, left]./configure[/p][p=24, 2, left]gmake &&gmake install[/p][p=24, 2, left]groupadd mysql[/p][p=24, 2, left]useradd -g mysql mysql[/p][p=24, 2, left]mkdir -p /data/mysql[/p][p=24, 2, left]chown -R mysql:mysql /data/mysql[/p][p=24, 2, left]cd /usr/local/src[/p][p=24, 2, left]tar zxvf mysql-5.5.18.tar.gz[/p][p=24, 2, left]cd mysql-5.5.18[/p][p=24, 2, left]cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/Comsenz/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/usr/local/Comsenz/etc/ -DWITH_BLACKHOLE_STORAGE_ENGINE=1[/p][p=24, 2, left]make && make install[/p][p=24, 2, left]cd /usr/local/Comsenz/mysql[/p][p=24, 2, left]./scripts/mysql_install_db --user=mysql[/p][p=24, 2, left]cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld[/p][p=24, 2, left]chmod 755 /etc/rc.d/init.d/mysqld[/p][p=24, 2, left]chkconfig --add mysqld[/p][p=24, 2, left]chkconfig --level 3 mysqld on[/p][p=24, 2, left]编辑 /etc/rc.d/init.d/mysqld,找到[/p][p=24, 2, left]basedir=
datadir=[/p][p=24, 2, left]改成[/p][p=24, 2, left]basedir=/usr/local/Comsenz/mysql
datadir=/data/mysql[/p][p=24, 2, left]然后在 Comsenz 目录下创建 etc 目录,并将 MySQL 配置文件拷贝到该目录下:[/p][p=24, 2, left]mkdir -p /usr/local/Comsenz/etc[/p][p=24, 2, left]cp ./support-files/my-huge.cnf /usr/local/Comsenz/etc/my.cnf[/p][p=24, 2, left]编辑配置文件 /usr/local/Comsenz/etc/my.cnf,在 [mysqld] 段增加[/p][p=24, 2, left]datadir = /data/mysql[/p][p=24, 2, left]wait-timeout = 10[/p][p=24, 2, left]max_connections = 512[/p][p=24, 2, left]max_connect_errors = 10000000[/p][p=24, 2, left]local-infile=0[/p][p=24, 2, left]在 [mysqld] 段修改[/p][p=24, 2, left]max_allowed_packet = 16M[/p][p=24, 2, left]thread_cache_size = CPU个数*2[/p][p=24, 2, left]将 log-bin 注释[/p][p=24, 2, left]mv /usr/local/Comsenz/mysql/data/* /data/mysql[/p][p=24, 2, left]service mysqld start[/p][p=24, 2, left]bin/mysqladmin -u root password 'admin999'[/p][p=24, 2, left]其中 admin999 是要设置的 root 密码。[/p]2、安装 Apache[p=24, 2, left]cd /usr/local/src/[/p][p=24, 2, left]tar zxvf httpd-2.2.21.tar.gz[/p][p=24, 2, left]cd httpd-2.2.21[/p][p=24, 2, left]./configure --prefix=/usr/local/Comsenz/apache --enable-module=rewrite --disable-access --disable-auth --disable-charset-lite --disable-include --disable-log-config --disable-env --disable-setenvif --disable-mime --disable-status --disable-autoindex --disable-asis --disable-cgid --disable-cgi --disable-negotiation --disable-dir --disable-actions --disable-userdir --disable-alias --enable-so --enable-mods-shared='access auth auth_anon auth_dbm auth_digest dav dav_fs actions alias asis autoindex cache cern_meta cgi charset_lite deflate dir disk_cache env expires file_cache headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias'[/p][p=24, 2, left]make && make install[/p][p=24, 2, left]cd /usr/local/src/[/p][p=24, 2, left]mv /usr/local/Comsenz/apache/conf/httpd.conf /usr/local/Comsenz/apache/conf/httpd.conf.old[/p][p=24, 2, left]cp -f /usr/local/src/httpd.conf /usr/local/Comsenz/apache/conf/httpd.conf[/p][p=24, 2, left]cp -f /usr/local/src/httpd /etc/init.d/httpd[/p][p=24, 2, left]chmod 755 /etc/init.d/httpd[/p][p=24, 2, left]chkconfig --add httpd[/p][p=24, 2, left]chkconfig httpd on[/p]3、编译安装 PHP 所需的支持库[p=24, 2, left]tar zxvf libiconv-1.14.tar.gz[/p][p=24, 2, left]cd libiconv-1.14/[/p][p=24, 2, left]./configure --prefix=/usr/local[/p][p=24, 2, left]make && make install[/p][p=24, 2, left]cd /usr/local/src/[/p][p=24, 2, left]tar zxvf libmcrypt-2.5.8.tar.gz[/p][p=24, 2, left]cd libmcrypt-2.5.8[/p][p=24, 2, left]./configure[/p][p=24, 2, left]make && make install[/p][p=24, 2, left]/sbin/ldconfig[/p][p=24, 2, left]cd libltdl/[/p][p=24, 2, left]./configure --enable-ltdl-install[/p][p=24, 2, left]make && make install[/p][p=24, 2, left]cd /usr/local/src/[/p][p=24, 2, left]tar zxvf mhash-0.9.9.9.tar.gz[/p][p=24, 2, left]cd mhash-0.9.9.9/[/p][p=24, 2, left]./configure[/p][p=24, 2, left]make && make install[/p][p=24, 2, left]cd /usr/local/src/[/p][p=24, 2, left]64bit 系统执行下面的:[/p][p=24, 2, left]ln -s /usr/local/lib/libmcrypt.la /usr/lib64/libmcrypt.la[/p][p=24, 2, left]ln -s /usr/local/lib/libmcrypt.so /usr/lib64/libmcrypt.so[/p][p=24, 2, left]ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib64/libmcrypt.so.4[/p][p=24, 2, left]ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib64/libmcrypt.so.4.4.8[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.a /usr/lib64/libmhash.a[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.la /usr/lib64/libmhash.la[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.so /usr/lib64/libmhash.so[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.so.2 /usr/lib64/libmhash.so.2[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib64/libmhash.so.2.0.1[/p][p=24, 2, left]ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config[/p][p=24, 2, left]ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/libiconv.so.2[/p]
[p=24, 2, left]32bit 系统执行下面的:[/p][p=24, 2, left]ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la[/p][p=24, 2, left]ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so[/p][p=24, 2, left]ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4[/p][p=24, 2, left]ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2[/p][p=24, 2, left]ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1[/p][p=24, 2, left]ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config[/p][p=24, 2, left]ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2[/p][p=24, 2, left]tar zxvf mcrypt-2.6.8.tar.gz[/p][p=24, 2, left]cd mcrypt-2.6.8[/p][p=24, 2, left]/sbin/ldconfig[/p][p=24, 2, left]./configure[/p][p=24, 2, left]make && make install[/p]4、编译安装PHP[p=24, 2, left]cd /usr/local/src[/p][p=24, 2, left]tar zxvf php-5.2.17.tar.gz[/p][p=24, 2, left]cd php-5.2.17[/p][p=24, 2, left]./configure --prefix=/usr/local/Comsenz/php5 --with-config-file-path=/usr/local/Comsenz/etc --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --enable-magic-quotes --with-mysql=/usr/local/Comsenz/mysql --with-pear --enable-sockets --with-ttf --with-freetype-dir=/usr --enable-gd-native-ttf --with-zlib --enable-sysvsem --enable-exif --enable-sysvshm --with-libxml-dir=/usr --with-apxs2=/usr/local/Comsenz/apache/bin/apxs --with-iconv=/usr/local/libiconv --with-iconv-dir=/usr/local --with-xmlrpc --enable-xml --enable-shmop --enable-zip --with-mhash --with-mcrypt --enable-discard-path --enable-bcmath --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --with-openssl[/p][p=24, 2, left]make &&make install[/p][p=24, 2, left]./libtool --finish /usr/local/src/php-5.2.17/libs[/p][p=24, 2, left]cp php.ini-dist /usr/local/Comsenz/etc/php.ini[/p][p=24, 2, left]echo 'ulimit -SHn 65535' >> /etc/rc.local[/p]5、安装 PHP 扩展模块(需要此功能的 Discuz! X 用户选装)[p=24, 2, left]安装 APC[/p][p=24, 2, left]cd /usr/local/src[/p][p=24, 2, left]tar zxvf APC-3.1.9.tgz[/p][p=24, 2, left]cd APC-3.1.9[/p][p=24, 2, left]/usr/local/Comsenz/php5/bin/phpize[/p][p=24, 2, left]./configure --enable-apc --enable-mmap --enable-apc-spinlocks --disable-apc-pthreadmutex --with-php-config=/usr/local/Comsenz/php5/bin/php-config[/p][p=24, 2, left]make &&make install[/p][p=24, 2, left]编辑配置文件 /usr/local/Comsenz/etc/php.ini,查找[/p][p=24, 2, left]extension_dir =[/p][p=24, 2, left]在下面一行添加[/p][p=24, 2, left]extension_dir = "/usr/local/Comsenz/php5/lib/php/extensions/no-debug-non-zts-20060613/"[/p][p=24, 2, left]extension="apc.so"[/p][p=24, 2, left]apc.enabled = 1[/p][p=24, 2, left]apc.shm_size = 64M[/p][p=24, 2, left]apc.stat = 1[/p][p=24, 2, left]编辑完成后,保存。[/p]6、查看确认 LAMP 环境信息、提升 PHP 安全性[p=24, 2, left]保存以下内容为 info.php 到 /data/www/,检查 phpinfo 中的各项信息是否正确。[/p][p=24, 2, left]<?[/p][p=24, 2, left]phpinfo();[/p][p=24, 2, left]?>[/p][p=24, 2, left]确认 PHP 能够正常工作后,编辑 /usr/local/Comsenz/etc/php.ini 进行设置提升 PHP 安全性。查找[/p][p=24, 2, left]disable_functions =[/p][p=24, 2, left]修改成[/p][p=24, 2, left]disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen[/p][p=24, 2, left]然后重启 web 服务:[/p][p=24, 2, left]service httpd restart[/p]
页:
[1]