分类
SSL 相关 Web 服务器

Apache开启重定向HTTP至HTTPS

网站启用了SSL之后,需要使用HTTPS才能加密访问,默认还是可以通过明文的HTTP访问。但只要简单设置,就可以把HTTP请求重定向至HTTPS。
Apache开启重定向HTTP至HTTPS的方法有很多种,现在比较流行的是通过Mod_Rewrite实现。
首先启用Mod_Rewrite模块。

a2enmod rewrite

一种方法是修改HTTP虚拟站点配置文件。
打开HTTP虚拟站点配置文件,默认的话,Apache 2.4是/etc/apache2/sites-available/000-default.conf,而Apache 2.2是/etc/apache2/sites-available/default,在其中写入以下代码,把其他的内容都注释掉,就行了。

<VirtualHost *:80>
 RewriteEngine on
 RewriteCond %{HTTPS} !=on [NC]
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

另一种方法是修改.htaccess文件。
首先要启用Override使.htaccess文件配置生效。
如果是Apache 2.4,修改Apache的配置文件。

vi /etc/apache2/apache2.conf

找到以下内容,修改其中的AllowOverride为All。

<Directory /var/www/>
 Options Indexes FollowSymLinks
 AllowOverride All
 Require all granted
</Directory>

如果是Apache 2.2,修改Apache的网站配置文件,这里以默认的网站配置文件为例,先修改HTTP虚拟站点的配置文件。

vi /etc/apache2/sites-available/default

找到以下内容,修改其中的AllowOverride为All。

<Directory /var/www/>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
</Directory>

再修改HTTPS虚拟站点的配置文件。

vi /etc/apache2/sites-available/default-ssl

作同样修改。

<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

之后就可以配置.htaccess文件了。
在网站根目录创建.htaccess文件,注意如果有子网站的话,子网站根目录也要创建。

vi /var/www/html/.htaccess

添加如下配置。

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTPS} !=on [NC]
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

更改.htaccess的所有者和组为www-data。

chown www-data:www-data /var/www/html/.htaccess

最后再重启一下Apache。

service apache2 restart

好了,去浏览器直接输入域名看看是不是可以自动跳转到HTTPS了。
其实,如果你是为WordPress开启重定向HTTP到HTTPS的话,还可以借助一款叫做Really Simple SSL的插件,根据提示做就行,非常方便,不过原理基本上是一样的。
最后,再说一说这两种方法的区别,第一种修改HTTP虚拟站点配置文件的方法,是针对该虚拟站点生效,访问该虚拟站点的HTTP请求都会被重定向到HTTPS。第二种修改.htaccess文件的方法,是针对.htaccess文件所在文件夹生效,访问该文件夹的HTTP请求会被重定向到HTTPS。具体还是要看需求而定,我两种方法都试过,现在比较偏向于修改HTTP虚拟站点配置。

分类
Web 服务器

写给像我这样的新手的WordPress教程 (LAMP)

上一篇那教程基本啥也没写,因为只是在Debian上装了LAMP环境,今天继续,开始配置WordPress。
在上一篇的基础上,首先是下载最新版的WordPress。

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

别跟我说你没装wget,没有的话apt-get install一下吧。
然后解压缩。

tar -xzvf latest.tar.gz

下一步先配置MySQL,需要为WordPress建一个数据库。输入下面的命令进MySQL Shell的界面,需要昨天给MySQL设置的root密码。

mysql -u root -p

输入如下命令,wpdatabase可以改成自己喜欢的名字。

CREATE DATABASE wpdatabase;

看到这样的提示就OK了。

Query OK, 1 row affected (0.00 sec)

继续输入命令,wpuser可以改成自己喜欢的名字。

CREATE USER wpuser@localhost;

提示不打了,都差不多,然后下一条命令,其中wpuser就用之前设置的名称,一致就行,dbpassword是自己设置的密码,建议自己改成复杂一点的。

SET PASSWORD FOR wpuser@localhost= PASSWORD("dbpassword");

接下来输入下一条命令,注意数据库名称、用户和密码都跟上面一致。

GRANT ALL PRIVILEGES ON wpdatabase.* TO
wpuser@localhost IDENTIFIED BY 'dbpassword';

最后刷新一下数据库配置。

FLUSH PRIVILEGES;

退出MySQL Shell。

exit

下一步开始配置WordPress。
首先拷贝配置文件到WordPress文件夹。

cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php

然后打开配置文件开始编辑。我喜欢用vi,你们爱用什么文本编辑器都可以。

vi ~/wordpress/wp-config.php

找到下面这些行,根据之前设置的MySQL数据库名称、用户和密码修改。

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

保存并退出。
然后同步所有解压好的WordPress文件到Apache的默认站点根目录,用rsync命令。啥,你没装?apt-get install一下吧。

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

进入网站目录。

cd /var/www/html

修改所有者,并且把当前用户也添加到www-data组,username是你ssh登录的用户名,如果是root就不用加了,肯定能访问。

chown www-data:www-data /var/www/* -R
usermod -a -G www-data username

如果你用的还是Apache 2.2版本,默认站点根目录是/var/www,为了WordPress可以不用FTP就能够顺利更新,建议把/var/www的权限也改下。

chown www-data:www-data /var/www/

然后再安装一下php-gd和php-xsl,如果你用的是PHP5,用以下命令安装。

apt-get install php5-gd php5-xsl

如果你用的是PHP7.0,则用以下命令安装,注意有一个包名改了,虽然php7.0-xsl目前还指向php7.0-xml,但建议输入php7.0-xml安装。

apt-get install php7.0-gd php7.0-xml

最后,把Apache默认主页改掉,不建议删除,重命名吧。

mv /var/www/html/index.html /var/www/html/index.html.orig

到这里,WordPress已经可以使用了,只要在浏览器输入你的IP或域名就可以正常访问了。接下来WordPress的网页安装超级傻瓜,就不写了。
这时候,就可以在WordPress上写东西了,而且如果权限配置没有问题的话,WordPress已经可以更新,下载插件、主题等东西了,不用依赖FTP。下次再写写如何为WordPress开启HTTPS吧。