lnmp架构的搭建
lnmp=linux + nginx + mysql +php
1.nginx安装
先下载这个包nginx-1.4.2.tar.gz,tar zxf nginx-1.4.2.tar.gz解压压缩包。
cd nginx-1.4.2
vi auto/cc/gcc
#CFLAGS=”$CFLAGS -g”# 注释掉这行,去掉debug模式编译,编译以后程序只有几百K
vi src/core/nginx.h
#define NGINX_VER "redhat" #修改此行,为了安全去掉后面的版本信息。
在 nginx-1.4.2一级目录下
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module –with-http_stub_status_module
指定路径在/usr/local/lnmp/nginx下,(默认第三方软件都在/usr/local下,把lnmp所有程序放在/usr/local/lnmp下,方便到时侯直接把这个目录考走,一锅端,可是也有风险,黑客也可能会一锅端)。执行这个命令时可能会出错,需要yum install -y pcre-devel gcc openssl-devel
make && make install 编译,如果没有make,还需安装make
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin 建立软链接,启动脚本为nginx
编译成功后,就会生成/usr/local/lnmp/nginx目录,cd /usr/local/lnmp/nginx
vim conf/nginx.conf
worker_processes 2;
events {
use epoll; epoll是处理连接的一种方法。
worker_connections 1024;
}
nginx 开启nginx,若已经开启,再执行这个脚本,就会报错。
nginx -t 测试nginx有无语法错误。
nginx -s stop/restart 关闭/重启nginx。
测试:curl -I localhost 查看server为我们自己设置的了。
nginx的默认发布目录在 /usr/local/lnmp/nginx/html
vi test.html
hello nginx!
客户端测试192.168.0.101/test.html
2.mysql安装
下载一个包mysql-5.5.12.tar.gz ,tar zxf mysql-5.5.12.tar.gz
cd mysql-5.5.12
用的是cmake编译器
yum install -y cmake
在一级目录下:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \
#安装目录
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \
#数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \
#Unix socket 文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \
#安装 myisam 存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \
#安装数据库分区
-DENABLED_LOCAL_INFILE=1 \
#允许从本地导入数据
-DWITH_READLINE=1 \
#快捷键功能
-DWITH_SSL=yes \
#支持 SSL
-DDEFAULT_CHARSET=utf8 \
#使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci \
#校验字符
-DEXTRA_CHARSETS=all \
#安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 \
#MySQL 监听端口
回车之后可能会有报错,需要安装这些yum install -y ncurses-devel gcc-c++ bison
如果之前忘记装这些软件,cmake报错之后再安装,安装好后需要删掉缓存
rm -fr CMakeCache.txt,重新执行一长串cmake指令。
cmake通过之后,make && make install 这个过程比较慢。
编译成功后,生成 /usr/local/lnmp/mysql 目录。
创建一个mysql用户 useradd -M -s /sbin/nologin -d /usr/local/lnmp/mysql/data mysql
cd /usr/local/lnmp/mysql
chown mysql.mysql *
cp support-files/my-medium.cnf /etc/my.cnf #根据主机内存复制mysql配置文件
cp support-files/mysql.server /etc/init.d/mysqld
cd scripts/
./mysql_install_db --user=mysql –basedir=/usr/local/lnmp/mysql
--datadir=/usr/local/lnmp/mysql/data
vi ~/.bash_profile
PATH=$PATH:/usr/local/lnmp/mysql/bin
source ~/.bash_profile #使文件生效
chown -R root /usr/local/lnmp/mysql/*
chown -R mysql /usr/local/lnmp/mysql/data/ #mysql用户对data目录有写权限
/etc/init.d/mysqld start
mysql_secure_installation 给mysql加密
3.php安装
先下载这几个模块包libiconv-1.13.1.tar.gz,libmcrypt-2.5.8.tar.bz2,mhash-0.9.9.9.tar.bz2,mcrypt-2.6.8.tar.gz
tar zxf libiconv-1.13.1.tar.gz #加强系统对支持字符编码转换的功能
cd libiconv-1.13.1
./configure --prefix=/usr/local/lnmp/modules/libiconv
make && make install
tar jxf libmcrypt-2.5.8.tar.bz2 # mcrypt mhash 是 php 加密算法扩展库
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/lnmp/modules/libmcrypt -enable-ltdl-install
make && make install
tar jxf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure --prefix=/usr/local/lnmp/modules/mhash
make && make install
tar zxf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
先建立软链接:
ln -s /usr/local/lnmp/modules/mhash/lib/* /usr/local/lib
ln -s /usr/local/lnmp/modules/mhash/include/* /usr/local/include
./configure --prefix=/usr/local/lnmp/modules/mcrypt --with-libmcrypt-prefix=/usr/local/lnmp/modules/libmcrypt
make && make install
模块编译完成之后,下载php包 php-5.4.12.tar.bz2
tar jxf php-5.4.12.tar.bz2
php程序的用户应是nginx,useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx
cd php-5.4.12
./configure --prefix=/usr/local/lnmp/php –with-config-file-path=/usr/local/lnmp/php/etc --with-
mysql=/usr/local/lnmp/mysql/ --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-
libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --without-pear --with-gettext –
with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets
--enable-mbstring –with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config --enable-fpm --with-
fpm-user=nginx --with-fpm-group=nginx –with-mcrypt=/usr/local/lnmp/modules/libmcrypt –with-mhash =/usr/local/lnmp/modules/mhash
软件包依赖性:
yum install net-snmp-devel curl-devel libxml2-devel libpng-devel libjpeg-devel freetype- devel gmp-devel -y
make ZEND_EXTRA_LIBS='-liconv' #加速php代码执行效率
make install
php启动:
cd ~/php-5.4.12
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
vim /usr/local/lnmp/php/etc/php.ini
cgi.fix_pathinfo=0 #防止 Nginx 文件类型错误解析漏洞
date.timezone=Asia/Shanghai
mv php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
pid = run/php-fpm.pid
pm.max_children = 50
pm.start_servers = 20 #在生产环境中一定要做压力测试,找到最合适的进程数组合
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
开启php:/etc/init.d/php-fpm start
vim /usr/local/lnmp/nginx/conf/nginx.conf
user nginx;
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
nginx
nginx -s reload
vim /usr/local/lnmp/nginx/html/index.php
<?php
phpinfo()
?>
客户端测试浏览器输入192.168.0.101/index.php