写给像我这样的新手的FTPS (FTP over SSL)教程 (Debian)

虽然WordPress已经可以不依赖FTP,但FTP作为一个简单而常用的基本服务,还是有必要写一个教程。但是呢,FTP不安全!FTP不安全!FTP不安全!重要的事情说三遍。WordPress是支持FTPS的,其他也有很多支持FTPS的客户端,其实FTP over SSL的名称有很多,FTPS (FTPES, FTP-SSL, S-FTP, FTP Secure),各种叫法,都是指的这东西,知道是一回事儿就行。

FTPS的服务器端似乎有不少,不过还是推荐大名鼎鼎的vsftpd,首先是安装。

apt-get install vsftpd

然后进行配置,我还是用vi,你们文本编辑器随意,自己习惯就好。

vi /etc/vsftpd.conf

找到以下几行,改成如下所示,有几行去掉备注就好。

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

保存并退出。然后创建FTP用户,用户名随意,这里用的ftpuser1,改成自己设定的

adduser ftpuser1

按照要求输入用户的密码,不要留空。

这个时候要设置FTP的主目录。首先更改FTP主目录所有者为root。

chown root:root /home/ftpuser

在主目录下为ftpuser1创建一个文件目录,并将该目录的所有者设置为ftpuser1

mkdir /home/ftpuser/files
chown ftpuser1:ftpuser /home/ftpuser/ftpuser1

虽然不是必须,但有些人可能会为WordPress创建一个FTP用于更新、下载插件和主题等,我以前也是这样做的。如果你是为WordPress配置FTP,需要在wp-config.php里面加如下代码,但不推荐

if( is_admin() ) {

 add_filter( 'filesystem_method', create_function( '$a', 'return "direct";' ) );

 define( 'FS_CHMOD_DIR', 0751 );

}

这时,实际上已经可以用FTP了,但是,FTP不安全!FTP不安全!FTP不安全!重要的事情再说三遍。下面为FTP设置SSL。这里默认你已经申请到了可以用的证书,具体如何申请证书改天再写一篇吧。为了方便管理证书,先创建一个放置证书的文件夹。

mkdir /etc/ssl/private/

可能有些系统上已经有这个文件夹了,那就直接下一步。创建一个证书文件,这里还是用vi。

vi /etc/ssl/private/vsftpd.pem

把申请到的证书连同CA的中间证书先后贴进去做成证书链,有些CA会给你做好打包证书,那就直接贴就行了。

然后创建私钥文件ssl.key,把申请证书用的私钥贴进去。

vi /etc/ssl/private/ssl.key

注意如果私钥是被加密过的,这里要解密,解密后命名为vsftpd.key,当然,这两个文件名都可以任意,只要后面配置的路径和文件名对就行。

openssl rsa -in /etc/ssl/private/ssl.key -out /etc/ssl/private/vsftpd.key

接下来编辑vsftpd的配置文件。

vi /etc/vsftpd.conf

在文件的最后那里找到下面这行,改成如下所示。

rsa_cert_file=/etc/ssl/private/vsftpd.pem

然后再在文件最后添加这些内容。

rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

最后重启一下vsftpd服务。

service vsftpd restart

到这里FTPS就可以用了,你可以用支持SSL的FTP客户端连接你的FTP。

而对于WordPress,如果你选择使用FTP来管理文件,接下来要做的就是去网站后台把刚才设置的FTP的地址、用户名和密码维护进去,然后就可以直接在页面上进行更新,安装插件、主题等操作了。

为网站启用HTTPS (Apache)

现在通过SSL证书加密的HTTPS网站非常流行,免费的有大名鼎鼎的Let’s encrypt,还有以前就有的StartCom,WoSign之类的,而且谷歌也更优待启用了HTTPS的网站。所以,自己的WordPress何不也弄一个SSL证书来加密呢。

本站暂时用的StartCom的证书,不过基于某个很多人都知道的原因,我准备过段时间换成Let’s encrypt试试。废话不多说,开始写教程。

首先为Apache启用SSL支持。

a2enmod ssl

重启一下服务。

service apache2 restart

为了方便管理,在Apache的配置目录下创建一个放置证书的文件夹。

mkdir /etc/apache2/ssl.crt

这里默认你已经申请到了可以用的证书,具体如何申请证书改天再写一篇吧,而且我准备改天再写一篇关于Let’s encrypt的,这里就不废话了。

在刚刚创建的文件夹下创建一个证书文件example.com.crt。我喜欢用vi命令,你们随意,任意自己习惯的文本编辑器都行。

vi /etc/apache2/ssl.crt/example.com.crt

将申请到的证书文件文本贴进去。

然后创建私钥文件example.com.key,把申请证书用的私钥贴进去。

vi /etc/apache2/ssl.crt/example.com.key

注意如果私钥是被加密过的,这里要解密,如果加密的私钥为/path/to/example.key解密运行以下命令。

openssl rsa -in /path/to/example.key -out /etc/apache2/ssl.crt/example.com.key

这还没完,还要创建一个证书链文件ca.crt。

vi /etc/apache2/ssl.crt/ca.crt

如果是Apache 2.4,建议把证书文件example.com.crt和ca.crt做成证书链文件fullchain.crt。

cd /etc/apache2/ssl.crt
cat example.com.crt ca.crt > fullchain.crt

下一步,修改Apache的网站配置文件,如果是Apache 2.4,运行以下命令。

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

找到<VirtualHost *:443>,在其中的Server Admin email:下面增加以下两行,其中example.com是你的域名。

ServerName www.example.com:443
ServerAlias example.com www.example.com

继续往下,找到以下几行,改成如下所示。

SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/fullchain.crt
SSLCertificateKeyFile /etc/apache2/ssl.crt/example.com.key

如果是Apache 2.2,运行以下命令。

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

找到<VirtualHost *:443>,在其中的Server Admin email:下面增加以下两行,其中example.com是你的域名。

ServerName www.example.com:443
ServerAlias example.com www.example.com

继续往下,找到以下几行,改成如下所示。

SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl.crt/example.com.key
SSLCertificateChainFile /etc/apache2/ssl.crt/ca.crt

启用刚刚设置好的虚拟服务器。

a2ensite default-ssl

再重载一下Apache。

service apache2 reload

好了,已经可以通过HTTP S访问你的WordPress了。如果要强制所有访问都通过HTTPS,还需要进一步设置,下次再写了。

写给像我这样的新手的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吧。

写给像我这样的新手的LAMP教程 (Debian) ——开站纪念

开站前原本想用LNMP方案的,因为以前尝试过的一键部署就是LNMP (CentOS),相对来讲对Nginx也比较熟悉一点,但这次换了Debian又想尝试一把Apache,就用了LAMP,本新手教程同样适用于Ubuntu。废话不多说,写正题,sudo不加了,不是root登录的自己加吧。

首先更新一下。

apt-get update
apt-get upgrade

然后安装Apache。

apt-get install apache2

测试一下,http://IP,看到It works!就行了。

然后安装MySQL。

apt-get install mysql-server

会让你设置root密码,强度高一点,随便设置就行。

运行这个命令进行安装之后的配置。

mysql_secure_installation

看到这个。

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

嗯,输入刚才的密码。一长串问题跟着选y就行了。

接下来安装PHP,一般用PHP5,较新的系统可以考虑PHP7.0,安装PHP5的命令如下。

apt-get install php5 php-pear php5-mysql

如果选择PHP7.0,安装命令如下,很简单的把5换成7.0就行。

apt-get install php7.0 php-pear php7.0-mysql

重启一下Apache。

service apache2 restart

就这么简单,大功告成。啥,你说我等于啥也没说?是的,后续的等下一篇再写吧。