How to install
Not using CentOS 7? Choose a different OS:
The installation is mostly done via command line so I assume you are comfortable using command line interface.
- Your Compute Engine Instance running.
- For setting up Compute Engine, see the Setting up Compute Engine Instance with CentOS 7.
- Setup and secure your new CentOS 7 server.
- Point your domain to Google Cloud, see the Setting up Google Cloud DNS for your domain
1. Install Nginx
Go to Compute Engine >> VM Instances page, here you will have your instances listed. Click the SSH button to launch the terminal in a new browser window.
Nginx packages are available in the EPEL repositories. So you need to install EPEL repository before installing Nginx. If you have followed the steps to setup
sudo yum install epel-release
Once you have the EPEL installed you can proceed to install Nginx
sudo yum install nginx
Once complete, you can confirm that Nginx has been installed by issuing this command
Once the installation is complete you need to start the Nginx service.
sudo systemctl enable nginx
sudo systemctl start nginx
Now you can check the status of Nginx.
sudo systemctl status nginx
You should see the output similar to this which means Nginx has started successfully.
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-02-19 04:42:46 UTC; 5s ago
Process: 4499 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 4497 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 4496 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 4501 (nginx)
├─4501 nginx: master process /usr/sbin/nginx
└─4502 nginx: worker process
Feb 19 04:42:46 lemp systemd: Starting The nginx HTTP and reverse proxy server…
Feb 19 04:42:46 lemp nginx: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Feb 19 04:42:46 lemp nginx: nginx: configuration file /etc/nginx/nginx.conf test is successful
Feb 19 04:42:46 lemp systemd: Failed to read PID from file /run/nginx.pid: Invalid argument
Feb 19 04:42:46 lemp systemd: Started The nginx HTTP and reverse proxy server.
Visit your domain in your browser, you will see the Nginx welcome page.
2. Configure Firewall
If you have followed the server setup for CentOS 7 you must have installed UFW and enabled it. Now you need to allow connections to the VM Instance from the public. So, now you can add the ports,
HTTPS (443)for the public access.
If you haven’t enabled this go ahead and run the following command.
sudo ufw allow http
sudo ufw allow https
3. Configure Nginx
Next, open the Nginx configuration file, which can be found at
sudo nano /etc/nginx/nginx.conf
Start by setting the user to the
username that you’re currently logged in with. This will make managing file permissions much easier in the future.
The worker_processes directive is the amount of CPU cores your instance. In my case, this is
Uncomment the multi_accept directive and set it to
Lower the keepalive_timeout directive to
For security reasons, you should uncomment the server_tokens directive and ensure it is set to
Add the new client_max_body_size directive below the server_tokens and set the value to
Uncomment the gzip_proxied directive and set it to
any, uncomment the gzip_comp_level directive and set it to the value of
2 and finally uncomment the gzip_types directive.
In order for Nginx to correctly serve PHP you also need to ensure the
fastcgi_param SCRIPT_FILENAME directive is set, otherwise, you will receive a blank white screen when accessing any PHP scripts. So open fastcgi_params file by issuing
sudo nano /etc/nginx/fastcgi_params
Add the following at the end of the file
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
That’s all, this is the basic Nginx configuration, hit
CTRL+X followed by
Y to save the changes. Ensure that the configuration file contains no errors and restart Nginx for the changes to take effect by issuing the following command
sudo nginx -t
If you get a successful message, then proceed with the following command
sudo service nginx restart
4. Install PHP 7.3
To install PHP 7.3 add the REMI repository with the following command.
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Now you can install PHP 7.3 and some required packages.
sudo yum --enablerepo=remi-php73 install php-common php-mysql php-xml php-xmlrpc php-curl php-gd php-imagick php-cli php-dev php-imap php-mbstring php-opcache php-soap php-zip unzip
After the installation has completed, confirm that PHP 7.3 has installed correctly with this command.
You will receive an output similar to this.
PHP 7.3.2 (cli) (built: Feb 5 2019 13:10:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.2, Copyright (c) 1999-2018, by Zend Technologies
5. Configure PHP 7.3
Now that PHP 7.3.* has installed and you need to configure the user and group that the service will run under.
sudo nano /etc/php-fpm.d/www.conf
Change the following lines by replacing the apache or nobody with your
user = username
group = username
listen.owner = username
listen.group = username
Now we configure PHP for WordPress by changing some values in
sudo nano /etc/php.ini
Hit F6 for search inside the editor and update the following values
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000
Y to save the configuration and check if the configuration is correct and start PHP and enable it.
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
Now we have completed NGINX and PHP 7.3 on CentOS 7.
6. Set up Cloud SQL
Once everything is in place you can create a Cloud SQL Instance and connect with your VM Instance.