The さくらの VPS trial period ended on December 2nd. But I continue to use because I have some other things I want to challenge. Maybe I’ll pay monthly charge once or more.
I’ll write “How to install WordPress”. If you do, you must finish First VPS #1, First VPS #2 and First VPS #3 as the prerequisites, of course. First, I install a WordPress as a Wheel Group User (Mine is centos), i.e like a root user.
Note) ||SELinux and WordPress|| (See httpd_selinux(8))
- When I used an install feature such as a plugin’s on WordPress, I had “Failed to connect to FTP Server http://VPS_DomainName/”. This seems to occur because Apache Httpd cannot access the network. The solution is “httpd_can_network_connect –> on”.
$ sudo setsebool -P httpd_can_network_connect on
- When I uploaded an image via WordPress, I had “Unable to create directory wp-content/uploads/year/date. Is its parent directory writable by the server?”. At that time, the parent directory permission was 707. This trouble seems to occur because Apache Httpd cannot read/write the directory due to its context. It fixes the trouble to change the context from ‘httpd_user_content_t’ to ‘httpd_sys_rw_content_t’. But, this brought another issue to me. After the change I could not see the directory from my FTP client software.
If you don’t care about it, you don’t need to do anything else. But, I care. I sometimes back images up via FTP.
I looked for another solution. And I found it out.
I change the context not to ‘httpd_sys_rw_content_t’ but to ‘public_content_rw_t’. And I also need ‘httpd_anon_write –> on’ for uploading an image via WordPress.
$ sudo setsebool -P httpd_anon_write on
$ sudo semanage fcontext -a -t public_content_rw_t
"/path/to/wp-content/uploads(/.*)?"
$ sudo /sbin/restorecon -RF /path/to/wp-content/uploads
Ref URL: 5.6.2. Persistent Changes: semanage fcontext
This says ‘restorecon -R’ works but I needed ‘restorecon -RF’ to change the type of the directory though I don’t know why.
||How to install WordPress as a Wheel Group User||
- Log in phpMyAdmin as root.
- Create a database (something like wordpressdb) for WordPress with the collation ‘utf8_general_ci’.
- Create a user (something like wordpressuser) for WordPress with localhost and passphrase.
GRANT USAGE ON *.* TO wordpressuser@localhost IDENTIFIED BY PASSWORD ‘passphrase’;
Edit privileges. Give the user all privileges except grant about the database ‘wordpressdb’. Give no global privileges. This is important.
GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpressuser@localhost; - Log out.
——————–
- Log on the VPS as centos via SSH. After that, you are at /home/centos.
- $
mkdir tmp
$ chmod 707 tmp
The tmp folder is for download files.
- $
cd tmp
Install ‘wget’ if you don’t have it.
$ sudo yum install wget
Download WordPress and copy to the install folder.
$ wget https://wordpress.org/latest.tar.gz
$ tar xzvf latest.tar.gz
$ rsync -avP ~/tmp/wordpress/ ~/www/html/wp/
- Make the uploads folder.
$ mkdir ~/www/html/wp/wp-content/uploads
$ chmod 707 uploads
Change the context type.
$ sudo semanage fcontext -a -t public_content_rw_t
"/home/centos/www/html/wp/wp-content/uploads(/.*)?"
$ sudo /sbin/restorecon -RF /home/centos/www/html/wp/wp-content/uploads
——————–
- Access http://VPS_DomainName/wp/ by the Web browser.
- At the instillation the wp-config.php wasn’t made automatically. So I made it from the installer showing text by an editor and uploaded it to the VPS via FTP. Set the permission of wp-config.php to 404.
Otherwise, the WordPress installation normally ended.
Note) I couldn’t make the WordPress got the FTP account information automatically, so I added the followings to the wp-config.php before the line /* That’s all, stop editing! Happy blogging. */. They are for correcting the update issues.
Ref URL: WordPress Upgrade Constants
define('FTP_USER', 'username');
define('FTP_PASS', 'password');
define('FTP_HOST', 'VPS_DomainName');
My PHP is running as a DSO (Apache 2.0 Handler). After the configurations above, the environment gives me ‘centos:centos’ as the owner:group about the upgrading WordPress files but it gives ‘apache:apache’ about the media files which were uploaded from Dashboard. So, by FTP client software I cannot modify the media files though I can back them up because of the user ‘centos‘. And I can change the owner:group by ‘chown’ command via SSH.
This matter gives bigger problems when a person use a normal User. Next I’ll write an installation as a normal user.
||How to install WordPress as a normal User||
Of course you cannot do Server-side works as a normal user. It requires your login user has administrative privileges like my centos.
[Server Side]—— - Log on the VPS as centos via SSH. Make a normal user.
$ sudo adduser normuser1
$ sudo passwd normuser1
Changing password for user normuser1.
New password:
Retype new password:
$ sudo chmod 701 /home/normuser1
- Edit /etc/httpd/conf.d/userdir.conf.
$ sudo vi /etc/httpd/conf.d/userdir.conf
Ref URL: UserDir Directive - Add
UserDir enabled normuser1
after the line UserDir disabled
- Add
UserDir www/html
after the line #UserDir public_html
<Directory "/home/*/public_html">
—>> <Directory "/home/*/www/html">
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
—>> Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
- $
su - normuser1
$ mkdir www
$ cd www
$ mkdir html
Check normuser1 id’s property.
$ id -a normuser1
uid=1001(normuser1) gid=1001(normuser1) groups=1001(normuser1)
$ exit
$ sudo systemctl restart httpd.service
- $
sudo gpasswd -a sennari apache
Check normuser1 id’s property.
$ id -a normuser1
uid=1001(normuser1) gid=1001(normuser1) groups=1001(normuser1),48(apache) - Log in phpMyAdmin as root from the Web browser.
Create a database (something like normuser1db) with the collation ‘utf8_general_ci’ for WordPress.
Create a user (something like normuser1wp) for WordPress with localhost and passphrase.
GRANT USAGE ON *.* TO normuser1wp@localhost IDENTIFIED BY PASSWORD ‘passphrase’;
Edit privileges. Give the user all privileges except grant about the database ‘normuser1db’. Give no global privileges. This is important.
GRANT ALL PRIVILEGES ON normuser1db.* TO normuser1wp@localhost;
Logout.
[Client Side]—— - Access normuser1’s DocumentRoot by FTP client software.
Upload an index.html file as a test. Go and see http://VPS_DomainName/~normuser1/ for a test.
As an aside, I used a base64 encoded in-line image scheme for this index.html (^^). - Create a wp folder in the DocumentRoot by the FTP client software.
Upload all WordPress files into the wp folder via FTP. - Access http://VPS_DomainName/~normuser1/wp/ by the browser and install WordPress.
At the instillation the wp-config.php wasn’t made automatically. So I made it from the installer showing text by an editor and uploaded it to the VPS via FTP. Set the permission of wp-config.php to 404 .
Otherwise, the WordPress installation normally ended.
Note) I couldn’t make the WordPress got the FTP account information automatically, so I added the followings to the wp-config.php before the line /* That’s all, stop editing! Happy blogging. */. They are for correcting the update issues.
Ref URL: WordPress Upgrade Constants
define('FTP_USER', 'username');
define('FTP_PASS', 'password');
define('FTP_HOST', 'VPS_DomainName');
After the steps above, I upgraded WordPress 4.0 to 4.1. It successfully ended. But I could not uploaded media files in spite I had made a uploads folder with its permission 707. So, I did the followings.
- By the FTP client software, set the permission of uploads folder to 775 because apache needs full access rights to it.
- Next three I did as the user centos via SSH. Normal users cannot do them. I think this is very inconvenient when people run production sites with multiple users because two of these three I could not do until making the uploads folder.
- $
sudo chown -R normuser1:apache
/home/normuser1/www/html/wp/wp-content/uploads
- $
sudo semanage fcontext -a -t public_content_rw_t
"/home/normuser1/www/html/wp/wp-content/uploads(/.*)?"
- $
sudo restorecon -RF /home/sennari/www/html/wp/wp-content/uploads
Now I have a question. Why does WordPress use different methods about upgrades and media uploads? If it use the method of upgrades for media file uploads, the troubles probably do not occur. Though I don’t realize as I don’t know much about PHP, does the same method for both make something wrong?
Anyway, I’ll try suEXEC Support.