记录:centos lnmp最新高版本安装

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


转载于:https://my.oschina.net/webdesign/blog/502074

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值