LNMP环境搭建
LNMP环境搭建
Linux+nginx+mysql+php/perl/python
一、安装 gcc(编译) gcc-c++(用于新版本的mysql) make cmake libtool(工具) ncurses-devel
二、安装nginx
三、安装Mysql数据库
1、编译安装Mysql
tar zxf /usr/src/mysql-
cd mysql-
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql(指定路径) 配置环境,功能相当于./configure
make && make install 编译安装
2.配置mysql
cp support-files/my-default.cnf /etc/my.cnf 生成mysql的主配置文件,命名为/etc/my.cnf
cd /usr/local/mysql 跳转到mysql默认安装的目录下
ll 属主属组都是root
useradd -s /sbin/nologin mysql 创建用户mysql,用于登录mysql数据库
chown -R mysql.mysql . 更改当前路径下所有文件为属主.属组为mysql
scripts/mysql_install_db --user=mysql 让mysql用户身份初始化数据库
chown -R root . 更改属主,限制只有管理员root有权限管理数据库的配置
chown -R mysql data/ 更改数据文件夹data/属主为mysql,数据库内数据的管理
/usr/local/mysql/bin/mysqld_safe --user=mysql & 以mysql用户执行开启mysql数据库(后台执行)
echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >> /etc/rc.local
设置mysql开机启动,将其加入开机第一个脚本
netstat -tnlp 查看mysql服务是否开启,mysql默认端口号3306
/usr/local/mysql/bin/mysql -u root -p 以root身份登录mysql数据库服务器
show databases;显示所有的数据库
exit退出
四、安装动态网站相关的库和软件:
1.tar -xvf jpegsrc…解包
2.cd jpegsrc 跳转到刚刚解包的路径
2.编译安装
./configure &&make &&make install
依次安装以下软件包:
jpegsrc.v8b.tar 图像压缩
freetpye- 字体引擎,支持多种字体格式文件
zlib- 函数库
libpng- png图像文件存储格式
gd- 支持库
libxml2- c语言版的解析器
五、安装PHP解析环境
较新版本(如5.3)的PHP已经自带FPM(fastCGI process manager,FastCGI进程管理器)模块,用来对PHP解析实例进行管理,优化解析效率,因此在配置PHP编译选项时应添加”–enable-fpm”以启用此模块。为了提高PHP解析效率,建议将相应版本的ZendGuardLander也装上。
1、解压并配置PHP
tar zxf php-5.3.6.tar.gz
cd php-5.3.6
./configure --prefix=/usr/local/php --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-config-file=/usr/local/php --with-gd-dir=/usr/lib --with-ttf(连接freetype) --with-zlib-dir --with-jpeg-dir --with-png-dir -enable-mbstring(多字节,字符串的支持) -enable-fpm
排错:配置如果“configure:error: libpng.(a|so) not found.”错误。
解决方法:
根据报错发现是因为libpng.so和libpng.a找不到,检查libpng的相关软件是否已经安装,如果已安装,需要将“/usr/lib64/libpng*”库文件拷贝到“/usr/lib”下。执行如下命令:
cp -frp /usr/lib64/libpng* /usr/lib
原因:因为configure一般的搜索编译路径为/usr/lib/下,而x64位的系统默认在“/usr/lib64”下,因此需要拷贝到“/usr/lib”目录下。
如果报configure: error: libjpeg.(a|so) not found错误解决方法和上面的解决方法类似。
2、编译安装PHP,并配置安装后的调整
make && make install
cp php.ini-development /usr/local/php/etc/php.ini
ln -s /usr/local/php/bin/* /usr/loacl/bin
ln -s /usr/local/php/sbin/* /usr/local/sbin
3、配置Nginx支持PHP环境
若要让Nginx能够解析PHP网页,有两种方法可以选择;其一,充当中介,将访问PHP页面的WEB请求转交给其他服务器(LAMP)去处理;其二,通过使用PHP的FPM模块来调用本机的PHP环境,在此选择后者。
PHP-FPM 是 一个 PHP FastCGI 进程管理器 FastCGI是一个可伸缩的,高速地在web server和脚本语言间交互的接口。
如果选用FPM方式,则需要先启动php-fpm进程,以便监听PHP解析请求。
建立php-fpm.conf配置文件,并修改其中的PID文件、运行用户、服务数(进程数量)等相关设置,然后启动php-fpm程序即可(默认监听本机的9000端口)
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
启动php-fpm,并查看地址监听。
/usr/local/php/sbin/php-fpm
netstat -anpt | grep php-fpm
4、配置Nginx支持PHP解析
无论是将PHP页面交给LAMP服务器去解析,还是调用本机的php-fpm进程进行解析,都需要在”server{}”配置段中添加location设置,以便指定当访问.php面页时采取何种操作。
方法一:转交给其他WEB服务器处理,例如:交给IP地址为192.168.0.200的LAMP服务器处理,从而实现由Nginx负责静态页面,LAMP负责动态页面的分离效果。
server {
…… //省略部分信息
location ~ .php$ { //访问.php页面的配置段
proxy_pass http://192.168.0.200:80; //APACHE服务器的监听地址
}
}
上面这种写法只是发送以.php为后缀的页面访问请求给其他WEB服务器,如果有其格式的文件访问(如:html、jpg等)就会出问题。访问不了了。
方法二:调用本机的php-fpm进程,使用的配置语句如下所示。在conf/目录下的fastcgi.conf文件中已经包含必需的宏设置,可通过include语句添加进来。
server {
…… //省略部分信息
location ~ .php$ { //访问php页面的配置段
root /var/www/wg; //PHP网页文档根目录
fastcgi_pass 127.0.0.1:9000; //php-fpm的监听地址
fastcgi_index index.php; //PHP首页文件
include fastcgi.conf; //包括fastcgi.conf样本配置
}
}
选择第二种方法,完成修改后重新加载nginx服务即可生效。
Nginx配置文中整个server段的配置内容如下:
server {
listen 80;
server_name www.wg.com;
location /{
root /var/www/wg/;
index index.html index.php;
}
location ~ .php$ {
root /var/www/wg;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
service nginx restart
5、访问测试