yum install tar unzip
现在流行用LNMP的组合框架了。整理了一小篇。
常规的做法是将数据库和Web 应用分两台进行部署。网上的文章,基本上都是在一台Linux服务器上部署Nginx + PHP + MySQL。
在编译PHP的时候都需要安装MySQL 的软件,然后带上—with-mysql的参数。但我们在这台服务器上根本就用不上MySQL的服务。
后来在PHP官网找到一个文档说明,说PHP 默认已经在某个版本后,可以实现不用MySQL 既可以编译具有MySQL连接的PHP。
本次使用的PHP版本是5.5.20
1 2 3 4 5 6 7
| yum install -y php-mysql wget http://cn2.php.net/get/php-5.5.20.tar.gz/from/this/mirror tar zxvf php-5.5.20.tar.gz cd php-5.5.20 ./configure --prefix=/usr/local/php5 --enable-fpm --with-mysql make make install
|
还额外提供了很多的编译参数,当然还需要安装一些软件依赖包。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| ./configure --prefix=/data/program/php_5.5 --enable-fpm --with-mysql \ --with-config-file-path=/usr/local/php5/etc \ --enable-mbstring \ --enable-ftp \ --with-gd \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --enable-sockets \ --with-freetype-dir=/usr \ --enable-gd-native-ttf \ --with-zlib \ --enable-sysvsem \ --enable-exif \ --enable-sysvshm \ --with-libxml-dir=/usr \ --with-xmlrpc \ --enable-xml \ --enable-shmop \ --enable-zip \ --with-mhash \ --enable-bcmath \ --enable-inline-optimization \ --with-curl \ --enable-mbregex \ --with-openssl \ --enable-opcache=no
|
软件包
1 2 3 4
| yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel yum install -y zlib zlib-devel libxml2 libxml2-devel
|
拷贝php配置文件和php-fpm的配置。
1 2 3
| cp /usr/local/src/php-5.5.20/php.ini-development /usr/local/php5/php.ini cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin
|
vim /usr/local/php5/php.ini
vim /usr/local/php5/etc/php-fpm.conf
1 2 3 4
| user = www-data group = www-data pid = run/php-fpm.pid security.limit_extensions = .php .php3 .php4 .php5 .css .js .jpg .jpeg .gif .png .html .htm
|
然后启动 php-fpm 服务:
1 2
| /usr/local/bin/php-fpm netstat -ant|grep 9000
|
1 2 3 4
| kill -INT `cat /usr/local/php5/var/run/php-fpm.pid` kill -USR2 `cat /usr/local/php5/var/run/php-fpm.pid`
|
安装Nginx
1 2 3 4 5 6 7
| groupadd -r -g 5000 nginx useradd -r -g nginx -u 5000 nginx yum -y install pcre pcre-devel wget http://nginx.org/download/nginx-1.2.9.tar.gz tar zxvf nginx-1.2.9.tar.gz cd nginx-1.2.9 ./configure --prefix=/usr/local/nginx
|
配置文件
1 2 3 4 5 6 7
| location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
|
其他的一个版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| location ~* \.(php[3-9]?|phtm[l]?)(\/.*)*$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; } location ~* \.(php[3-9]?|phtm[l]?)(\/.*)*$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; }
|
fastcgi_param 参数
1 2 3 4 5 6 7 8 9 10 11 12
| fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_cache TEST; fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid 301 1d; fastcgi_cache_valid any 1m;
|
下面是对上述代码的含义进行介绍。
第一行代码是为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间。
fastcgi_connect_timeout:指定连接到后端FastCGI的超时时间。
fastcgi_send_timeout:指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_read_timeout:指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。
fastcgi_buffer_size:用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。
fastcgi_buffers:指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。
fastcgi_busy_buffers_size:的默认值是fastcgi_buffers的两倍。
fastcgi_temp_file_write_size:表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。
fastcgi_cache:表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生,但是开启缓存也会引起很多问题,要视具体情况而定。
fastcgi_cache_valid:fastcgi用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分钟。
rm /usr/local/nginx/html/index.html
echo “<?php phpinfo(); ?>” >> /usr/local/nginx/html/index.php
下载最新版本的Discuz论坛
1 2 3 4 5 6 7 8 9 10
| yum install unzip mkdir temp cd temp wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip unzip Discuz_X3.2_SC_UTF8.zip cp -r upload /data/bbs chmod -R 777 /data/bbs/config chmod -R 777 /data/bbs/data chmod -R 777 /data/bbs/uc_client chmod -R 777 /data/bbs/uc_server
|