阿里云 Ubuntu + Nginx + PHP + MySQL
最近在阿里云上配置服务器,踩了不少坑,记录一下,希望能帮助到有同样需求的朋友们。 整个配置过程基本上是按照下面这篇帖子进行的,写的非常清楚,按照步骤一步一步来就行了。
Installing Nginx, MySQL, PHP (LEMP) Stack on Ubuntu 18.04 (opens new window)
在此之后还可以继续配置 phpMyAdmin ,以及用 Let's Encrypt 配置 SSL Cert 也就是 Https,是免费的哦~
对应链接如下:
Installing phpMyAdmin for Nginx on Ubuntu 18.04 / 19.10 (opens new window)
Configuring Let’s Encrypt SSL Cert for Nginx on Ubuntu 18.04 / 19.10 (opens new window)
一切基本都很顺利。
下面是基于阿里云的一些配置和我遇到的一些问题:
# 阿里云安全组配置
阿里云的ECS需要对安全组进行端口配置才能允许相应的端口访问,具体操作如下:
- 进入ECS实例,在“更多”里选择“网络和安全组 -> 安全组配置 -> 配置规则”
- “添加安全组规则” 添加三条规则,端口分别添加 “80”(Http端口),“443”(Https端口),“20/21”(FTP传输端口),授权对象均为“0.0.0.0/0”
# 阿里云云解析
你的域名想要与ECS上的IP地址对应,需要在云解析里对域名进行解析。
- 进入阿里云云解析DNS
- “解析设置” -> “添加记录”
- “主机记录”填你的域名,或者子域名,“记录类型”选A,“记录值”填ECS的IP地址。需要几个域名或子域名则添加几条记录
# Lumen/Laravel 的配置
我的项目用的是Lumen写的API,所以在配置Nginx的时候和通用PHP的配置有一些不同。
文件目录是/etc/nginx/sites-available/mydomain.com
- root 的文件目录要在项目后加上
/public
,因为 Lumen/Laravel 的index.php
是在/public
里的。 如:root /var/www/mydomain.com/public
- 第一个 location
location / {
try_files $uri $uri/ /index.php?$query_string;
}
2
3
- 第二个 location
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
2
3
4
5
6
7
8
# 使用不同版本的 PHP 项目
有的旧项目使用的是 PHP5.6 版本,按之前的流程,服务器上装的是 PHP7.2 版。因此需要为旧项目再安装 PHP5.6 以保证旧项目可以继续运行。
sudo apt-get update
sudo add-apt-repository ppa:ondrej/php
sudo apt-get install php5.6-fpm pdo-mysql php5.6-mysql php5.6-mbstring php5.6-curl php5.6-xml php5.6-bcmath php5.6-json
2
3
然后再把旧项目的 Nginx 配置文件中的 php7.2-fpm.sock 改成 php5.6-fpm.sock 就可以了
最后记得更改 Nginx 配置文件之后要重启 Nginx 服务器 sudo service nginx restart