资讯专栏INFORMATION COLUMN

Tengine2.1.0 PHP5.6.8 Nodejs 的编译安装和配置

XanaHopper / 1710人阅读

摘要:执行时,可能会报各种依赖包不存在的提示,比如,如果是开发环境或者对这些依赖程序的版本没有要求的话,可以直接通过的方式安装这些依赖包。新建一个文件写入这样的话,如果以后我们不需要扩展时,可以直接删除配置文件即可。

淘宝Tengine的编译安装

Tengine的官网:http://tengine.taobao.org/

下载源码包

</>复制代码

  1. wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz`
  2. tar -zxvf tengine-2.1.0.tar.gz
  3. cd tengine-2.1.0

需要注意的是,我希望用Jemalloc来分配和释放tengine内存(比默认的内存管理好多了),所以编译选项设置了--with-jemalloc的源码路径,源码包的获得具体通过以下方式:

Jemalloc方面

官网 http://www.canonware.com/jemalloc/

解压至指定目录

</>复制代码

  1. wget https://github.com/jemalloc/jemalloc/releases/download/3.6.0/jemalloc-3.6.0.tar.bz2
  2. tar -jxvf jemalloc-3.6.0.tar.bz2 -C /usr/local/src
编译配置

</>复制代码

  1. ./configure
  2. --prefix=/usr/local/nginx
  3. --with-jemalloc=/usr/local/src/jemalloc-3.6.0/
  4. –-user=www-data
  5. –-group=www-data

如果想知道更多详细的编译参数的话可以执行./configure --help,会打印出所有的编译选项,可以按需添加或者禁用一些tengine模块,也可以在以后的使用中按需添加编译属性然后重新编译安装即可。
执行configure时,可能会报各种依赖包不存在的提示,比如openssl,如果是开发环境或者对这些依赖程序的版本没有要求的话,可以直接通过apt-get install libxxx的方式安装这些依赖包。

编译安装

</>复制代码

  1. make
  2. make test
  3. make install
配置Tengine

make install之后会安装在/usr/local/nginx目录下,其中conftengine的配置文件目录,我们修改一下/usr/local/nginx/conf/nginx.conf这个配置文件:
如果有像Apachevhost需求的话,可以在conf目录下新建一个文件夹vhost,然后所有虚拟主机的配置文件都放到vhost这里面:

</>复制代码

  1. cd /usr/local/nginx/conf
  2. mkdir vhost
  3. vim nginx.conf

打开nginx.conf配置文件后,最基础的需要做以下几个地方的修改(所提到的地方都要去除前面的#号注释,只修改提到的地方,其它地方保留默认即可):

</>复制代码

  1. #Tengine的进程以www-data用户启动
  2. user www-data;
  3. #自动以CPU核心数启动相应数量的进程
  4. worker_processes auto;
  5. #开启gzip支持
  6. gzip on
  7. #全局的错误日志地址,方便调试
  8. error_log /home/jason/BigDisk/nginx/error.log;
  9. server {
  10. #设置默认访问的server(default是指通过ip或者servername未定义的域名进行访问时就走到这个server)
  11. listen 80 default;
  12. #默认访问的路径
  13. root /home/jason/Work/nginx-default;
  14. location / {
  15. index index.php index.html index.htm;
  16. }
  17. #默认错误页面
  18. error_page 500 502 503 504 /50x.html;
  19. location = /50x.html {
  20. root html;
  21. }
  22. #抓发到php-fpm
  23. location ~ .php$ {
  24. fastcgi_pass unix:/var/run/php-fpm.socket;
  25. fastcgi_index index.php;
  26. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  27. include fastcgi_params;
  28. }
  29. }
  30. #引用其他的vhost配置文件
  31. include vhost/*.conf;
启动脚本

安装好Tengine后需要启动它,github上有人已经做了一份比较完美的nginx启动脚本,我们直接拿下来用:
wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx

赋予可执行的权限:
chmod +x /etc/init.d/nginx

启动Tengine:
/etc/init.d/nginx start

这样基本上就配置好了Tengine

PHP的编译安装

PHP的官网:http://php.net/
安装的php版本为5.6.8

下载源码包

</>复制代码

  1. wget http://cn2.php.net/distributions/php-5.6.8.tar.bz2
  2. tar jxvf php-5.6.8.tar.bz2
  3. cd php-5.6.8
编译

</>复制代码

  1. ./configure --prefix=/usr/local/php
  2. --with-config-file-path=/usr/local/php/etc
  3. --with-config-file-scan-dir=/usr/local/php/etc/extends
  4. --enable-fpm
  5. --with-fpm-user=www-data
  6. --with-fpm-group=www-data
  7. --with-mysql=shared,mysqlnd
  8. --enable-sockets
  9. --with-mcrypt
  10. --with-curl
  11. --with-openssl
  12. --with-mysql
  13. --enable-mbstring

编译参数带上了--enable-fpm,这样编译时就会自动为我们编译php-fpm
--with-config-file-path 指定php的配置文件目录
--with-config-file-scan-dir 指定php的其它配置文件放到哪个目录下
同样,执行configure的时候会出现各种依赖库未找到的错误,还是可以通过apt-get install libxxx的方式添加这些库,或者自己下载源码编译安装这些库。

</>复制代码

  1. make
  2. make test
  3. make install
配置PHP

把php的一些二进制执行文件软链接到系统执行目录中
ln -s /usr/local/php/bin/php /usr/local/bin/php
ln -s /usr/local/php/bin/phpize /usr/local/bin/phpize

进入php的配置文件
cd /usr/local/php/etc

从源码包中复制php.ini-development或者php.ini-production文件到此目录下,并修改名字为php.ini
其中
php.ini-development 适合开发环境下的php配置文件
php.ini-production 适合生产环境下的php配置文件

打开php-fpm的配置文件,做如下修改:
vim php-fpm.conf

</>复制代码

  1. //php-fpm程序运行的pid记录文件
  2. pid = /var/run/php-fpm.pid
  3. //在[www]区域的配置
  4. user = www-data
  5. group = www-data
  6. //这样设置的目的是让tengine与php-fpm通过这个socket地址进行通信
  7. listen = /var/run/php-fpm.socket
  8. //创建socket地址时的用户、组、权限,
  9. //最好以tengine运行的用户一致,这样tengine才有权限与php-fpm进行通信
  10. listen.owner = www-data
  11. listen.group = www-data
  12. listen.mode = 0660
编译php扩展及配置

进入php源码包中的ext目录
cd php-5.6.8/ext

举个例子吧,假如说我们要编译一个mcrypt扩展
进入mcrypt模块的源码目录
cd mcrypt

执行phpize来动态添加php扩展
phpize

编译安装
./configure
make
make install

安装好后,我们之前编译php时设置的--with-config-file-scan-dir就派上用场了,
进入设置的/usr/local/php/etc/extends目录,如果没有extends目录可以mkdir一个。
新建一个mcrypt.conf文件
vim mcrypt.conf
写入

</>复制代码

  1. extension=mcrypt.so

这样的话,如果以后我们不需要mcrypt扩展时,可以直接删除/usr/local/php/etc/extends/mcrypt.conf配置文件即可。

php-fpm的启动脚本

php源码包中已自带php-fpm的启动脚本,我们将它复制到/etc/init.d/
cp php-5.6.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

修改php-fpm文件
vim /etc/init.d/php-fpm

</>复制代码

  1. prefix=/usr/local/php
  2. //这里的pid文件路径就是上面(php-fpm.conf)配置文件中所设置的pid
  3. php_fpm_PID=/var/run/php-fpm.pid

赋予可执行的权限:
chmod +x /etc/init.d/php-fpm

启动php-fpm:
/etc/init.d/php-fpm start

这样phpphp-fpm的配置基本就完成了,关于如何配合Tengine使用在最下面会说。

NODE.JS的安装

官网 https://nodejs.org

下载源码

</>复制代码

  1. wget http://nodejs.org/dist/v0.12.2/node-v0.12.2.tar.gz
  2. tar zxvf node-v0.12.2.tar.gz
  3. cd node-v0.12.2
编译安装

nodejs的编译安装不需要太多配置

</>复制代码

  1. ./configure
  2. make
  3. make install

这样npmnode 就一并安装好了

Tengine代理PHP-FPM

进入先前设置好的Tengine的vhost配置目录:
cd /usr/local/nginx/conf/vhost

假设我们的web目录是在/opt/www,域名为test.com
新建一个test.com.conf配置文件

</>复制代码

  1. server {
  2. #访问端口
  3. listen 80;
  4. #所绑定的域名
  5. server_name test.com;
  6. #access_log logs/host.access.log main;
  7. location / {
  8. root /opt/www;
  9. index index.php index.html;
  10. }
  11. #设置php文件的代理转发
  12. location ~ .php$ {
  13. root /opt/www;
  14. #转发至php-fpm配置文件中设置的socket通信地址
  15. fastcgi_pass unix:/var/run/php-fpm.socket;
  16. fastcgi_index index.php;
  17. #所访问的php文件路径地址
  18. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  19. include fastcgi_params;
  20. }
  21. error_page 500 502 503 504 /50x.html;
  22. location = /50x.html {
  23. root html;
  24. }
  25. }

配置文件创建成功后执行
/etc/init.d/nginx reload
即可

Tengine代理NODE.JS

假设我们运行了一个端口号3000的node.js的web应用
我们的域名为testnode.com
新建一个testnode.com.conf配置文件

</>复制代码

  1. #设置转发池
  2. upstream testnode {
  3. #我们的nodejs应用地址,可添加多个
  4. #这块的意义是,我们可以启动多个相同的nodejs应用,并设置不同的端口号,或者有多台同服务的nodejs服务器,负载均衡
  5. server 127.0.0.1:3000;
  6. server 127.0.0.1:3001;
  7. server 127.0.0.1:3002;
  8. ....
  9. keepalive 64;
  10. }
  11. server {
  12. listen 80;
  13. server_name testnode.com;
  14. location / {
  15. #这块设置的意义是当所有请求转发至nodejs应用时,除了客户端发来的请求头之外再携带以下这些头信息
  16. proxy_set_header X-Real-IP remote_addr;
  17. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  18. proxy_set_header Host $http_host;
  19. proxy_set_header X-NginX-Proxy true;
  20. proxy_set_header Connection "";
  21. #http1.1http1.0的效率要高的多
  22. proxy_http_version 1.1;
  23. #填上面定义的转发池名称
  24. proxy_pass http://testnode;
  25. }
  26. error_page 500 502 503 504 /50x.html;
  27. location = /50x.html {
  28. root html;
  29. }
  30. }

配置文件创建成功后执行
/etc/init.d/nginx reload
即可

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39135.html

相关文章

  • Tengine2.1.0 PHP5.6.8 Nodejs 编译安装配置

    摘要:执行时,可能会报各种依赖包不存在的提示,比如,如果是开发环境或者对这些依赖程序的版本没有要求的话,可以直接通过的方式安装这些依赖包。新建一个文件写入这样的话,如果以后我们不需要扩展时,可以直接删除配置文件即可。 淘宝Tengine的编译安装 Tengine的官网:http://tengine.taobao.org/ 下载源码包 wget http://tengine.taobao...

    TesterHome 评论0 收藏0
  • (小白指南)在 Linux 服务器上安装 Nodejs、Nginx 以及部署 Web 应用

    摘要:首先,的命令和并不能在全局使用。文章有意将浏览器不能访问服务器的两个问题写出来,是因为作者在排查问题的时候,发现在服务器直接访问的页面,能很好地检查排除问题在百度寻找问题答案的时候,发现这种做法也得到了不少人的肯定。 前段时间要把项目部署到服务器,期间踩了不少的坑。故写下这篇文章,从零开始把自己部署的过程都记录下来,希望能给其他像我一样的小白一点帮助。如果有疏漏的地方,请各位客官指出,...

    glumes 评论0 收藏0

发表评论

0条评论

XanaHopper

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<