近期要上线几个基于tornado+motor的移动端接口服务,众所周知,Apache和tornado天生八字不合,尤其apache对python3尤为的不友好,tornado和nginx才是木石前盟,另外由于apache目前系统占用确实比较高,不光进程数多,httpd竟然占用了200多M,太庞大,决定换为较轻量级,高并发的nginx。
如上图所示:系统也就2g ,除了mysql占用的100M, httpd 占了1/2 还多
首先由于apache和nginx默认都是监听80端口,所以首先要停止apache服务(为了保险起见,只是停止服务,不要卸载)
systemctl stop httpd第二步,安装nginx
#设置源 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm #安装 yum install -y nginx #启动服务 systemctl start nginx.service #开机自启 systemctl enable nginx.service由于机器上还有一些php服务,而nginx需要php-fpm的支持才能代理php,所以安装php-fpm
yum install php-fpm yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt 开启php服务 systemctl start php-fpm 开机启动php服务 systemctl enable php-fpm然后将原来apache的服务配置翻译成nginx的,二者大同小异,值得一提的是,关于https服务,nginx配置要简单很多
apache配置:
<VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/opt/v3u" ServerName v3u.cn:443 ServerAdmin you@example.com ErrorLog "/opt/lampp/logs/error_log" TransferLog "/opt/lampp/logs/access_log" # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on SSLCertificateFile "证书目录" SSLCertificateKeyFile "证书目录" SSLCertificateChainFile "证书目录" <FilesMatch ".(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/opt/lampp/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog "/opt/lampp/logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" </VirtualHost>翻译为ngixn的配置:
server { listen 443 ssl; server_name v3u.cn; root /opt/v3u; location / { index index.html index.htm index.php; rewrite ^/sitemap.xml$ /Index_sitemap last; rewrite ^/resume$ /Index_resume last; rewrite ^/search_(.+?)$ /Index_search_text_$1 last; rewrite ^/a_id_(.+?)$ /Index_a_id_$1 last; rewrite ^/ls_id_(.+?)$ /Index_ls_id_$1 last; rewrite ^/l_id_(.+?)$ /Index_l_id_$1 last; if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } ssl_certificate 证书目录; ssl_certificate_key 证书目录; location ~ .php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $1; include fastcgi_params; } }修改好配置文件,重启nginx
systemctl restart nginx.service最后别忘了将apache的开机自启关闭
systemctl disable httpdok,到此从apache迁移到nginx就配置结束了,总体上没啥难度
由图上可知,应用了nginx之后,系统感觉清爽了很多,内存也节约了大约300多m,系统告别臃肿,轻装上阵。