安装Nginx, MySQL, PHP-FPM, Perl-Fastcgi到Ubuntu 14.04 LTS
作者:
最后更新于 | 最初发布于 | 分类: 服务器和主机
上一篇文章我有提到过重建了服务器,其实还是花了我不少时间的,还走了一些弯路,参考了几篇说明,综合在一起,才做到同时支持这些特性。
- Nginx 1.8.0
- MySQL 5.5
- PHP-FPM 5.5.9
- Perl Fastcgi
- 还有SSL,SPDY等等。
这是一个备忘记录,对此不做任何的保证。
从头开始说起:
安装系统
整个系统是在 VPS 上,于是在 VPS 的控制面板那里,选择 OS 模板,安装了 Ubuntu 14.04 64bit。通常系统安装完成后,SSH 服务器也已经安装在里面了,可以 ssh 连接到服务器的,之后的操作是全部是在 ssh 终端窗口操作的。如果你是在Virtualbox虚拟机中安装的系统,在选择可选服务器的时候,只选择SSH Server就可以了。
安装后,会得到 IP 地址,比如 22.231.113.64,获得IP地址后,就到DNS 记录的地方更新所要安装的网站的 A记录,比如这里的 seo.g2soft.net,下面就用此为例。
第一次 ssh 登入后,就要执行下面的命令,以更新系统到最新状态。
sudo apt-get update
sudo apt-get upgrade
当时有165个更新,以及3个不能更新的。
sudo apt-get dist-upgrade
更新了三个并且新安装了四个软件包
sudo shutdown -r now
重启系统
重新 SSH 连接服务器
安装 Nginx 1.8.0
Nginx目前的稳定版是1.8.0,参考的官方安装文档
编辑 /etc/apt/sources.list ,添加下面内容到文档最后。
deb http://nginx.org/packages/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/ubuntu trusty nginx
添加 Nginx Key
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
安装
sudo apt-get update
sudo apt-get install nginx
至此,Nginx已经安装完毕,并且启动了,可以从浏览器直接输入IP地址来访问了。
安装 Webmin
Webmin是我用的最多的控制面板,最新版是1.760,安装过程参考官方文档。
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.760_all.deb
sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
sudo dpkg --install webmin_1.760_all.deb
完成之后,就会有提示,可以登录webmin面板了。
输入 https://22.231.113.64:10000 ,就可以看到登入框了。
登入后,选择 System > Bootup and Shutdown ,查看并确认 Nginx 服务会开机启动。
设置 Nginx 主机
这里要先对Nginx进行设置,然后添加 seo.g2soft.net 主机,并且加上 SSL 证书支持。
编辑 /etc/nginx/nginx.conf ,修改如下,因为服务器有两个核,还有就是增加了gzip的支持,并列出了所支持gzip的文档类型。下面是我的nginx.conf的完整内容。
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
gzip on;
gzip_http_version 1.1;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_types
application/atom+xml
application/javascript
application/json
application/rss+xml
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/svg+xml
image/x-icon
text/css
text/plain
text/xml
text/x-component;
gzip_vary on;
include /etc/nginx/conf.d/*.conf;
}
可以看到最后是包含配置文件。
在添加虚拟主机前,先要准备好 SSL 所需要的文件,参考另一篇文章:
- Root CA Certificate - AddTrustExternalCARoot.crt
- Intermediate CA Certificate - COMODORSAAddTrustCA.crt
- Intermediate CA Certificate - COMODORSADomainValidationSecureServerCA.crt
- My PositiveSSL Certificate - seo.g2soft.net.crt
制作证书文件:
cat seo.g2soft.net.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > crt.pem
mv crt.pem /etc/nginx/ssl/
mv key.pem /etc/nginx/ssl/
openssl dhparam -out /etc/nginx/ssl/dhparam.2048.pem 2048
上面四个命令,是分别制作Nginx所需的证书文件;移动证书到指定目录;移动私钥到指定目录;生成2048位的 DH参数。
接下来还要为 SSL Stapling 准备 trusted 证书,此证书包括中间证书和根证书。
cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > trust.pem
mv trust.pem /etc/nginx/ssl/
现在证书的准备工作做好了,可以下一步了。
创建并编辑 /etc/nginx/conf.d/seo.conf
# HTTP site redirect to HTTPS
server {
listen 80;
server_name seo.g2soft.net;
return 301 https://seo.g2soft.net$request_uri;
}
# HTTPS server
#
server {
listen 443 ssl spdy;
spdy_headers_comp 1;
server_name seo.g2soft.net;
ssl_certificate /etc/nginx/ssl/crt.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_buffer_size 1500;
ssl_dhparam /etc/nginx/ssl/dhparam.2048.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/trust.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
client_max_body_size 100M;
root /home/davidyin/seo.g2soft.net;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ = 404;
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# Static resources
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
}
加密协议部分也是按照之前的 SSL配置生成器
上面配置文件的最后一段是对于静态文件的缓存设置。
service nginx reload
至此可以到浏览器中输入 https://seo.g2soft.net/
安装 MySQL 服务器
输入下面的命令安装
sudo apt-get install mysql-server
安装过程中要设置数据库root用户的密码,记得要设置好。
在Webmin中,确认MySQL是自动开机启动的。
安装 PHP-FPM
输入下面的命令安装 php5-fpm以及php5-mysql支持。
sudo apt-get install php5-fpm php5-mysql
编辑 /etc/php5/fpm/php.ini ,修改其中一个参数如下。
cgi.fix_pathinfo = 0
然后启动服务
sudo service php5-fpm restart
配置 Nginx 支持 PHP
编辑 /etc/nginx/conf.d/seo.conf , 增加下面一段到 Server 部分中。
# PHP scripts
location ~ \.html|php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
上面的配置文件中,会支持 html 和 php 后缀的文件都通过 php 解析。
查看一下 /etc/php5/fpm/poold/www.conf 文件,确认 user 和 group 都是 nginx,否则可能会有权限问题。
安装 Perl 支持
使用的是 fastcgi 方式。参考的文档是这篇
先在 SSH 窗口输入下面的命令安装必要的模块
sudo apt-get install libfcgi-perl
sudo wget http://nginxlibrary.com/downloads/perl-fcgi/fastcgi-wrapper -O /usr/bin/fastcgi-wrapper.pl
sudo chmod +x /usr/bin/fastcgi-wrapper.pl
上面的 fastcgi-wrapper 文件,也可以从这里下载 fastcgi-wrapper
然后创建文件 /etc/init.d/perl-fcgi 文件内容如下:
#!/bin/bash
PERL_SCRIPT=/usr/bin/fastcgi-wrapper.pl
RETVAL=0
case "$1" in
start)
$PERL_SCRIPT
RETVAL=$?
;;
stop)
killall -9 perl
RETVAL=$?
;;
restart)
killall -9 perl
$PERL_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: perl-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
接下来,执行下面的命令
sudo chmod a+x /etc/init.d/perl-fcgi
sudo update-rc.d perl-fcgi defaults
sudo service perl-fcgi start
剩下的就是在 Nginx 的配置文件中的 Server 部分,加入下面的内容:
location ~ \.pl|cgi$ {
try_files $uri =404;
gzip off;
fastcgi_pass 127.0.0.1:8999;
fastcgi_index index.pl;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
然后重启 Nginx 服务器。
sudo service nginx reload
就可以了。
整个的步骤大概就是这样。
几个重要软件版本是这样的。
相关的文章
- 重建服务器
- 安装 Ubuntu 24.04 (LTS), Webmin, Nginx, MariaDB, PHP8.3-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS(4)
- 安装 Ubuntu 24.04 (LTS), Webmin, Nginx, MariaDB, PHP8.3-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS(2)
- 安装 Ubuntu 18.04, Webmin, Nginx, MariaDB, PHP7.2-FPM,Perl-Fastcgi 到 Linode 的 VPS(1)
- 安装 Ubuntu 16.04, Webmin, Nginx, MariaDB, PHP7.1-FPM,Perl-Fastcgi 到 Vultr.com 的 VPS(1)
- 如何迁移到新VPS
- 安装 Ubuntu 24.04 (LTS), Webmin, Nginx, MariaDB, PHP8.3-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS(5)
- 安装 Ubuntu 24.04 (LTS), Webmin, Nginx, MariaDB, PHP8.3-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS(1)
评论