Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 6 Next »


 

Nginx Webserver and PHP 7.1 Upgrade Guide


Back to Installation and Setup

 

Introduction

This page is intended to record the process for upgrading the dependencies of a system that was previously on P2 Workflow Engine 1.1 before upgrading to P2 Workflow Engine 1.2.

Note: The formatting of the document is intentional as it allows the content to be copied to a script file and executed. Additionally, the content of all configuration files exists in a commented form in case a manual execution of the steps should be desired.


Post Upgrade Steps

After the upgrade steps have been performed either manually or scripted, a file requires an additional manual update. The /etc/nginx/conf.d/processmaker.conf file has a line server_name nginx.processmaker.com; near the top of the file. The nginx.processmaker.com  needs to be changed to the name of the server which is running P2 Workflow.


Script Content

#Stop apache
service httpd stop
#Remove apache from auto start
chkconfig httpd off

##Optionally apache can be removed entirely
#yum -y remove httpd

#Install NGINX
#To install NGINX follow these steps:

##1. Add the NGINX repository file.
#vi /etc/yum.repos.d/nginx.repo
#
##2. Add the next lines in the created repository file.
#[nginx]
#name=nginx repo
######rhel/6 should be changed to rhel/7 for RHEL/CentOS 7
#baseurl=http://nginx.org/packages/rhel/7/$basearch/
#gpgcheck=0
#enabled=1

#Add Nginx Repository
echo -e "[nginx]\nname=nginx repo\n#####rhel/6 should be changed to rhel/7 for RHEL/CentOS 7\nbaseurl=http://nginx.org/packages/rhel/7/\$basearch/\ngpgcheck=0\nenabled=1" > /etc/yum.repos.d/nginx.repo

#3. Install NGINX and start the service.
#Install Nginx
yum clean all && yum -y install nginx
#Start Nginx
service nginx start
#Add Nginx to auto start on server restart
chkconfig nginx on

#Backup default.conf and rename it so that it's not picked up
mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.bk

#vi /etc/nginx/conf.d/processmaker.conf
##ProcessMaker HTTP Virtual Host
# 
#server {
# 
#  listen 80;
#  listen [::]:80;
#  #Change for server DNS name
#  server_name nginx.processmaker.com;
#  #The following line must be added Only if phpMyAdmin is configured
#  #include /opt/phpMyAdmin/phpMyAdmin.conf;
# 
#  root /opt/processmaker/workflow/public_html; #where ProcessMaker is installed
# 
#  index index.html index.htm app.php index.php;
# 
#  try_files $uri $uri/ /index.php?$args;
# 
#  charset utf-8;
# 
#  location / {
#    try_files $uri $uri/ /index.php?$query_string;
#  }
# 
#location = /favicon.ico { access_log off; log_not_found off; }
# 
#  location = /robots.txt  { access_log off; log_not_found off; }
# 
#  access_log /var/log/nginx/pm-access.log combined; #enables access logs
# 
#  error_log  /var/log/nginx/pm-error.log error; #enables error logs
# 
#  sendfile off;
# 
#  client_max_body_size 100m;
# 
# # Every PHP script must be routed to PHP-FPM
# 
#  location ~ \.php$ {
#    fastcgi_split_path_info ^(.+\.php)(/.+)$;
#    fastcgi_pass unix:/var/run/php-fpm/processmaker.sock;
#    fastcgi_index    app.php;
# 
#    include fastcgi_params;
#    fastcgi_param    SCRIPT_FILENAME  /opt/processmaker/workflow/public_html/app.php;
#    fastcgi_intercept_errors off;
#    fastcgi_buffers 8 16k;
#    fastcgi_buffer_size 32k;
#    fastcgi_connect_timeout 300;
#    fastcgi_send_timeout 300;
#    fastcgi_read_timeout 300;
# 
#  }
# 
# #Browser Caching
# 
#  location ~* \.(ico|css|js|gif|jpeg|jpg|png|woff|ttf|otf|svg|woff2|eot)$ {
#    expires 24h;
#    add_header Cache-Control public;
#    access_log off;
#    log_not_found off;
# 
#    fastcgi_pass unix:/var/run/php-fpm/processmaker.sock;
# 
#    fastcgi_index    app.php;
# 
#    include fastcgi_params;
# 
#    fastcgi_param    SCRIPT_FILENAME   /opt/processmaker/workflow/public_html/app.php;
# 
#    fastcgi_intercept_errors off;
# 
#    fastcgi_buffers 8 16k;
# 
#    fastcgi_buffer_size 32k;
# 
#    fastcgi_connect_timeout 300;
# 
#    fastcgi_send_timeout 300;
# 
#    fastcgi_read_timeout 300;
# }
# 
# 
# location ~ /\.ht {
#   deny all;
# }
# 
# error_page 404 /404.html;
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
#   root /usr/share/nginx/html;
# }
# 
#}


#Create temporary processmaker configuration file
################### NOTE: nginx.processmaker.com NEEDS TO BE REPLACED WITH THE NAME OF THE SERVER ###############################
echo -e "#ProcessMaker HTTP Virtual Host\n \nserver {\n \n  listen 80;\n  listen [::]:80;\n  #Change for server DNS name\n  server_name nginx.processmaker.com;\n  #The following line must be added Only if phpMyAdmin is configured\n  #include /opt/phpMyAdmin/phpMyAdmin.conf;\n \n  root /opt/processmaker/workflow/public_html; #where ProcessMaker is installed\n \n  index index.html index.htm app.php index.php;\n \n  try_files \$uri \$uri/ /index.php?\$args;\n \n  charset utf-8;\n \n  location / {\n    try_files \$uri \$uri/ /index.php?\$query_string;\n  }\n \nlocation = /favicon.ico { access_log off; log_not_found off; }\n \n  location = /robots.txt  { access_log off; log_not_found off; }\n \n  access_log /var/log/nginx/pm-access.log combined; #enables access logs\n \n  error_log  /var/log/nginx/pm-error.log error; #enables error logs\n \n  sendfile off;\n \n  client_max_body_size 100m;\n \n # Every PHP script must be routed to PHP-FPM\n \n  location ~ \.php\$ {\n    fastcgi_split_path_info ^(.+\.php)(/.+)\$;\n    fastcgi_pass unix:/var/run/php-fpm/processmaker.sock;\n    fastcgi_index    app.php;\n \n    include fastcgi_params;\n    fastcgi_param    SCRIPT_FILENAME  /opt/processmaker/workflow/public_html/app.php;\n    fastcgi_intercept_errors off;\n    fastcgi_buffers 8 16k;\n    fastcgi_buffer_size 32k;\n    fastcgi_connect_timeout 300;\n    fastcgi_send_timeout 300;\n    fastcgi_read_timeout 300;\n \n  }\n \n #Browser Caching\n \n  location ~* \.(ico|css|js|gif|jpeg|jpg|png|woff|ttf|otf|svg|woff2|eot)\$ {\n    expires 24h;\n    add_header Cache-Control public;\n    access_log off;\n    log_not_found off;\n \n    fastcgi_pass unix:/var/run/php-fpm/processmaker.sock;\n \n    fastcgi_index    app.php;\n \n    include fastcgi_params;\n \n    fastcgi_param    SCRIPT_FILENAME   /opt/processmaker/workflow/public_html/app.php;\n \n    fastcgi_intercept_errors off;\n \n    fastcgi_buffers 8 16k;\n \n    fastcgi_buffer_size 32k;\n \n    fastcgi_connect_timeout 300;\n \n    fastcgi_send_timeout 300;\n \n    fastcgi_read_timeout 300;\n }\n \n \n location ~ /\.ht {\n   deny all;\n }\n \n error_page 404 /404.html;\n error_page 500 502 503 504 /50x.html;\n location = /50x.html {\n   root /usr/share/nginx/html;\n }\n \n}\n" > /etc/nginx/conf.d/processmaker.conf.tmp
#Create conf file only if it doesn't already exist
cp -n /etc/nginx/conf.d/processmaker.conf.tmp /etc/nginx/conf.d/processmaker.conf
#Remove temp conf file
rm -f /etc/nginx/conf.d/processmaker.conf.tmp

#vi /etc/nginx/nginx.conf

#Contents for nginx.conf
#user nginx;
#
#
#worker_processes auto;
#
#
#error_log  /var/log/nginx/error.log warn;
#
#
#pid       /var/run/nginx.pid;
#
#
## Load dynamic modules. See /usr/share/nginx/README.dynamic.
#
#
#include /usr/share/nginx/modules/*.conf;
#
#
#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;
#
#  log_format combined_ssl '$remote_addr - $remote_user [$time_local] '
#
#                          '$ssl_protocol/$ssl_cipher '
#
#                          '"$request" $status $body_bytes_sent '
#
#                          '"$http_referer" "$http_user_agent"';
#
#  sendfile            on;
#
#  tcp_nopush          on;
#
#  tcp_nodelay         on;
#
#  keepalive_timeout   120;
#
#  keepalive_requests  100;
#
#  types_hash_max_size 2048;
#
#
#  #Enable Compression
#
#  gzip on;
#
#  gzip_disable "msie6";
#
#  gzip_vary on;
#
#  gzip_proxied any;
#
#  gzip_comp_level 6;
#
#  gzip_buffers 16 8k;
#
#  gzip_http_version 1.1;
#
#  gzip_types text/css text/plain text/xml text/x-component text/javascript application/x-javascript application/javascript application/json application/xml application/xhtml+xml application/x-font-ttf application/x-font-opentype application/x-font-truetype image/svg+xml image/x-icon image/vnd.microsoft.icon font/ttf font/eot font/otf font/opentype;
#
#
#  include /etc/nginx/conf.d/*.conf;
#
#
##Comment out ServerTokens OS
#
#  server_tokens off;
#
#
#  #Prevent ClickJacking Attacks
#
#  add_header X-Frame-Options SAMEORIGIN;
#
#
#  #Load Balancer/Reverse Proxy Header
#
#  real_ip_header X-Forwarded-For;
#
#  set_real_ip_from 0.0.0.0/0;
#
#}

#Create nginx configuration file
echo -e "user nginx;\n\n\nworker_processes auto;\n\n\nerror_log  /var/log/nginx/error.log warn;\n\n\npid       /var/run/nginx.pid;\n\n\n# Load dynamic modules. See /usr/share/nginx/README.dynamic.\n\n\ninclude /usr/share/nginx/modules/*.conf;\n\n\nevents {\n\n  worker_connections 1024;\n\n}\n\n\nhttp {\n\n  include        /etc/nginx/mime.types;\n\n  default_type   application/octet-stream;\n\n  log_format     main '\$remote_addr - \$remote_user [\$time_local] "\$request" '\n\n                      '\$status \$body_bytes_sent "\$http_referer" '\n\n                      '"\$http_user_agent" "\$http_x_forwarded_for"';\n\n  access_log  /var/log/nginx/access.log  main;\n\n  log_format combined_ssl '\$remote_addr - \$remote_user [\$time_local] '\n\n                          '\$ssl_protocol/\$ssl_cipher '\n\n                          '"\$request" \$status \$body_bytes_sent '\n\n                          '"\$http_referer" "\$http_user_agent"';\n\n  sendfile            on;\n\n  tcp_nopush          on;\n\n  tcp_nodelay         on;\n\n  keepalive_timeout   120;\n\n  keepalive_requests  100;\n\n  types_hash_max_size 2048;\n\n\n  #Enable Compression\n\n  gzip on;\n\n  gzip_disable "msie6";\n\n  gzip_vary on;\n\n  gzip_proxied any;\n\n  gzip_comp_level 6;\n\n  gzip_buffers 16 8k;\n\n  gzip_http_version 1.1;\n\n  gzip_types text/css text/plain text/xml text/x-component text/javascript application/x-javascript application/javascript application/json application/xml application/xhtml+xml application/x-font-ttf application/x-font-opentype application/x-font-truetype image/svg+xml image/x-icon image/vnd.microsoft.icon font/ttf font/eot font/otf font/opentype;\n\n\n  include /etc/nginx/conf.d/*.conf;\n\n\n#Comment out ServerTokens OS\n\n  server_tokens off;\n\n\n  #Prevent ClickJacking Attacks\n\n  add_header X-Frame-Options SAMEORIGIN;\n\n\n  #Load Balancer/Reverse Proxy Header\n\n  real_ip_header X-Forwarded-For;\n\n  set_real_ip_from 0.0.0.0/0;\n\n}" > /etc/nginx/nginx.conf

#Uninstall older php versions
yum -y remove php*
yum -y remove php php-fpm php-cli php-common

#Add PHP repositories
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

#Install PHP 7.1
yum -y install php71w php71w-cli php71w-opcache php71w-fpm php71w-gd php71w-mysqlnd php71w-soap php71w-mbstring php71w-ldap php71w-mcrypt php71w-xml

#Start PHP FPM
service php-fpm start
#Add PHP FPM to autostart
chkconfig php-fpm on

#Configure PHP FPM
sed -i '/short_open_tag = Off/c\short_open_tag = On' /etc/php.ini

sed -i '/post_max_size = 8M/c\post_max_size = 24M' /etc/php.ini

sed -i '/upload_max_filesize = 2M/c\upload_max_filesize = 24M' /etc/php.ini

sed -i '/;date.timezone =/c\date.timezone = America/New_York' /etc/php.ini

sed -i '/expose_php = On/c\expose_php = Off' /etc/php.ini

#Configure OpCache
sed -i '/;opcache.enable_cli=0/c\opcache.enable_cli=1' /etc/php.d/opcache.ini

sed -i '/opcache.max_accelerated_files=4000/c\opcache.max_accelerated_files=10000' /etc/php.d/opcache.ini

sed -i '/;opcache.max_wasted_percentage=5/c\opcache.max_wasted_percentage=5' /etc/php.d/opcache.ini

sed -i '/;opcache.use_cwd=1/c\opcache.use_cwd=1' /etc/php.d/opcache.ini

sed -i '/;opcache.validate_timestamps=1/c\opcache.validate_timestamps=1' /etc/php.d/opcache.ini

sed -i '/;opcache.fast_shutdown=0/c\opcache.fast_shutdown=1' /etc/php.d/opcache.ini

#vi /etc/php-fpm.d/processmaker.conf

#Contents for processmaker.conf
#[processmaker]
#
#user = nginx
#
#group = nginx
#
#listen = /var/run/php-fpm/processmaker.sock
#
#listen.mode = 0664
#
#listen.owner = nginx
#
#listen.group = nginx
#
#pm = dynamic
#
#pm.max_children = 100 
#
#pm.start_servers = 20
#
#pm.min_spare_servers = 20
#
#pm.max_spare_servers = 50
#
#pm.max_requests = 500
#
#php_admin_value[error_log] = /var/log/php-fpm/processmaker-error.log
#
#php_admin_flag[log_errors] = on

#Create PHP FPM configuration file
echo -e "[processmaker]\n\nuser = nginx\n\ngroup = nginx\n\nlisten = /var/run/php-fpm/processmaker.sock\n\nlisten.mode = 0664\n\nlisten.owner = nginx\n\nlisten.group = nginx\n\npm = dynamic\n\npm.max_children = 100 \n\npm.start_servers = 20\n\npm.min_spare_servers = 20\n\npm.max_spare_servers = 50\n\npm.max_requests = 500\n\nphp_admin_value[error_log] = /var/log/php-fpm/processmaker-error.log\n\nphp_admin_flag[log_errors] = on" > /etc/php-fpm.d/processmaker.conf

chown -R nginx:nginx /opt/processmaker

#Restart php-fpm for changes to apply
service php-fpm restart
#Restart nginx for changes to apply
service nginx restart




  • No labels