LNMP编译
Posted mashuang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP编译相关的知识,希望对你有一定的参考价值。
一、安装数据库
创建组账号:
groupadd mysql
创建用户:
useradd -s /sbin/nologin -g mysql -M mysql
查看一下:
tail -1 /etc/passwd
查看属主和属组:
id mysql
获取MySQL二进制软件包,解压:
tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/
移动到解压目录:
cd /usr/local/
将文件改名:
mv mysql-5.5.32-linux2.6-x86_64 mysql-5.5.32
创建软链接:
ln -s mysql-5.5.32 mysql
移动到新建目录下:
cd /usr/local/mysql
查看目录下support-files/*.cnf的文件:
ls -l support-files/*.cnf
强制复制文件到/etc/my.cnf:
/bin/cp support-files/my-small.cnf /etc/my.cnf
建立MySQL数据文件目录:
mkdir -p /usr/local/mysql/data
授权MySQL用户管理MySQL的安装目录:
chown -R mysql.mysql /usr/local/mysql
光盘源安装依赖包,否则下一步的编译会报错:
yum -y install libaio
初始化MySQL数据库文件,会有很多提示,如果没有ERROR的显示,会有两个OK的字样,表示初始化成功,否则就要解决初始化的问题。
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
初始化故障排错:
1.如果出现主机名未找到的错误,修改主机名,hostname=localhost或者如下:
2.没有安装依赖包:
3.权限问题:
二、配置并启动MySQL数据库
(1)设置MySQL启动脚本:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
(2)MySQL二进制默认安装路径是/usr/local/mysql,启动脚本里是/usr/local/mysql。如果安装路径不同,那么脚本里路径等都需要替换
(3)启动MySQL数据库:/etc/init.d/mysqld start
(4)检查MySQL数据库是否启动:netstat -antup | grep mysql
(5)查看MySQL数据库启动结果日志:tail -10 /usr/local/mysql/data/localhost.err
(6)设置MySQL开机自启动(也可以将启动命令/etc/init.d/myslqd start 放到/etc/rc.local里面):
chkconfig --add mysqld
chkconfig mysqld on
chkconfig --list mysqld
(7)配置mysql命令的全局使用路径:
ln -s /usr/local/mysql/bin/* /usr/local/bin/ (创建软链接)
which mysqladmin (查看命令)
(8)登陆MySQL测试(MySQL安装完成后,默认情况下,root账户是无密码的,这个必须要设置。)
mysql (直接输入命令即可登录)
show databases; (查看当前所有的数据库)
select user(); (查看当前登录的用户)
三、MySQL安全配置
(1)为MySQL的root用户设置密码:mysqladmin -u root password ‘123123‘
(2)进入到数据库,清理无用的MySQL用户及库:select user,host from mysql.user; (查看mysql.user库中表头user和host中的信息)
drop user "root"@"::1"; (删除user下的“root”@“::1”)
drop user ""@"localhost"; (删除user下的“”@“localhost”)
select user,host from mysql.user; (查看登录用户)
flush privileges; (刷新)
四 、LNMP之php(FastCGI方式)服务的安装和准备
1.准备nginx的压缩包并解压:tar xf nginx-1.10.2.tar.gz -C /usr/src
2.移动到解压目录:cd /usr/src/nginx-1.10.2/
3.安装依赖包:yum -y install pcre-devel openssl-devel
4.执行: ./configure --user=mysql --group=mysql --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
5.创建软链接:ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
6.修改nginx的配置文件:
cd /usr/local/nginx/conf
egrep -v "#|^$" nginx.conf.default > nginx.conf
7.删除文件中的最后一块脚本:vim /usr/local/nginx/conf/nginx.conf
8.修改配置文件后需要重启: /usr/local/nginx/sbin/nginx -s reload (平滑重启)
9.确认检查nginx和MySQL的安装路径:ls -ld /usr/local/nginx ls -ld /usr/local/mysql
10.检查端口启动情况:netstat -antup | grep -E "80|3306"
11.测试访问nginx及MySQL是否OK:
wget 127.0.0.1 (测试nginx)
mysql -uroot -p (测试MySQL)
如果访问结果和上述一致,就表明nginx及MySQL的安装一切正常。
五、检查安装PHP所需的lib库
PHP程序在开发及运行时会调用一些诸如zlib,gd等函数库,因此需要确认lib库是否已经安装:
每个lib一般都会存在对应的以“*-devel”命名的包,安装lib对应的-devel包后,对应的lib包就会自动安装好,例如安装gd-devel时就会安装gd。
这些lib库不是必须安装的,但是目前的企业环境下一般都需要安装。否则,PHP程序运行时会出现问题,例如验证码无法显示等。
安装相关的lib软件包:
安装后的结果:这里仅缺少libiconv-devel包,因为默认的yum源没有此包。
安装yum无法安装的libiconv库:
解压安装包:
移动到解压目录下:
执行: ./configure --prefix=/usr/local/libiconv && make && make install
安装libmcrypt库:
推荐使用简单的在线yum的方式安装:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install libmcrypt-devel
安装mhash加密扩展库:
推荐使用简单的在线yum的方式安装:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install mhash
安装mcrvpt加密扩展库:
推荐使用简单的在线yum的方式安装:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install mhash
安装mcrvpt加密扩展库:
推荐使用简单的在线yum的方式安装:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install mcrypt
六、开始安装PHP(FastCGI方式)服务
1.获取PHP软件包: wget http://cn2.php.net/get/php-5.3.28.tar.gz/from/this/mirror
2.解压配置PHP
解压文件:tar xf php-5.3.28.tar.gz -C /usr/src/
移动到解压文件:cd /usr/src/php-5.3.28/
执行: ./configure --prefix=/usr/local/php5.3.28 --with-mysql=/usr/local/mysql --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-short-tags --enable-zend-multibyte --enable-static --with-xsl --with-fpm-user=mysql --with-fpm-group=mysql --enable-ftp
安装成功出现下图:
上述命令参数详解:
--prefix=/usr/local/php5.2.28 :表示指定PHP的安装路径为/usr/local/php5.3.28
--with-mysql=/usr/local/mysql :表示需要指定MySQL的安装路径,安装PHP需要的MySQL相关内容。当然,如果没有MySQL软件包,也可以不单独安装,这样的情况可使用--with-mysql=mysqlnd替代--with-mysql=/usr/local/mysql,因为PHP软件里已经自带了连接MySQL的客户端工具。
--with-fpm-user=mysql :nginx表示指定PHP-FPM进程管理的用户为www,此处最好和Nginx服务用户统一。
--with-fpm-group=mysql :表示指定PHP-FPM进程管理的组为www,此处最好与Nginx服务用户组统一。
--enable-fpm :表示激活PHP-FPM方式服务,即以FastCGIF方式运行PHP服务。
编译PHP:
创建软链接:ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
创建文件:touch ext/phar/phar.phar
make编译:make
最后的正确提示:
安装PHP生成文件到系统:make install
配置PHP引擎配置文件php.ini:
(1)设置软链接以方便访问:ln -s /usr/local/php5.3.28/ /usr/local/php
(2)查看PHP配置默认模版文件:
cd /usr/src/php-5.3.28/
ls php.ini*
请注意以上两文件的异同之处,可通过diff或vimdiff命令比较,如下图所示:
对比此结果可以看出,开发环境更多的是开启日志文件,调试信息,而生产环境都是关闭状态。
(3)拷贝PHP配置文件到PHP默认目录,并更改文件名称为php.ini:
cp php.ini-production /usr/local/php/lib/php.ini
ls -l /usr/local/php/lib/php.ini
配置PHP(FastCGI方式)的配置文件php-fpm.conf
移动:cd /usr/local/php/etc/
查看目录下文件:ls
拷贝文件:cp php-fpm.conf.default php-fpm.conf
php-fpm.conf,暂时可用默认的配置,先把服务搭好,以后再进行优化。
启动PHP服务(FastCGI方式)
(1)启动PHP服务php-fpm: /usr/local/php/sbin/php-fpm
(2)检查PHP服务php-fpm的进程及启动端口的情况:
配置Nginx支持PHP程序请求访问:
修改Nginx配置文件:
cd /usr/local/nginx/conf/
cp nginx.conf nginx.conf.02
vim nginx.conf
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name blog.yunjisuan.com;
location / {
root /root/www;
index index.html index.htm;
}
location ~ .*.(php|php5)?$ {
root /root/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
}
检查并启动Nginx:
/usr/local/nginx/sbin/nginx -t (检查脚本是否有语法错误)
/usr/local/nginx/sbin/nginx -s reload (平滑重启)
这步在生产环境很关键,如不提前检查语法,重启后发现语法错误会导致Nginx无法提供服务,给用户访问体验带来不好的影响。
测试LNMP环境生效情况:
1.测试PHP解析请求是否OK
1)进入指定的默认站点目录后,编辑index.php,添加如下内容:
cd /usr/local/nginx/html/www
echo "<?php phpinfo(); ?>" > test_info.php
以上代码为显示PHP配置信息的简单PHP文件代码
2)调整Windows下的host解析(192.168.0.121为当前的机器IP)
在本机影射文件里添加虚拟机的IP地址,和域名。
本机影射文件位置:C盘:windows/System32/dirvers/etc/hosts
3)打开浏览器,输入http://blog.yunjisuan.com/test_info.php 即可打开如下图所示界面:
出现上述界面,表示Nginx配合PHP解析已经正常。
2.针对Nginx请求访问PHP,然后对PHP连接MySQL的情况进行测试
编辑/usr/local/nginx/html/www/test_mysql.php,加入如下内容:
测试结果如下:
至此,LNMP的组合以基本搭建完毕。当然,我们还没有做相关优化,因此,我们需要将虚拟机保存好。以后使用。
七、部署一个blog程序服务
1.WordPress 博客程序的搭建准备
1)登录MySQL数据库:mysql -uroot -p123123
2)创建一个专用的数据库WordPress,用于存放blog数据:
create database wordpress; (创建一个数据库)
show databases like ‘wordpress‘; (查看库名)
3)创建一个专用的WordPress blog管理用户
grant all on wordpress.* to [email protected]‘localhost‘ identified by ‘123123‘; (localhost为客户端地址)
show grants for [email protected]‘localhost‘; (查看用户对应权限)
select user,host from mysql.user; (查看数据库里创建的Wordpress用户)
2.Nginx及PHP环境配置准备
1)选择之前配置好的支持LNMP的blog域名对应的虚拟主机
2)获取WordPress博客程序,并放置到blog域名对应虚拟主机的站点目录下,即/usr/local/nginx/html/www:
ls 浏览www.wordpress.org下载博客程序
tar xf wordpress-4.7.4-zh_CN.tar.gz 解压
rm -f index.html test_info.php test_mysql.php 删除无用文件
mv wordpress/* . 把目录里的内容移动到blogcom根目录下
/bin/mv wordpress-4.7.4-zh_CN.tar.gz /root/ 移走源程序
ls -l 完整的blog程序内容
chown -R mysql.mysql ../www/ 授权用户访问
ls -l 最终博客目录和权限
开始安装blog博客程序
很多开源程序都支持浏览器傻瓜式的界面安装,此处也用这种方法。
1)打开浏览器输入blog.yunjisuan.com(提前做好hosts或DNS解析)
2)仔细阅读页面的文字信息后,单击“现在就开始”按钮继续,然后在出现的页面表单上填写相应的内容。
至此,静态网页设置完毕。
实现WordPress博客程序URL静态化
实现此功能时,首先要在WordPress后台依次单击设置--->固定链接--->自定义结构,然后输入下面的代码,并保存更改。
/archives/%post_id%.html (%post_id%是数据库对应博文内容的唯一ID,例如423)
接着,在Nginx配置文件的server容器中添加下面的代码:
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name blog.yunjisuan.com;
location / {
root html/www;
index index.php index.html index.htm;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
location ~ .*.(php|php5)?$ {
root html/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
}
最后检查语法并重新加载Nginx服务:
/usr/local/nginx/sbin/nginx -t (检查脚本)
/usr/local/nginx/sbin/nginx -s reload (平滑重启)
以上是关于LNMP编译的主要内容,如果未能解决你的问题,请参考以下文章