干货分享,灵感创作,不定期更新,敬请期待。

自己动手搭建lnmp环境

Linux运维 xhq 4339℃ 0评论

 

如何配置lnmp
(本人在ubuntu环境下)
安装nginx,php,php-fpm(php5-fpm),mysql,fastcgi,(php-cli,命令行工具)
安装不是问题,apt-get install就可以,问题是配置,

配置过程中有几个命令挺有用的:
nginx -t、php5-fpm -t、fastcgi -t,等等
就是检测配置文件的语法
关于查看程序运行状态、启动、重启等有的支持service 程序名 {start|restart|stop|…}(似乎是在/etc/init.d/*的程序),有的是:程序名 {start|restart|stop|…}(似乎是/etc/下的程序),
还有一些是要指定目录下的程序(木有配置环境变量)

本人安装nginx是1.4.6版本,配置文件(find / -name nginx.conf自行查找)会include来include去的,要注意include的文件,
似乎include了两个文件,include /etc/nginx/sites-enabled/*是主站,另外一个include相当于配置虚拟主机,当然通过改配置也可以倒过来,
还可以改文件名,路径等

nginx配置文件的默认用户和用户组为www-data,刚安装好似乎就能访问了,打开浏览器访问127.0.0.1就o了,
但是此时并不支持php,如果你编辑一个php文件并在浏览器中访问就会发现程序会下载,那么,此时我们需要安装php、
php-cli,有了这两个之后可以在命令行模式下运行php(php 文件名,php –help查看帮助),但是还是不能在浏览器中运行,
接下来需要安装fastcgi,

fastcgi是什么东东呢?听说是:
首先请求从浏览器发起,(中间省略一堆过程…),那么此时php文件(程序)中需要接受参数,参数又从url地址中传输过来,这只是最基本的,还有ip地址,浏览器信息等等会被封装
成特定的格式,而fastcgi就可以识别这些格式的数据,通过这一步然后再到php执行程序中,(此处又略去几万字),还有一个提一提,与php CGI一样fastcgi也需要载入php.ini配置初始化程序,不同的是CGI是每次处理php程序都要载入php.ini,而fastcgi是开启监听端口或采用unix socket监听,
好了,fastcgi安装好后回到配置中了,nginx的默认配置站点是include /etc/nginx/sites-enabled/*,个人把它注释掉,然后在http{}之间加入server{},
当然,保持默认也是一样的,
server{
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;#路径不一定是tmp
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
注意此时有个fastcgi.conf需要引入,代码大致如下
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

配置好后要记得nginx -t,没问题后重新启动程序

find / -name php(5)-cgi.sock,看是否存在,不存在果断注释掉,采用tcp,就是监听9000或其他没有占用的端口,接下来开启一个screen,
screen -S www
php-cgi -b 127.0.0.1:9000(php(5)-cgi –help,具体看你的版本)
监听好后不要ctrl+c,ctrl+a+d便可后台运行(具体搜索screen的使用)
ok,可以在浏览器中输入站点url了(http://127.0.0.1/index.php),不出意外的话此时可以访问了,

好了,虽然可以运行,但这样的做法不利于站点维护,流行的做法是给fastcgi一个进程管理程序,这里用php-fpm,
通常,听说新的php版本集合了php-fpm(本人的是php5-fpm),但我的并木有(还是老方法,find / -name php*-fpm),可能要通过编译安装,
安装完后可以find一下,找到php-fpm.conf,找到之后注意有木有include其他配置文件,
一下几个基础配置
listen = 127.0.0.1:9000#与server{}里fastcgi_pass设置一致
#fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: ‘ip:port’, ‘port’, ‘/path/to/unix/socket’. 每个进程池都需要设置.

listen.owner = www
listen.group = www
listen.mode = 0666
#unix socket设置选项,如果使用tcp方式访问,这里注释即可。

user = www
group = www
#启动进程的帐户和组

配置好之后不要忘记语法检查,最后启动停止和重启,
现在可以到www screen中把把监听停掉了
#测试php-fpm配置
/usr/local/php/sbin/php-fpm -t
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

#启动php-fpm
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf

#关闭php-fpm
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`#程序启动时会把分配的pid的第一个进程写入到这里

#重启php-fpm
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
(说明:关于路径请根据自己的具体情况,以上php-fpm还有可能是php5-fpm)

总结:

1.安装nginx,php,php-fpm(php5-fpm),mysql,fastcgi,(php-cli,命令行工具)

2.配置

3.由于本人实验没做到MySQL,就留到以后写吧

4.php-fpm在本人的实验环境中要按以上方法启动,所以可以写shell脚本便于管理,这个会在下篇文章

 

转载请注明:爱游思 » 自己动手搭建lnmp环境

喜欢 (1)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. I rarely write responses, but I read some off the responses on 自己动手搭建lnmp环境 – 爱游思. I actually do have a few questions for you if it's okay. Is it justt me or do a few of the responses come across like they are coming from brain dead visitors? 😛 And, if you are posting on additional online sites, I would like to keep up with anything fresh you have to post. Would you post a list off all off your social pages like your twitter feed, Facebook page or linkedin profile?
    Carmel2017-02-16 18:14
  2. Admiring the time and energy you put into your website and detailed information you offer. It's awesome to come across a blog every once in a while that isn't the same unwanted rehashed information. Excellent read! I've saved your site and I'm adding your RSS feeds to my Google account.