How to Install WordPress On CentOS 7

Step 1) Preflight Check:

This article assumes you have CentOS 7 installed and are logged into your server as the root user. We are also using the most recent version of WordPress for this install. This article also assumes you have already installed LAMP (Linux, Apache, MySQL, PHP) on your server and your PHP is updated to the latest version. You will also need to know your root mysql password so you can log into mysql as root.

Need help to install LAMP? Click this link!

mysql

 

If the above command isn’t working for you, then you may not be logged in as root user. In that case, you can run the following instead.

mysql -u root -p

 

Keep in mind that you will be prompted for the password you set earlier as root when you installed MySQL so you will need to have that handy. If you do not have your root password, you will have to reset it. If you need help with that, check out this article here and scroll down to the method via “Reset using command line“. Once you do gain access, you can safely move to step 2!

 

A successful login should look something like this:

login

 

 

 

 

 

Note:
To exit mysql at any time simply type: exit

exit

 

Step 2) Create a database

Hooray! We successfully logged in. Now we can create a database with the following command. You can call it whatever you would like, but for this article, we are calling it WordPress.

CREATE DATABASE wordpress;

Note:
While it’s easier to copy and paste directly in the command line. You should know that every mysql command will require a ;  (colon) at the end of every statement in case you are getting an error.

Once our database is created, you need to create a user for that database. Once again I am using a very simple username, and password so feel free to make yours more secure. Do remember your username and password as we will need it later in this article. Type the following command.

CREATE USER adminuser@localhost IDENTIFIED BY 'password';

At this point, we have created a database user however, we still need to give that user permissions to access the database. We can add those permissions with the following command:

GRANT ALL PRIVILEGES ON wordpress.* TO adminuser@localhost IDENTIFIED BY 'password';
Replace anything in red with your database name, user, and password. Also, note that the password is contained in single quotes followed by a colon;

Note:
Remember your username and password you use in this step as will be needed later.

Now we want to flush MySQL so that it is made aware of those changes.

FLUSH PRIVILEGES;

 

and finally, exit MySQL

exit

 

Step 3) Install WordPress

 

cd ~
wget http://wordpress.org/latest.tar.gz

 

Note:
if you do not have wget yet you can download it with yum using the following:

 

yum install wget

 

Now, let’s  unzip that tar file

tar -xzvf latest.tar.gz

 

That should create a file named WordPress in our home directory. Next, we want to move that file and its contents to our public_html folder, so it can serve up the content for our website. We want to keep the same file permission, so we use the following rsync command.

sudo rsync -avP ~/wordpress/ /var/www/html/

For WordPress to be able to upload files, we need to create an uploads directory. Go ahead and use the following:

mkdir /var/www/html/wp-content/uploads

 

Lastly, update the Apache permissions for new WordPress files

sudo chown -R apache:apache /var/www/html/*

Step 4) Configuring WordPress

Next, we have to update the wp-config.php file in WordPress for it to connect to the database successfully. So let’s go to the html folder where your WordPress install is located.

cd /var/www/html

Create a wp-config.php file by copying the sample file WordPress has provided.

cp wp-config-sample.php wp-config.php

Now, we need to edit the new wp-config.php file with the correct database information we created in Step 1.

I used vim to make that change, but you can use any editor you are comfortable with.

vim  wp-config.php

Next, we need to add info into the following fields of the databaseuser, and password we created in Step 1.

Old Settings:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
/** MySQL database username */
define( 'DB_USER', 'username_here' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );


New Settings:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'adminuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password' );

Once you have made those changes, go ahead and save the file using the :wq command in Vim.

 

Step 5) Setup through wp-admin and verification

Now, let’s verify that your WordPress install is working. You should see something like the following on your server page. Replace server_domain_name_or_IP with your server name or IP.

http://server_domain_name_or_IP/wp-admin

install

 

If this is what you see then congrats!!! You have successfully installed WordPress on your Centos server, and you can close this article!

 

I have also listed a couple of common issues you might encounter in the sections below. Keep in mind that we cannot list every possible issue but, we have listed what we believe are the most common problems you may run into.

 

 

Database Error Establishing a Connection

If you are getting an Error about establishing a Database connection, verify that your wp-config.php file has the correct userpassword and database name. There should be no spaces between the single quotes! This error usually means you have something going on in the wp-config.php file so be sure to check your syntax.

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
/** MySQL database username */
define( 'DB_USER', 'username_here' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );


Troubleshooting and Verifying php

The most common issue with php is, that it may not be fully up to date in order for it to work with the newer versions of WordPress. Usually, you will get the error “WordPress requires at least php version…

In this next step, we will verify the php version is at least PHP 7.1, by creating a phpinfo.php page. However, it is always preferable to have the most up to date version of PHP, which at the time of this article is PHP 7.2, especially for security reasons.

To create a phpinfo page go to your /var/www/html and create a file called phpinfo.php.

touch phpinfo.php
chmod 644 phpinfo.php

 

and then, let’s add the following code:

<?php
// Show all information, defaults to INFO_ALL
phpinfo();
?>

Then, go to http://server_domain-name_or_IP/phpinfo.php

phpinfo page

And you should see something like this if your php is set up successfully.

 

If for some reason your php is out of date, you may have to update yum’s config file to do so.

 

First, double-check you have to correct yum packages with the following command

 

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

To enable php 7.2, we need to enable the php 7.2 remi repo. At the time of the release of this article, we are using php 7.2. So, in going forward, when they release php 7.4 or php 7.5, you would edit the corresponding file.

 

These should be located in your /etc/yum.repos.d folder. Open the file with vim, and change the enabled field to a 1, and then save the file using vim’s :wq command

[remi-php72]
name=Remi's PHP 7.2 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php72/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php72/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php72/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Update yum

yum update

Now, check for the php version of the php-fpm packages that should be on the server, under the field Version:

 

The output should look similar to this

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.myfahim.com
* epel: mirror.ehost.vn
* extras: centos.myfahim.com
* remi-php72: mirrors.thzhost.com
* remi-safe: mirrors.thzhost.com
* updates: centos.myfahim.com
remi-php72 | 2.9 kB 00:00:00
remi-php72/primary_db | 195 kB 00:00:08
Available Packages
Name : php
Arch : x86_64
Version : 7.2.8
Release : 1.el7.remi
Size : 3.2 M
Repo : remi-php72
Summary : ........

Next, install, enable and then start php fpm with the following commands:

yum install php-fpm php-gd php-pdo php-mbstring php-pear -y
systemctl enable php-fpm
systemctl start php-fpm

Don’t forget to restart apache, and/or php, if changes where made.

 

If using Apache:

service httpd restart

If using Nginx:

service nginx restart

 

Once completed, your phpinfo.php page should show you using php 7.2 or later. If you are using Nginx, you may have to verify that it knows to how to send php requests to php-fpm. If you have an issue, double-check your nginx.conf for errors or misconfiguration problems.

If your php is working and up to date, check your web server settings.

 

Troubleshooting and verifying your web server

You should also check that your Apache or Nginx and ports configured correctly. You should be able to go here

http://server_domain_name_or_IP

and see something similar to this if apache is set up successfully.

testing123

Alternatively, if your using Nginx, something similar to this will appear

 

Lastly, don’t forget to restart your webserver any time you make changes.

 

If you are not getting one of these success pages, double check your configuration files in your Apache or Nginx settings. Also, you can check to see if you are listening to the proper ports.

How To Install the LAMP Stack on CentOS 7

Pre-flight Checks

To find out which Linux distribution you are running, use this command:
cat /etc/redhat-release
It’s now time to verify that our yum environment is clean and up to date, we’ll do this by cleaning all of the yum cache, and update yum using:
yum clean all
yum update

Installing LAMP

Now that we know what environment we’re working in let’s get started on installing the LAMP stack on CentOS 7:

L – Linux

The first part of the stack is Linux. This is your operating system and since it is already installed there no need to worry about installing it or make any modifications. Installing CentOS 7 is easy to download and install using the image files that are provided from centos.org. CentOS has a helpful installation guide if you need to reference it for additional installation instructions.

A – Apache

Apache is the next piece of the LAMP stack. Apache is the webserver software that is responsible for serving the content to your web browser from the server. It takes the requests that it receives and sends back the HTML code for your browser to interpret.
Install Apache using Yum:
yum -y install httpd

Open ports in the FW:
firewall-cmd --permanent --add-service=http -add-service=https
firewall-cmd --reload

Start and enable apache to run when the server starts:
systemctl start httpd
systemctl enable httpd

Default Apache installation locations:

Some important server locations to remember for Apache are listed below. These are out-of-the-box defaults and can be changed as you see fit:
httpd binary: /sbin/httpd
Apache configuration file: /etc/httpd/conf/httpd.conf
Website files: /var/www/html/
Apache logs: /var/log/httpd/

M – MySQL/MariaDB

MySQL and MariaDB are what handle your website’s database. In most of today’s websites, data is not stored in flat or static files. Instead, the base of the site is coded in PHP which can pull information from your website’s database to deliver more dynamic content. MySQL and MariaDB are popular database servers that help house that information. MariaDB is becoming more widely used, so we’ll use for installation. Both are very similar in setting up and configuring.

Install MariaDB:
yum -y install mariadb-server
systemctl start mariadb

Although securing mysql is optional, it is strongly recommended:
mysql_secure_installation
**Run through the steps on screen to secure your Mysql/MariaDB environment

Enable MariaDB to start when the server starts:
systemctl enable mariadb

Default installation locations:

Some important server locations to remember for MySQL/MariaDB are listed below. These are out-of-the-box defaults and can be changed as you see fit:
MariaDB binary: /bin/mysql
MariaDB Configuration file: /etc/my.cnf
Database location: /var/lib/mysql
MariaDB logs: /var/log/mariadb/mariadb.log

P – PHP

Most websites that exist today are built using PHP coding. PHP provides the programmer with more options for dynamic content compared to flat html code. Several PHP versions are available for use depending on what PHP version the website was built in. We’ll install the latest version of PHP.

In order to install the latest PHP version, we first need to install CentOS’s Software Collection repository (SCL):
yum -y install centos-release-scl.noarch

We’ll now have access to install PHP 7.2 :
yum -y install rh-php72

Now we’ll fix the symbolic link for the binary:
ln -s /opt/rh/rh-php72/root/usr/bin/php /usr/bin/php

Install the updated PHP Module for Mysql/MariaDB:
yum -y install rh-php72-php-mysqlnd

Restart apache to work with the newly installed PHP:
systemctl restart httpd

How to Install .NET Framework 3.5 on Windows Server 2012 R2

Most modern Windows applications require .NET Framework to work properly. The roles and features setup wizard Server Manager in Windows Server 2012 R2 allows to install two different versions of .NET Framework at a time – 3.5 and 4.5. The installation of .NET Framework 4.5 doesn’t usually cause any problems – it’s very simple, however, you can’t say exactly the same about the installation of .NET Framework 3.5.

 

 

Actually, when trying to install .NET Framework 3.5 in Windows Server 2012 R2 with the standard settings, the following error message appears: «Installation of one of more roles, role services or features failed. The source files could not be found…».

 

 

The reason behind this behavior is that .NET Framework 3.5 binary files are not a part of the local cache of the binary files that are saved on the server’s system disk when the operating system is being installed. This is done under the concept of Features on Demand in Windows Server 2012 to reduce the amount of disk space occupied by the OS for its own needs.

Check if .NET Framework 3.5 is in the local repository using the Powershell command:

Get-WindowsFeature *Framework*

As you can see, the required component is deleted (Install State: Removed).

 

By default, when you install NET Framework 3.5 through Server Manager, the system tries to obtain the necessary files from the Windows Update website over the Internet (not from the local WSUS server), and if the server does not have Internet access, the installation fails. The user needs to specify the path to the OS distribution from which the missing component could be installed.

 

To install .NET Framework 3.5 manually, click Specify an alternative source path to enter an alternative path to a folder containing the installation disk of Windows Server 2012 R2.

 

Tip. The installation disk must contain the same version of OS that you have installed (the same edition, language, and updates are important). If the installer does not find the required files in the specified folder, see the solution below.

As the path, you can specify either a local folder (in our example it is D:\source\sxs, where D:\ is a letter of the local DVD drive with a Windows Server distribution), or a network folder.

 

 

By clicking OK, the system will find .NET Framework 3.5 binaries and install the component.

 

 

The same operation can be performed from the command prompt by running the following command as an administrator:

dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess

/Online means that you need to upgrade your current OS, and not the wim image

/enable-feature/featurename: NetFX3/all means that it is necessary to install .NET Framework 3.5 with all its features

/Source is the path to the directory with Windows distribution, which contains the necessary components

/LimitAccess prevents accessing Windows Update

 

 

The same operation in PowerShell for installing .Net 3.5 looks like this:

Add-WindowsFeature NET-Framework-Core -Source d:\sources\sxs

Path to the original Windows distribution can be set in the system on a regular basis using:

  • the registry parameter RepairContentServerSource that is located in the HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing branch
  • or a group policy Specify settings for optional component installation and component repair (the policychanges this setting in the registry)

 

 

Note. The group policy Specify settings for optional component installation and component repair is in the following section GPO: Computer Configuration -> Administrative Templates -> System. The policy should be enabled and the path to the directory with the OS distribution should be specified (Alternative source file path). To prevent the server from trying to update online, check the box Never attempt to download payload from Windows Update.

 

To verify that the .NET Framework 3.5 is installed, go to the C:\Windows\Microsoft.NET\Framework64 directory and make sure that v3.5 folder appeared.

 

 

If the .NET Framework 3.5.1 installation methods described above did not help you, try the following solutions.

After installing some updates, the version (build) of Windows Server 2012 R2 in the system may cease to correspond to the image of the OS stored in your distribution image. In this case, the installer, when comparing the version of the Windows kernel, refuses to install the deprecated version of the component. In this case, as a rule, when you install the .NET Framework through dism, the following error occurs: 0x800f081f. The source files could not be found

 

 

To fix the problem try to install .Net online through from Microsoft servers:

 

  • Save the current Windows Update settings to the reg file (key HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate)
  • Delete this key and restart the WU service: net stop wuauserv & net start wuauserv
  • Run the .Net5 online installation: DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
  • After the installation is complete, return the WU settings by importing the reg file and restart the WindowsUpdate service again

 

Tip. In the future, you can use folder C:\Windows\winsxs from this server to install .Net FrameWork 3.5 on other servers with the same version of the OS. Copy the C:\Windows\winsxs folder to the desired server in the C:\tmp\winsxs directory and install the component with the command:
dism /online /enable-feature /featurename:NetFX3 /all /Source:C:\tmp\winsxs /LimitAccess

 

In addition, if you installed a Language Packs on the server, before you install the .NET Framework 3.5.1, you must uninstall it using the lpksetup command.

 

Also check that there are installed patches for NET 3.5 Framework in the list of installed system updates (in theory they should not have been installed if the NetFX3 component is not installed).

 

 

Uninstall this updates and after the reboot, try installing .NET 3.5.