WordPress CentOS7, MySQL, Nginx, Cloud Service

Install WordPress on CentOS7, with MySQL on ESC

Supporting Tools

sudo yum install wget nano telnet openssl

Install NGINX

sudo yum install epel-release
sudo yum install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo firewall-cmd –permanent –zone=public –add-service=http
sudo firewall-cmd –permanent –zone=public –add-service=https
sudo firewall-cmd –reload

Install PHP

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y yum-utils
yum-config-manager –disable remi-php54
yum-config-manager –enable remi-php73
yum install sudo yum install php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl
php -v
PHP 7.3.8 (cli) (built: Jul 30 2019 09:26:16) ( NTS )


/etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
sudo chown -R nginx:nginx /var/lib/php
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Download WordPress

sudo mkdir -p /var/www/example.com
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xf latest.tar.gz
sudo mv /tmp/wordpress/* /var/www/example.com/
sudo chown -R nginx: /var/www/example.com

Configure Nginx

sudo nano /etc/nginx/conf.d/example.com.conf
https://www.prado.lt/how-to-install-wordpress-linux-nginx-mariadb-10-3-php-7-3-lemp-stack-on-centos-7

server {
     listen      443;
     server_name publicip example.com;
     ssl on;
     ssl_certificate /home/example.com-cert/example.com.crt;
     ssl_certificate_key /home/example.com-cert/example.com_key.key;
     ssl_protocols TLSv1.1 TLSv1.2;
     server_tokens off;

# Define default caching of 24h
expires 86400s;
add_header Pragma public;
add_header Cache-Control "max-age=86400, public, must-revalidate, proxy-revalidate";

# deliver a static 404
error_page 404 /404.html;
location  /404.html {
    internal;
}

# Deliver 404 instead of 403 "Forbidden"
error_page 403 = 404;

# Do not allow access to files giving away your WordPress version
location ~ /(\.|wp-config.php|readme.html|licence.txt) {
    return 404;
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

# Don't log robots.txt requests
location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

# Rewrite for versioned CSS+JS via filemtime
location ~* ^.+\.(css|js)$ {
    rewrite ^(.+)\.(\d+)\.(css|js)$ $1.$3 last;
    expires 31536000s;
    access_log off;
    log_not_found off;
    add_header Pragma public;
    add_header Cache-Control "max-age=31536000, public";
}

# Aggressive caching for static files
# If you alter static files often, please use
# add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
location ~* \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|ogv|otf|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|t?gz|tif|tiff|ttf|wav|webm|wma|woff|wri|xla|xls|xlsx|xlt|xlw|zip)$ {
    expires 31536000s;
    access_log off;
    log_not_found off;
    add_header Pragma public;
    add_header Cache-Control "max-age=31536000, public";
}
error_log  /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;

root  /var/www/example.com/;
location / {
    index  index.php index.html index.htm;
}

# get friendly url links working
if (!-e $request_filename) {
    rewrite ^(.+)$ /index.php?q=$1 last;
}

# pass all PHP files through php-fpm
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass   unix:/var/run/php-fpm/www.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME /var/www/example.com/$fastcgi_script_name;
    include        /etc/nginx/fastcgi_params;
    fastcgi_intercept_errors on;
    fastcgi_ignore_client_abort off;
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
}

# deny all apache .htaccess or .htpasswd files
location ~ /\.ht {
    deny all;
}
# Deny access to hidden files
location ~ /\. {
    deny all;
    access_log off;
    log_not_found off;
}
}

sudo nano /etc/nginx/conf.d/example.com.conf

MySQL

cd tmp/
get http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum update
sudo yum install mysql
mysql -h<somerandomcharacter.mysql.kualalumpur.rds.aliyuncs.com> -P<Port number> -u<Username> -p<Password>

Design a site like this with WordPress.com
Get started