前天帮人配了台机器,未来可能还要帮人配。在学会用 Docker 之前,先写一篇记录下怎么搭建环境吧。
这篇收费!¥4.99,请阅后自觉打钱。
Ubuntu 16.04
这个没啥好说的,直接在阿里云那里选公共镜像。
登录后,先升级。
apt-get update
apt-get upgrade
然后创建ssh key,并且添加自己的 key 到 ~/.ssh/authorized_keys。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
然后关闭密码登录,修改 /etc/ssh/sshd_config,然后 service ssh restart 重启 SSH
ChallengeResponseAuthentication no
PasswordAuthentication no
这里我认为修改端口号没啥意义,因为很容易被扫出来,还不如直接关掉。
安装 PHP 7.1
需要先添加 PHP 的源,然后更新,然后安装 PHP。后面几个包都是 WordPress 需要的。
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install php
apt install php7.2-opcache
apt install php-apcu
apt install php-fpm
apt install php-xml
apt install php-mysql
apt install php-mcrypt
apt install php-mbstring
apt install php-gd
apt install php-curl
apt install php-zip
这个源会自动更新,所以现在执行 apt install php
直接安装的就是 7.2 版本,对于我这种喜欢追新的人当然好。如果你想装特定版本,可以加上版本号。某些模块会有针对的版本,也请大家在安装时甄别。
安装完成后,可以试运行一下。然后启动 php-fpm 服务:
php -v
service php7.2-fpm start
安装 MySQL 5.7
MySQL 也需要配置新源。选对了新源,对后面的配置很有帮助,至少,这次我就没再遇到系统表和 5.7 版本不匹配的问题。
首先去这个页面下载官方配置。
点击 “Download” 按钮,鬼 Oracle 非要登录,那就登录,然后才得到真实地址,目前是 0.8.2-1 版本,这里是链接
下载之后,将源信息导入系统,然后更新,再接着就可以安装了:
dpkg -i mysql-apt-config_w.x.y-z_all.deb
apt-get update
apt-get install mysql-server
安装完成之后,执行 mysql -uroot -p,输入刚才设置的密码,进入 MySQL,创建用户名和数据库:
create database `wordpress`;
create user 'meathill'@'localhost' identified by '123456';
grant all on wordpress.* to 'meathill'@'localhost';
然后可以登陆新建的账号测试一下,理论上没问题。接下来执行 mysql_secure_installation 提升一下安全性。按照提示一步一步搞即可。
安装 MySQL 8
安装 MySQL 8 的方式和之前基本一样。不过 MySQL 8 的密码生成方式与之前不同,所以如果直接使用上面的方式生成密码,使用 MySQL 连接没问题,但使用其它 client 连接都会失败。
可以参考 WordPress + MySQL 8 这篇文章来解决。
安装 Nginx 1.10.0
我对 nginx 没有版本需求,所以直接 apt-get install nginx 即可。阿里云公共镜像的源指向 1.10.0 版本。不同版本的默认配置不同,这点需要注意,也是我们配置服务器时最可能踩中的坑,搜索时一定要注意版本号和年代。
如果想安装最新版(我这个时候是 1.14.0),需要先把源添加进来
sudo add-apt-repository ppa:nginx/stable # 这里 stable 可以替换为 development/nightly 之类
sudo apt update
sudo apt install nginx
安装完成之后,
service nginx start
即可启动。启动之前,最好 nginx -t 检查一下配置文件。
此时我们多半都要配置服务器,随着版本提升,其实越来越好配了。复制 /etc/nginx/site-available/default
为 /etc/ngingx/site-available/my-site
,然后编辑它。
如果是 1.14.0,则复制 /etc/nginx/conf.d/default.conf
为 /etc/nginx/conf.d/my-site.conf
。这个版本里 nginx 取消了之前 site-avaisable 和 site-enabled 的设置。
server {
root /mnt/www/html;
# 要执行 php,所以添加 index.php
index index.php index.html ....;
# _ 表示默认域名,阿里云用未备案的域名会有问题
server_name _;
location / {
# 这里要做好重定向,未直接命中的 URI 都交给 index.php 处理
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
# v.1.10 这个很重要,关于 PHP 的配置都在里面
include snippets/fastcgi-php.conf;
# v.1.14 改成了这些
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 然后就是 php-fpm 的通信端口
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
}
如果 fastcgi_pass
没配置好,很可能遭遇 “File not found”问题。
保存修改,然后
ln -s /etc/nginx/site-available/my-site /etc/nginx/site-enabled/my-site
nginx -t
service nginx restart
如果正常,则大功告成。
参考
Connecting to GitHub with SSH
A Quick Guide to Using the MySQL APT Repository
欢迎吐槽,共同进步