How to Install WordPress on Windows Server 2016
Please share with your friends...
  • 1
  • 1
  •  
  •  
  • 1
  • 1
  •  
  •  
  •  
  •  
    4
    Shares


⇐ BackPageNext ⇒
MySQL

MySQL

MySQL is an open-source relational database management system (RDBMS), now owned by Oracle Corporation. It is known as a fast, stable and true multi-user, multi-threaded SQL database server.

The following are general instructions that can be used for installing MySQL on Windows Server 2016, and are not just specific to WordPress. Check the MySQL download page to determine the latest version and update the variables at Installation Step 2 as necessary.

Prerequisites

MySQL 5.7 requires the Microsoft Visual C++ 2013 Redistributable package to be installed.

  1. Download and install the Microsoft Visual C++ 2013 Redistributable package, using the following PowerShell commands:
    Invoke-WebRequest "https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe" -OutFile "vc_redist_2013_x64.exe"
    .\vc_redist_2013_x64.exe /Q

Installation

The following instructions are used to install MySQL on Windows Server 2016 using PowerShell.

  1. Change into the Downloads directory, using the following PowerShell command:
    cd ~\Downloads
  2. Set temporary variables to be used during the MySQL 5.7 installation, using the following PowerShell commands:
    $MYSQL_ZIP = "mysql-5.7.21-winx64"
    $MYSQL_URL = "https://dev.mysql.com/get/Downloads/MySQL-5.7/$MYSQL_ZIP.zip"
    $MYSQL_NAME = "MySQL"
    $MYSQL_PROD = "$MYSQL_NAME Server 5.7"
    $MYSQL_PATH = "$env:ProgramFiles\$MYSQL_NAME"
    $MYSQL_BASE = "$MYSQL_PATH\$MYSQL_PROD"
    $MYSQL_PDTA = "$env:ProgramData\$MYSQL_NAME\$MYSQL_PROD"
    $MYSQL_DATA = "$MYSQL_PDTA\data"
    $MYSQL_INIT = "$MYSQL_PDTA\mysql-init.sql"
    
  3. Download and install MySQL, using the following PowerShell commands:
    Invoke-WebRequest "$MYSQL_URL" -OutFile "$MYSQL_ZIP.zip"
    Expand-Archive "$MYSQL_ZIP.zip" "$MYSQL_PATH"
    Rename-Item "$MYSQL_PATH\$MYSQL_ZIP" "$MYSQL_BASE"
  4. Add the MySQL “bin” directory to the search Path variable, using the following PowerShell commands:
    $env:Path += ";$MYSQL_BASE\bin"
    setx Path $env:Path /m

    The commands will produce output similar to the following:

    SUCCESS: Specified value was saved.
  5. Create a MySQL Option File, using the following PowerShell command:
    Set-Content "$MYSQL_BASE\my.ini" "[mysqld]`r`nbasedir=""$MYSQL_BASE""`r`ndatadir=""$MYSQL_DATA""`r`nexplicit_defaults_for_timestamp=1"
  6. Create the MySQL database directory, using the following PowerShell command:
    New-Item $MYSQL_DATA -ItemType Directory | Out-Null
  7. Initialise the MySQL database files, using the following command:
    mysqld --initialize-insecure

    You can safely ignore the generated warnings, and don’t worry – we will set the root password shortly.

  8. Install MySQL as a Windows service, using the following command:
    mysqld --install

    The command will produce output similar to the following:

    Service successfully installed.
  9. Start the MySQL service, using the following PowerShell commands:
    Start-Service MySQL
    Get-Service MySQL

    The commands will produce output similar to the following:

    Status   Name               DisplayName
    ------   ----               -----------
    Running  MySQL              MySQL
  10. Create a MySQL initialisation script to set a password for the root user, using the following PowerShell command:
    Set-Content $MYSQL_INIT "ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@SSW0RD';"

    Replace P@SSW0RD in the above command with your own strong password.

  11. Add the following lines to the MySQL initialisation script in preparation for running WordPress, using the following PowerShell commands:
    Add-Content $MYSQL_INIT "CREATE DATABASE wordpress;"
    Add-Content $MYSQL_INIT "CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'P@SSW0RD';"
    Add-Content $MYSQL_INIT "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';"

    Replace P@SSW0RD in the second command above with your own strong password. You will need to provide this password during the WordPress installation.

  12. Execute the MySQL initialisation script, using the following command:
    mysql --user=root --execute="source $MYSQL_INIT"
  13. Delete the MySQL initialisation script, using the following PowerShell command:
    Remove-Item $MYSQL_INIT

MySQL is now installed and configured to run on Windows Server 2016.

⇐ BackPageNext ⇒

Oracle, MySQL® and MySQL® Logo are trademarks of the Oracle Corporation.
How to Install WordPress on Windows Server 2016

Please share with your friends...
  • 1
  • 1
  •  
  •  
  • 1
  • 1
  •  
  •  
  •  
  •  
    4
    Shares
Tagged on:                                                 

9 thoughts on “How to Install WordPress on Windows Server 2016

  • 09/03/2018 at 8:58 AM
    Permalink

    Thanks for posting this! I’ve not run the entire script yet, but have a question about what is best to do when an install file is no longer available (or has been moved to an “archive” folder). I think I recall that the original posting was about May 2017. Some of the versions listed in the script are not available, or not where they were originally. Thoughts?

    Reply
    • 10/03/2018 at 2:54 PM
      Permalink

      Hi there!
      I’ve updated the instructions and script to download the latest versions of MySQL (5.7.21) and PHP (7.1.15), plus address an issue with HTTPS downloading in PowerShell. Tested on fully patched versions of Windows Server 2016 (v1607 b14393) and Windows 10 (v1709 b16299) – all good. Also removed PHP 5.5 from the instructions, as this is well out of support now.
      Hope this helps 🙂
      Chris

  • 21/03/2018 at 3:00 AM
    Permalink

    Hello,

    Thanks for posting this great tutorial. I’ve run into an issue midway through and can’t continue. Any suggestions?

    PS C:\Users\webadmin\Downloads> Set-Content $MYSQL_INIT “ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘H*****’;”

    PS C:\Users\webadmin\Downloads> Content $MYSQL_INIT “CREATE DATABASE wordpress;”
    >> Add-Content $MYSQL_INIT “CREATE USER ‘wordpress’@’localhost’ IDENTIFIED BY ‘H******’;”
    >> Add-Content $MYSQL_INIT “GRANT ALL PRIVILEGES ON wordpress.* TO ‘wordpress’@’localhost’;”

    Get-Content : A positional parameter cannot be found that accepts argument ‘CREATE DATABASE wordpress;’.
    At line:1 char:1
    + Content $MYSQL_INIT “CREATE DATABASE wordpress;”
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-Content], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommand

    Reply
  • 14/06/2018 at 12:57 AM
    Permalink

    Is there a script to start from scratch?
    I had some issues and would like to reinstall ist, but how I do it?

    Reply
  • 28/06/2018 at 5:56 AM
    Permalink

    I was having a problem with Windows recognizing the “Install-WindowsFeature” command. I finally saw where someone had said not to use PS x86 for running a different script, so I switched to PS ISE and most of the commands ran without a problem. Or at least what wasn’t being downloaded was not due to running the wrong instance of PowerShell.

    Reply
  • 09/08/2018 at 12:01 PM
    Permalink

    The following is action #3 on Page2, but is missing from the PowerShell Script that has all the commands:

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    If you don’t include it, there are file downloads that will fail (and the cause might not be obvious). I actually found this command elsewhere, and added it, which made the file downloads work. I happened to start rehearsing the process and saw it was mentioned in 3. I then checked the entire script and I don’t think it is there. If so, I missed it.

    Reply
  • 09/08/2018 at 12:07 PM
    Permalink

    The install went fine and I have a working WP site. But, I wanted a multisite site, so I went through that process, wanting sub sites that are subdirectories. The main site works fine, but the subsite does not show the site theme, nor can you get to the subsite’s Dashboard. I haven’t tracked down the answer yet, but I am thinking it may be something to do with the “rewrites”.

    Reply
  • 07/11/2018 at 3:46 AM
    Permalink

    Great walkthrough. I have been installing an internal WordPress Intranet server/site and it took me a while to get wordpress and HTTPS working with a self-signed cert. I eventually found instructions regarding exporting the server CERT in Base 64 encoded X.509 format and then adding this certificate information to the end of the \wp-includes\certificates\ca-bundle.crt file. This along with downloading the latest bundle of root certs from https://curl.haxx.se/docs/caextract.html helped fix the problem.

    I also found that I had to use the following command to configure IIS – “dism.exe /online /enable-feature /all /featurename:NetFX3 /Source:G:\sources\sxs
    Install-WindowsFeature Web-Server,Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-App-Dev,Web-CGI,Web-Health,Web-Http-Logging,Web-Log-Libraries,Web-Request-Monitor,Web-Security,Web-Filtering,Web-Performance,Web-Stat-Compression,Web-Mgmt-Tools,Web-Mgmt-Service,WAS,WAS-Process-Model,WAS-NET-Environment,WAS-Config-APIs,Net-Framework-Core -IncludeManagementTools”.

    This required including the source option and pointing to the windows DVD/CD drive and also installing NETFX3 as this seemed to be missing from my 2016 server build.

    I hope this might be of use to someone else as there aren’t many sites/articles concerning setting up worpress on IIS.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *