Nginx 服务器部署 php 项目

示例的服务器操作系统为 ubuntu

默认的网站根目录 /var/www/html,可以把项目拷贝到该目录下,也可在/var/www目录下建立目录。我们把项目放在 /var/www/目录下: /var/www/project_name.

然后将 Nginx 的用户名和用户组 www-data 分配给它:

1
2
3
4
5
#进入 /var/www 目录
cd /var/www

#分配用户名和用户组
chown -R www-data:www-data project_name

配置 Nginx:

nginx 的默认配置位于 /etc/nginx/sites-available/default

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;

# 网站根目录,根据实际情况修改
root /var/www/project_name;

# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;

server_name _;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}
}

如果配置一个站点,简单配置如上即可。

Nginx 配置多站点:

1、建立多个项目:

/var/www/project1
/var/www/project2

2、在 /etc/nginx/sites-available/ 目录下新建配置 project1(或拷贝default,重命名为 project1):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server{
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

#网站域名,根据自己的域名修改,如果只是本机用来开发测试,可自定义
server_name www.project1.com;

#项目目录地址
root /var/www/project1;
index index.html index.php;

location / {
try_files $uri $uri/ = 404;

}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}

project2 配置类似 project1 ,修改相应的域名、项目目录即可。

3、建立 /etc/nginx/sites-available//etc/nginx/sites-enable 的软连接

1
2
3
4
cd  /etc/nginx/sites-available

ln -s project1 /etc/nginx/sites-enable
ln -s project2 /etc/nginx/sites-enable

/etc/nginx/sites-enable 文件夹中的配置为当前可用的配置

4、修改 hosts

1
vi /etc/hosts

hosts 文件中添加:

1
2
127.0.0.1  www.project1.com
127.0.0.1 www.project2.com

保存。

5、重启 Nginx

1
service nginx restart

在浏览器中访问 www.project1.comwww.project2.com 测试是否配置成功。

Ubuntu 服务器配置 LEMP 环境

1、准备

更新、安装下载源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Update Package List
apt update

# Update System Packages
apt -y upgrade

# Install Some PPAs

apt install -y software-properties-common curl

apt-add-repository ppa:chris-lea/redis-server -y
apt-add-repository ppa:ondrej/php -y

# Update Package Lists
apt update

2、安装 Nginx

2.1 安装

1
apt install  nginx

2.2 配置

2.2.1 在 /etc/nginx/nginx.conf 文件的第一行查看 Nginx 用户:
1
vi /etc/nginx/nginx.conf
2.2.2 修改用户和组

PHP7 默认的用户和组是 www-data;
如果 Nginx 的用户名也是 www-data, 则不用修改;
否则,修改为 www-data.

2.2.3 重启 Nginx
1
service nginx restart

3、安装 Mysql

1
apt install mysql-server php7.4-mysql 

安装过程中有提示设置 root 密码。

4、安装 php

4.1 安装 php

1
apt install php7.4-fpm php7.4-cli php7.4-dev

安装 php 扩展

根据需要添加 php 扩展

1
2
3
4
5
6
7
apt install php7.4-gd  php7.4-curl  php7.4-memcached  php7.4-imap php7.4-mbstring php7.4-xml

#安装 redis
apt install redis-server

sudo apt install php-libsodium
sudo apt install php7.3-mcrypt //暂时没有

查看安装的 php 扩展

1
php -m

4.2 配置 php

打开 php.ini 配置文件:

1
vi /etc/php/7.4/fpm/php.ini

如下改动有待商榷???

找到 cgi.fix_pathinfo 选项,去掉注释,然后将指设置为0:

1
cgi.fix_pathinfo = 0;

https://www.php.net/manual/zh/install.unix.nginx.php

https://www.yuque.com/crazyzard/gp4crq/iecwo1

重启 php7.4-fpm:

1
service php7.4-fpm restart

php 版本切换

1
update-alternatives --config php

参考:

settler/amd64.sh at master · laravel/settler (github.com)

https://learnku.com/articles/44900