编译安装LNMP环境
说明:1、 LNMP(Linux+Nginx+MySQL+PHP)是一种高性能的web环境。2、 该文档只介绍简单的LNMP环境编译安装,并不涉及优化。2、如完全按照该文档安装,需注意,因由于系统和软件版本不同可能造成安装失败,建议作为参考。3、该文档只解决了部分常见的安装报错信息,如碰见诡异的报错请百度。4、该文档涉及的软件只在一台pc机上安装,并未
说明:
1、 LNMP(Linux+Nginx+MySQL+PHP)是一种高性能的web环境。
2、 该文档只介绍简单的LNMP环境编译安装,并不涉及优化。
2、如完全按照该文档安装,需注意,因由于系统和软件版本不同可能造成安装失败,建议作为参考。
3、该文档只解决了部分常见的安装报错信息,如碰见诡异的报错请百度。
4、该文档涉及的软件只在一台pc机上安装,并未分离。
一、 准备基础软件包
yum -y install gcc gcc-c++ make
二、 安装MySQL(版本大于5.5)
前提:
1、 安装MySQL的版本大于5.5时配置工具由make变为cmake
2、 cmake版本需要大于2.8
3、 安装依赖包:
yum -yinstall cmake bison bzip2bzip2-devel bzip2-libs python-devel
4、 准备mysql用户和组:
useraddmysql
mysql下载:https://dev.mysql.com/downloads/mysql/
安装:
解压且进入解压目录
配置:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_TCP_PORT=3306-DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
参数详解:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\ #安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data \ #数据文件存放位置
-DSYSCONFDIR=/etc \ #my.cnf路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #支持InnoDB引擎
-DWITH_READLINE=1 \ #快捷键功能
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ #连接数据库socket路径
-DMYSQL_TCP_PORT=3306 \ #端口
-DENABLED_LOCAL_INFILE=1 \ #允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1 \ #安装支持数据库分区
-DEXTRA_CHARSETS=all \ #安装所有的字符集
-DDEFAULT_CHARSET=utf8 \ #默认字符
-DDEFAULT_COLLATION=utf8_general_ci
编译和编译安装:
make && makeinstall
(注意:需要大量内存和cup资源,内存小于1G且没有内存空间时容易安装停止在make的50%左右。)
给予权限:
setfacl -m u:mysql:rwx -R /usr/local/mysql
setfacl -m d:u:mysql:rwx -R /usr/local/mysql
初始化数据库:
MySQL5.6:
/usr/local/mysql/bin/mysql_install_db--user=mysql
MySQL5.7:
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/mydata/mysql/data
准备配置文件:
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
修改配置文件(简单的配置):
[mysqld]
user=mysql
datadir = /mydata/mysql/data
socket =/tmp/mysql.sock
character-set-server= utf8
collation-server =utf8_unicode_ci
pid-file = /mydata/mysql/data/mysql.pid
port = 3306
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld.pid
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
启动和开机自启MySQL:
方法1:源码包方式
启动:/usr/local/mysql/bin/mysqld_safe--user=mysql &
关闭:/usr/local/mysql/bin/mysqladmin-uroot -p shutdown
自启:在/etc/rc.local里加上/usr/local/mysql/bin/mysqld_safe--user=mysql &
方法2:系统管理方式
cp/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
启动:server mysqldstart/stop/restart
自启:chkconfig--add mysqld
设置MySQL密码(一般初始化后默认为空,或者初始化生成默认密码。):
方法一(已知密码):/usr/local/mysql/bin/mysqladmin –uroot -p旧密码 password 新密码
方法二(已知或未知密码):
(未知密码则用/usr/local/mysql/bin/mysql_secure_installation命令启动MySQL,此时登陆密码为空,可登陆MySQL,在进行以下操作。)
/usr/local/mysql/bin/mysql–uroot –p临时密码
>SETPASSWORD=PASSWORD('密码');
>FLUSHPRIVILEGES;
或者
>UPDATEmysql.user SET Password=PASSWORD('密码') where USER='root' and host='root' orhost='localhost';
> FLUSHPRIVILEGES;
登陆MySQL:
/usr/local/msyql/bin/mysql –uroot –p密码
三、 安装PHP(版本大于等于5.6):
准备包(依赖包可选择yum或者源码方式安装。):
yum -yinstall gcc gcc-c++ make autoconf libjpeg libjpeg-devel libpng libpng-develfreetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-develglib2 glib2-devel bzip2 bzip2-devel ncursesncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidnlibidn-devel openssl openssl-devel openldap openldap-devel nss_ldapopenldap-clients openldap-servers patch perl-CPAN pcre-devel pcre libxsltlibxslt-devel php-mcrypt libmcrypt libmcrypt-devel mcrypt* mhash
源码包:
php下载:http://php.net/downloads.php
libiconv 下载:https://ftp.gnu.org/pub/gnu/libiconv/
libmcrypt下载:ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/
mhash下载:https://sourceforge.net/projects/mhash/files/mhash/
安装:
解压且进入安装目录
准备php用户和组:useradd web
配置
./configure --prefix=/usr/local/php--with-config-file-path=/usr/local/php/etc--with-config-file-scan-dir=/usr/local/php/etc/php.d --with-curl--with-freetype-dir --with-gd --with-gettext --with-iconv-dir=/usr/local--with-jpeg-dir --with-kerberos --with-ldap --with-ldap-sasl--with-libdir=lib64 --with-libxml-dir=/usr/lib64 --with-mcrypt --with-mhash--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl--with-pcre-regex=/usr --with-pdo-mysql=mysqlnd --with-pdo-sqlite=shared--with-pear=/usr/local/lib/php --with-png-dir --with-xmlrpc --with-xsl--with-zlib --enable-fpm --enable-bcmath --enable-inline-optimization--enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-pcntl--enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip--disable-rpath --enable-opcache --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-pcntl--enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml--enable-zip --disable-rpath --enable-opcache --disable-debug --enable-shared--enable-ftp --enable-session --enable-fastcgi --disable-fileinfo--with-fpm-user=web --with-fpm-group=web
配置详解:
--with-mysql-sock=/var/run/mysql/mysql.sock //mysql的sock文件
--with-iconv-dir=/usr/local //iconv库文件,编译安装icon库时需要指定路径
--with-fpm-user=web--with-fpm-group=web //指定php-fpm进程所属的用户和组,需要创建。
编译安装:
ln -s/usr/local/lib/libiconv.so.2 /usr/lib64/
make ZEND_EXTRA_LIBS='-liconv'
报错:
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
解决方法:
编辑Makefile 大约100行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上-liconv,例如: EXTRA_LIBS = ..... -lcrypt -liconv
make clean
make&& make install
编译安装php 的时候,执行make报错误
错误:make: *** [ext/mysqli/mysqli.lo] Error 1
[root@localhost php-5.4.9]# mkdir /usr/local/webserver/mysql/include/mysql
[root@localhostphp-5.4.9]# ln -s /usr/local/webserver/mysql/include/*/usr/local/webserver/mysql/include/mysql
make clean
make&& make install
抛错:Generating phar.phar
/usr/local/src/php-5.4.9/sapi/cli/php:error while loading shared libraries: libiconv.so.2: cannot open shared objectfile: No such file or directory
make: *** [ext/phar/phar.php] Error 127
解决的方法如下:
#vi /etc/ld.so.conf
在里面加上一行
/usr/local/lib
/usr/lib64
/usr/lib
然后运行/sbin/ldconfig
#/sbin/ldconfig
编译make
make clean
make&& make install
抛错:
Generating phar.phar
chmod: cannot access `ext/phar/phar.phar': No such file or directory
make: [ext/phar/phar.phar] Error 1 (ignored)
Build complete.
Don't forget to run 'make test'.
此处可以忽略不过解决办法如下
#cd ext/phar/
#cp ./phar.php ./phar.phar
然后到php5.4文件夹
#make ZEND_EXTRA_LIBS='-liconv'
#make test
#make install
基本配置:
配置文件:
cp php解压目录的绝对路径/php.ini-dist /usr/local/php/etc/php.ini (需要手打!)
启动php与Nginx通信进程且开机自启(开机自启需写入/etc/rc.local):
/usr/local/php/sbin/php-fpmstart
或者
/usr/local/php/sbin/php-fpm
四、 安装Nginx
准备依赖包:
Nginx下载:http://nginx.org/
pcre 下载(最好下载最新的):https://ftp.pcre.org/pub/pcre/
#tar zxvfpcre-8.10.tar.gz
cd pcre-8.10/
./configure --enable-utf8
make && make install
Nginx安装:
解压且进入安装目录
useradd nginx
./configure--user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module--with-http_ssl_module--with-http_flv_module --with-http_gzip_static_module --with-pcre
make && make install
Nginx简单配置:
vi/usr/local/nginx/conf/nginx.conf
user nginxnginx;
worker_processes 1;
#相当于cpu个数
error_log logs/nginx_error.log;
#错误日志
pid /usr/local/nginx/nginx.pid;
#主进程PID保存文件
worker_rlimit_nofile 65535;
#文件描述符数量
events
{
use epoll;
#网络I/O模型,建议linux使用epoll,FreeBSD使用kqueue
multi_accepton;
#收到一个新连接通知后接受尽可能多的连接。
worker_connections65535;
#最大允许连接数
}
http
{
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local]"$request" '
'$status $body_bytes_sent"$http_referer" '
'"$http_user_agent""$http_x_forwarded_for"';
#日志格式
access_log logs/access.log main;
#调用格式的日志
sendfile on;
server_tokensoff;
keepalive_timeout 10;
#保持连接时间
server
{
listen 80;
#监听端口
server_name 127.0.0.1;
#主机名,或IP。如果是主机名,要能够DNS解析
location / {
root html;
#网站主目录。/usr/local/nginx/html/
index index.html index.htm index.php;
#默认网页顺序
}
location ~.*\.php?$
{
root html;
fastcgi_pass 127.0.0.1:9000;
#连接fastcgi,用来解析php语句
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#启动fast-cgi,可以在每个服务中启动,也可以放入/usr/local/nginx/conf/fastcgi_params,每个server都可以享用
include fastcgi_params;
#包括fastcgi_params中参数
}
}
}
启动与自启:
自启:
vi /etc/rc.local
/usr/local/nginx/sbin/nginx
启动:
/usr/local/nginx/sbin/nginx
重启:
1)Pkill -HUP nginx (常用)
2)kill -HUP `pgrep -uroot nginx`
3)/usr/local/nginx/sbin/nginx-s reload(主要用这个!)
五、 验证该环境
方法一:
查看端口,存在3306、80、9000则为环境搭建成功:
netstat -tunl
方法二:
开启防火墙对应端口或者关闭防火墙:
iptables -Z
iptables -F
iptables -X
在Nginx默认工作目录添加一个php脚本文件,显示环境信息。
文件内容:
<?php
phpinfo();
?>
访问服务器ip与对于的php脚本文件即可获得环境信息。
见此页面则安装环境成功。
该页面未显示原因很多,防火墙,服务端口没起来,nginx和php配置问题,php网页文件,等等原因,需要一一排查。
更多推荐
所有评论(0)