Synology usage series 16: Install WordPress on Diskstation


Couldn’t belive it is so simple to install wordpress on the DS207+.

Assumption:

Mysql database for wordpress ‘wordpress
Mysql database user for wordpress database ‘user_wordpress
Mysql database user password ‘12345678
Web directory is here /volume1/web
I.P. address of diskstation is 192.168.1.100

The assumption above is for illustration only. You can always define your own value. Just make sure the web directory is correct.

Here are the simple steps to get wordpress running on diskstation.

  1. Telnet/SSH to diskstation as root
  2. Install unzip command in order to decompress the wordpress package.

    # ipkg install unzip

  3. download latest wordpress package to the diskstation. I usually ssh to the shell and use wget to download to the diskstation directly


    # cd /volume1/web
    # wget http://wordpress.org/latest.zip
    # unzip latest.zip

    A directory ‘wordpress’ should be created under the web directory.

  4. Login to diskstation admin console, activate the web station and mysql database.

    Network Services > Web Services > Web Applications

    Enable web station and mysql database

    Enable web station and mysql database

  5. Setup mysql as below


    # cp /usr/syno/mysql/share/mysql/my-small.cnf /etc/my.cnf
    # /usr/syno/etc/rc.d/S21mysql.sh restart

    Once the mysql is restarted, launch the mysql linux client as below


    # /usr/syno/mysql/bin/mysql --host=localhost --user=root

    Execute following SQL statements with the mysql linux client in order to create mysql user ‘user_wordpress’, allow it to connect from the diskstation itself and from any host. In order to allow the windows mysql client gui to connect to the mysql database, it is required to allow the db user to connect from specific host or simply any host.


    mysql> use mysql;
    mysql> create user 'user_wordpress'@'localhost' identified by '12345678';
    mysql> create user 'user_wordpress'@'127.0.0.1' identified by '12345678';
    mysql> create user 'user_wordpress'@'%' identified by '12345678';

    (Replace user_wordpress to your preferred wordpress database user name. ‘12345678‘ is the password assigned to the wordpress database user ‘user_wordpress’. Strongly suggested to change it to a better password instead.)

    Once the database user ‘user_wordpress’ is created, then assign the ‘CREATE’ right for ‘user_wordpress’ the ability to create database.


    mysql> GRANT create ON *.* TO 'user_wordpress'@'%' WITH GRANT OPTION;

    (Again, replace user_wordpress to your preferred wordpress database user name.)

  6. Create the database using mysql linux client


    For non unicode database:
    mysql> create database wordpress;

    For unicode database:
    mysql> create database wordpress character set = utf8 collate = utf8_general_ci;

  7. Once the database is created, assign the correct privileges of the wordpress database user.

    I assign super user right for user_wordpress when connect to the wordpress database locally so that wordpress can install and setup the database itself.

    I also assign normal SQL rights (select, update, delete, insert) for user_wordpress when connect from remote host. This will allow me to manipulate the wordpress database using SQLyog windows client after the installation.


    # /usr/syno/mysql/bin/mysql --host=localhost --user=root
    mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'user_wordpress'@'127.0.0.1' WITH GRANT OPTION;
    mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'user_wordpress'@'localhost' WITH GRANT OPTION;
    mysql> GRANT insert, select, delete, update ON wordpress.* TO 'user_wordpress'@'%';

    (As always, replace ‘wordpress’ to your preferred database name. However, it must matching the database that you previously created by SQLyog. Also replace ‘user_wordpress’ to the actual database user that you created in previous step)

    Now the database setup is completed!.

  8. Telnet/SSH to the diskstation as root. Setup the wordpress now.


    # cd /volume1/web/wordpress
    # mv wp-config-sample.php wp-config.php

  9. Edit wp-config.php

    DB_NAME: wordpress (input the name of your wordpress database)
    DB_USER: user_wordpress (input the username of the wordpress database)
    DB_PASSWORD: 12345678 (input the password of the db username)
    DB_HOST: localhost

    For unicode database:

    DB_CHARSET: utf8
    DB_COLLATE: utf8_general_ci

  10. Open the browser, and continue the setup by browing the following URL

    http://192.168.1.100/wordpress/wp-admin/install.php

    If the database information specified in the wp-config.php is correct, the install page will be shown as below

    WordPress Setup Screen #1

    WordPress Setup Screen #1

    Input the title of your blog, the email address of the administrator, click the checkbox if you want search engine like Google crawl your blog. Click ‘Install’ to continue.

    If installation is successful, wordpress will generate an admin account with random password.

    WordPress Setup Screen #2

    WordPress Setup Screen #2

    Click ‘Login’ button to login the admin console and configure your new blog in your diskstation 🙂

    Nov 11 2011 – Blank page issue

    ** In most case, if you did follow every single steps above, you should not encountered any problem. If you still got a blank page instead of the install screen, please make sure

  11. Enable software/Plugin upgrade from admin console

    By default, the apache is executed by the ‘nobody’ account. However, we are using root account to perform the setup above. This avoid the admin console to perform any software and plugin upgrade .

    To fix this, simply change the ownership of whole wordpress directory to nobody as below.


    # chown -R nobody:nobody /volume1/web/wordpress





31 thoughts


  1. Hi,

    I have a DS212J and i have installed WordPress and myphpadmin. I can access it locally from 192.168.1.100/wordpress, however I am not able to access it on the internet.

    I scrolled up and read that someone also had this problem. I navigated to General Settings and I see that both the WordPress Address (URL) and Site Address (URL) are 192.168.1.100/wordpress.

    I do not have a domain name. When I set up DDNS Support (from DS212J’s Control Panel > Network Services > DDNS) I registered it via myds.me. I can access my diskstation fine from the internet via [my_hostname].myDS.me:5000. Is it possible to do the same and have it point to [my_hostname].myDS.me/wordpress? I’m guessing no becuase [my_hostname].myDS.me just points to my IP address. Do I have to purchase a domain to get this working?

    Sorry I’m not very familiar with this stuff.

    • You can have your wordpress being accessed like host.myDS.me/wordpress, as long as

      1. you have setup port forwarding from your broadband router to your Diskstation. (TCP port 80 of course)

      2. generally, most ISP, including the one I’m using, blocking the port 80 to avoid their broadband user hosting website. If your provider did not block the port 80, you are good to go.

      • Thanks ray for your reply.

        My ISP blocked port 80 so I am using 8888 instead. I tried accessing wordpress from my cellphone on T-Mobile’s network and when I type in host.myDS.me/wordpress in the browser, it changes to 192.168.1.100/wordpress.

        • 1. Purchase a domain would not resolve your problem.
          2. If you are using 8888, then the url of your wordpress would be [my_hostname].myDS.me:8888/wordpress

        • 3. You need to change the WordPress Address (URL) and Site Address (URL) from 192.168.1.100/wordpress to [my_hostname].myDS.me:8888/wordpress

  2. Hallo,
    my english is very bad, sorry.

    I installed wordpress on a nas (synology) and the site is perfectly accessible / visible from the web (via any service DYNDNS).

    The problem, however, are feeds, which appear in the format http://192.168.1.72/wordpress/?feed=rss2
    That is, I can not generate a URL accessible FEED / subscribed to the web as any other feeds. You to know, no way?

    Thanks in advance for the answers.

  3. How do you remove the wordpress in your url.
    I have tried to create the v host but when i go to admin pages stuff breaks

    I tried to move the index.php and .htaccess to the root of the web folder but that breaks everything also and makes the DSM manager website show up.

    Thank you for help

    Chris

Leave a Reply

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