PHP-将Laravel部署到服务器

Laravel 是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)

前言

完成 CentOS-服务器初始化配置
申请 SSL 证书

部署

git 安装

yum install git

composer 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 下载 composer.phar
wget https://getcomposer.org/composer.phar
#curl -sS https://getcomposer.org/installer | php

# 移动 composer 命令至可执行程序目录
mv composer.phar /usr/local/bin/composer

# 修改 composer 命令权限
chmod a+x /usr/local/bin/composer

# 设置 composer 代理
composer config -g repo.packagist composer https://packagist.phpcomposer.com

# 清理 composer 缓存
composer clearcache

部署站点

1
2
3
4
5
6
7
# 添加站点用户
useradd -s /sbin/nologin -g nginx mingo
usermod -s /bin/bash mingo

# 添加站点目录
mkdir -p /var/www/mingo
chown mingo:nginx /var/www/mingo

参考 CentOS-服务器初始化配置 完成 mingo 用户的 ssh 配置

1
2
su - mingo
#...

将 Jenkins 公钥添加至 mingo 公钥认证文件中

添加当前服务器至 Jenkins 构建

  1. 打开 Jenkins 系统管理,在系统设置中添加 [Publish over SSH]

  2. 打开 Jenkins 相应的构建任务设置中添加 [构建后操作 - Send build artifacts over SSH]

  3. 点击构建任务完成构建

添加 php-fpm 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[mingo-api]
user = mingo
group = nginx
listen = /var/run/mingo-api_php-fpm.sock
listen.owner = mingo
listen.group = nginx
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 200
pm.start_servers = 120
pm.min_spare_servers = 100
pm.max_spare_servers = 200
slowlog = /var/log/php-fpm/mingo-api-slow.log
php_admin_value[error_log] = /var/log/php-fpm/mingo-api-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache

重启 php-fpm 服务
systemctl restart php-fpm

上传 SSL 证书,添加 nginx 配置

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
28
29
30
31
32
33
34
35
36
37
38
server {
listen 80;
listen [::]:80;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/1_api.mingo.com_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/2_api.mingo.com.key;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
server_name blog.mingo.com;
root /var/www/mingo/public;
access_log /var/log/nginx/mingo-api_access.log main;
error_log /var/log/nginx/mingo-api_error.log;
index index.php index.html index.htm;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/mingo-api_php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht|/\.git {
deny all;
}
}

重启 nginx 服务
systemctl restart nginx

  • PS: 以上配置基于单个请求 PHP-FPM 占用 30M/进程,nginx 占用内存相对于 PHP-FPM 忽略不计,预留 1G 内存计算。 7G * 1024M / 30M = 238 月等于 200 个进程
您的支持将鼓励我继续创作