CENTOS + NGINX + PHP + MYSQL + MEMECACHE
[磁盘分区]
新装的机器先查看df -lh查看分区划分的空间,看自己大部分的数据是要放在root分区还是home分区,先调整好分区的大小。
[selinux]
#selinux涉及权限非常多,安装lnmp需要关闭
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
yum -y install gcc gcc-c++
[ LIBEVENT ]
cd ..
tar -zxf libevent-2.0.22-stable.tar.gz && cd libevent-2.0.22-stable
./configure --prefix=/opt/wenv/libevent
make
make install
[ LIBLTDL ]
cd ..
tar -zxf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8
./configure
make && make install
cd libltdl
./configure -enable-ltdl-install
make && make install
[ LIBXML ]
cd ../..
tar -zxf libxml2-2.7.2.tar.gz && cd libxml2-2.7.2
./configure --prefix=/opt/wenv/libxml
make && make install
[ MEMCACHED ]
cd ..
tar -zxf memcached-1.4.20.tar.gz && cd memcached-1.4.20
./configure --prefix=/opt/wenv/memcached --with-libevent=/opt/wenv/libevent
make && make install
[ MYSQL ]
yum -y install cmake make ncurses-devel
cd ..
tar -zxf mysql-5.6.20.tar.gz && cd mysql-5.6.20
cmake -DCMAKE_INSTALL_PREFIX=/opt/wenv/mysql \
-DMYSQL_UNIX_ADDR=/dev/shm/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DENABLED_PROFILING=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306\
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_BASEDIR=/opt/wenv/mysql \
-DMYSQL_DATADIR=/home/mysql/data
make && make install
useradd mysql -M -s /sbin/nologin
mkdir /home/mysql
mkdir /home/mysql/data
/opt/wenv/mysql/scripts/mysql_install_db --user=mysql --basedir=/opt/wenv/mysql --datadir=/home/mysql/data
chown mysql.mysql -R /opt/wenv/mysql
mv /opt/wenv/mysql/my.cnf /etc/my.cnf -f
/bin/cp /opt/wenv/mysql/support-files/mysql.server /etc/init.d/mysqld
/bin/cp /opt/wenv/mysql/lib/libmysqlclient.so.18 /usr/lib64/
[ PCRE ]
cd ..
tar -zxf pcre-8.33.tar.gz && cd pcre-8.33
./configure --prefix=/opt/wenv/pcre --enable-shared --enable-static --enable-fast-install
make && make install
[ NGINX ]
yum -y install zlib-devel openssl-devel
cd ..
tar -zxf nginx-1.8.0.tar.gz && cd nginx-1.8.0
./configure --user=nobody --group=nobody --prefix=/opt/wenv/nginx --with-pcre=../pcre-8.33 --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6
make && make install
[ OCI8 ]
下载的文件:
## 这是PHP连接oracle的扩展 下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
instantclient-basic-linux.x64-12.1.0.2.0.zip
instantclient-sdk-linux.x64-12.1.0.2.0.zip
解开压缩
unzip instantclient-basic-linux.x64-12.1.0.2.0.zip
unzip instantclient-sdk-linux.x64-12.1.0.2.0.zip
mv instantclient_12_1 /opt/wenv/liboci
手工增加link
ln -s /opt/wenv/liboci/libclntsh.so.12.1 /opt/wenv/liboci/libclntsh.so
ln -s /opt/wenv/liboci/libocci.so.12.1 /opt/wenv/liboci/libocci.so
echo /opt/wenv/liboci >> /etc/ld.so.conf
ldconfig
[ PHP ]
如果不想手动安装GD则执行如下命令
yum -y install libxml2-devel curl-devel gd-devel bzip2-devel bzip2-devel
cd ..
tar -zxf php-5.6.12.tar.gz && cd php-5.6.12
echo '/usr/local/lib' >> /etc/ld.so.conf
echo '/usr/local/lib64' >> /etc/ld.so.conf
ldconfig
##-- 以mysqli驱动方式编译
./configure --prefix=/opt/wenv/php --with-config-file-path=/opt/wenv/php/etc --with-mysql=/opt/wenv/mysql --with-mysqli=/opt/wenv/mysql/bin/mysql_config \
--with-iconv --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-fpm --without-pear \
--enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt \
--enable-gd-native-ttf --enable-pcntl --enable-sockets --enable-zip --enable-soap --without-pear --with-openssl --with-mhash \
--with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-gd-native-ttf --enable-exif --with-libxml-dir=/opt/wenv/libxml \
--disable-fileinfo \
--with-oci8=share,instantclient,/opt/wenv/liboci \
--enable-pdo \
--with-pdo-mysql=/opt/wenv/mysql \
##-- 以mysqlnd驱动方式编译,
##注意:如果以此方式编译那么在php.ini配置里面应该把extension=pdo_mysql.so这个扩展关掉
./configure --prefix=/opt/wenv/php --with-config-file-path=/opt/wenv/php/etc --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd \
--enable-pdo --with-pdo-mysql=mysqlnd \
--with-iconv --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-fpm --without-pear \
--enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt \
--enable-gd-native-ttf --enable-pcntl --enable-sockets --enable-zip --enable-soap --without-pear --with-openssl --with-mhash \
--with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-gd-native-ttf --enable-exif --with-libxml-dir=/opt/wenv/libxml \
--disable-fileinfo \
--with-oci8=share,instantclient,/opt/wenv/liboci
make && make install
##编译参数加上 --disable-fileinfo 可解决以为内存小而出现编译错误的问题 ##
cp php.ini-production /opt/wenv/php/etc/php.ini
rm -f /etc/php.ini
ln -s /opt/wenv/php/etc/php.ini /etc/php.ini
cp /opt/wenv/php/etc/php-fpm.conf.default /opt/wenv/php/etc/php-fpm.conf
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod +x /etc/rc.d/init.d/php-fpm
/etc/rc.d/init.d/php-fpm stop
[ MEMCACH ]
yum -y install autoconf
cd ..
tar -zxf memcache-2.2.7.tgz && cd memcache-2.2.7
/opt/wenv/php/bin/phpize
./configure --with-php-config=/opt/wenv/php/bin/php-config
make && make install
[配置php.ini]
expose_php = Off #关掉敏感信息
extension=memcache.so
extension=pdo_mysql.so #//TODO
open_basedir = "/tmp:/home/fxx/wwwroot" #防止跨目录
extension_dir = "/opt/wenv/php/lib/php/extensions/no-debug-non-zts-20131226/" # no-debug-non-zts-20131226 文件夹名字需要修改
[配置nginx]
[配置 php-fpm ]
vim /opt/wenv/php/etc/php-fpm.conf
修改以下:
daemonize = yes
listen = /dev/shm/php-fpm.sock ##改用sock通讯更快
listen.mode = 0666 #sock通讯要设置
pm = static #静态开启FPM个数更靠谱,具体数量按机器配置来
pm.max_children = 30 # children process number
[lnmp后续服务器配置]
把mysql,nginx,php设置开机启动
vim /etc/rc.d/rc.local
## 加入一下内容
/opt/wenv/memcached/bin/memcached -d -m 35M -u fxx -l 127.0.0.1 -p 11211
/etc/init.d/mysqld start
/etc/init.d/php-fpm start
/opt/wenv/nginx/sbin/nginx
[iptables] 详细操作见iptables安装与配置
vim /etc/sysconfig/iptables ##修改iptables开放80端口
-A INPUT -p tcp -m multiport --dport 80,443,873,22,3306 -j ACCEPT ## 22, 3306分别为ssh和mysql修改过的端口
/etc/init.d/iptables restart ##重启iptables
如果error日志403没有权限,请检查/home/fxx/website,从fxx这个目录开始全部最低要755的权限,记得检查每个上一级文件夹的权限是否有x权限
如果静态文件能访问,但是php不能访问,很有可能需要修改
vim /opt/wenv/nginx/conf/fastcgi_params #加入以下行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
[补充]
[单独编译PDO扩展]
先安装re2c 地址:http://sourceforge.net/projects/re2c/?source=typ_redirect
1、进入 PHP 的软件包 pdo 扩展目录中(注:不是 PHP 安装目录)
[root@gamejzy /]# cd /usr/local/src/websoft/php-5.6.1/ext/pdo_mysql
注:我的 php 软件包在/usr/local/src/websoft/php-5.6.1 下
执行 phpize 命令
[root@gamejzy pdo_mysql]# /opt/wenv/php/bin/phpize
注:/opt/wenv/php/ 是我的 php 安装目录
执行完 phpize 命令后,在 pdo_mysql 目录中就会出现 configure
执行配置
[root@gamejzy pdo_mysql]# ./configure --with-php-config=/opt/wenv/php/bin/php-config --with-pdo-mysql=/opt/wenv/mysql
参数说明:
--with-php-config==/opt/wenv/php/bin/php-config 指定安装 PHP 的时候的配置
--with-pdo-mysql=/opt/wenv/mysql 指定 MySQL 数据库的安装目录位置
编译安装
[root@gamejzy pdo_mysql]# make && make install
编译完成之后,请注意是否出现类似以下图片所示信息
Installing shared extensions: /opt/wenv/php/lib/php/extensions/no-debug-non-zts-20131226/
如果出现说明编译安装成功.
编译安装完成之后,生成的 pdo_mysql.so 文件就放置在这个目录下。
2. 修改 php.ini 文件
使用 vi 打开你机器的 php.ini 文件,添加一段代码“extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/pdo_mysql.so”,加载 pdo_mysql.so
3. 网站目录权限设置:
进入网站目录
find -type d -exec chmod 750 {} \; ##设置目录是750权限,如果用户是nobody,应该改成755
find -not -type d -exec chmod 640 {} \; ##设置普通文件权限640,如果是nobody设置成644
缓存目录设置成chmod 770,如果还是nobody设置成777