阿里云ECS下Laravel配置和迁移
选择系统镜像
我们使用镜像系统里的LNMP环境,我这里搭建是的Laravel5.7版本,对应的环境要求如下:
PHP >= 7.1.3
PHP OpenSSL 扩展
PHP PDO 扩展
PHP Mbstring 扩展
PHP Tokenizer 扩展
PHP XML 扩展
PHP Ctype 扩展
PHP JSON 扩展
绑定**对
使用SSH**对连接Linux实例
阿里还是很贴心的,各种使用技巧,这里不再赘述。
SSH连接ECS
sudo ssh -i ~/pem/hackathon.pem [email protected]你的ECS的公网IP
mac下好像要用sudo命令才能连接。
如果你是像我一样重新初始化ECS然后绑定**对,那么你需要先清除本地的缓存。
因为如果本地访问过该服务器,会把该服务器登录标识证书记录下来,下次登录时会去比对之前的记录,由于系统重装标识变了导致不能继续登录。
具体命令如下:
ssh-****** -R 你的ECS的公网IP
修改Mariadb密码
开始之前,先停止数据库服务并检查服务状态,我们应该可以看到先前设置的环境变量:
# systemctl stop mariadb
接下来,用 --skip-grant-tables 选项启动服务:
# systemctl set-environment MYSQLD_OPTS="–skip-grant-tables"
# systemctl start mariadb
# systemctl status mariadb
使用 skip tables 启动 MySQL/MariaDB
这可以让你不用 root 密码就能连接到数据库(你也许需要切换到另外一个终端上):
# mysql -u root
接下来,按照下面列出的步骤来。
MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD(‘YourNewPasswordHere’) WHERE User=‘root’ AND Host = ‘localhost’;
MariaDB [(none)]> FLUSH PRIVILEGES;
最后,停止服务,取消环境变量设置并再次启动服务:
# systemctl stop mariadb
# systemctl unset-environment MYSQLD_OPTS
# systemctl start mariadb
这可以让先前的改变生效,允许你使用新的密码连接到数据库。
我尝试了不同博客的方法,可能是环境问题,直到使用了当前的方法才成功,这部分内容来自:转载链接
全局安装安装Composer并使用镜像
安装Composer
你可以将此文件放在任何地方。如果你把它放在系统的 PATH 目录中,你就能在全局访问它。 在类Unix系统中,你甚至可以在使用时不加 php 前缀。
你可以执行这些命令让 composer 在你的系统中进行全局调用:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
注意: 如果上诉命令因为权限执行失败, 请使用 sudo 再次尝试运行 mv 那行命令。
这部分内容来自Composer官网:Composer简介
修改 composer 的全局配置文件(推荐方式)
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
配置PHP.ini
为了支持Composer的安装功能,我们需要开启一些php的函数
sudo vim /etc/php.ini
然后使用vim的搜索功能:
/disable_functions
按下s进入编辑模式
删去“proc_open,proc_get_status”和“symlink”
编辑前:
disable_functions = passthru,system,chroot,chgrp,chown,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket
编辑后:
disable_functions = passthru,system,chroot,chgrp,chown,ini_alter,ini_restore,dl,openlog,syslog,readlink,popepassthru,stream_socket_server,fsocket
将本地Laravel迁移到服务器上
首先切换到nginx服务器根目录下:
cd /home/wwwroot
然后使用git克隆项目:
git clone 项目地址
进入项目根目录:
cd 项目目录
使用Composer install命令安装依赖:
# composer install
创建配置文件
vim .env
配置文件具体参考本地的.env.example文件
更新key:
php artisan key:generate
删除从本地克隆过来的软链接:
rm -rf public/storage
重新创建软链接:
php artisan storage:link
设置读写权限:
chmod -R a+w storage
chmod -R a+w bootstrap/cache
修改nginx配置文件
进入配置文件目录:
cd /etc/nginx/conf.d
创建配置文件(以.conf为文件后缀名,建议使用项目名称):
vim nginx-projectName.conf
配置文件参考(记得把文件中两处projectName替换成你的项目目录名称):
server {
listen 80;
root /home/wwwroot/projectName/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PHP_VALUE "open_basedir=/home/wwwroot/task:/tmp/:/proc/";
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
#error_page 404 /index.php;
location ~ /\.(?!well-known).* {
deny all;
}
}
这里注意"fastcgi_param PHP_VALUE open_basedir=/home/wwwroot/projectName:/tmp/:/proc/";
必须在“include fastcgi_params;”后面,否则会无效。
修改php配置使其占用9000端口:
cd /etc/php-fpm.d/
vim php-index.conf
将里面的配置:
listen = xxx
改为:
listen = 9000
重启php-fpm服务:
systemclt restart php-fpm
大功告成!边配置边写文章花了快2个小时,从远古的记忆里整理这篇小文章,说明及时记录解决问题的方法很重要(即使这不是什么硬核的知识),毕竟配置久了容易忘,下回按着这篇文章就会快多了。