在服务器首次部署项目 1.初始化项目资源 代码既然已经上传到 Git 仓库,接下来,我们就可以在服务器拉取最新代码了。我们准备将 /var/www 目录作为 Web 应用根目录,在该目录下通过 Git 命令从 Github 克隆项目: git clone https://github.com/ningxiaofa/online_tools.git 2.进入项目根目录,运行如下命令初始化后端依赖和前端依赖,并且编译前端资源: cd laravel-blog-code/ composer install npm install npm run prod 这里省略, 因为不需要进行前后端的资源编译工作 //应该结合自身情况而定 3.更新目录权限 由于 Nginx 默认用户名和用户组都是 www-data ,所以我们将 online_test 整个项目目录的所属用户和用户组也设置为 www-data : cd /var/www chown -R www-data:www-data online_test 这样一来,就一劳永逸的解决了 Laravel 项目目录权限的问题。// 结合自身情况而定 另外,在 public 目录下创建一个指向 storage/app/public 目录的软链 storage : php artisan storage:link 4.创建线上数据库 通过 mysql -u root -p 登录到数据库,如果连接报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
尝试运行 service mysql start 启动 MySQL 服务。 默认数据库密码为空,下面我们来设置 root 用户密码提高安全性,MySQL 5.7 设置密码的方式和之前版本有些不同,因为 mysql.user 表中没有 password 字段了:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';
将 your-password 替换成你自己的数据库密码,运行 quit 退出,然后重新连接数据库,此时就要输入密码才能连接了。进入交互式命令行后运行如下命令在数据库中新创建一个数据库 online_test :
create database blog57 default charset utf8 collate utf8_general_ci;
... 中间步骤可以结合自身情况跳过, 比如只是部署一个静态站点,就不需要上面涉及到php/mysql的操作. 重要的操作: 5.Nginx 相关配置位于 /etc/nginx 目录下,我们进入 sites-available 目录创建一个新的应用配置文件:
cd /etc/nginx/sites-available touch online_test.conf
6.通过 vi online_test.conf 命令打开该文件,输入 i 进入编辑模式,编辑文件内容如下:
server {
listen 80;
server_name codemoment.cn www.codemoment.cn; root /var/www/online_tools; index index.php index.html index.htm;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \.php$ { try_files $uri /index.php =404; fastcgi_index index.php; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.2-fpm.sock; #fixes timeouts fastcgi_read_timeout 600; include fastcgi_params; }
location ~ /\.ht { deny all; }
location /.well-known/acme-challenge/ { root /var/www/letsencrypt/; log_not_found off; }
error_log /var/log/nginx/online_tools_error.log; access_log /var/log/nginx/online_tools_access.log; }
注: 请将 server_name 配置域名修改为自己的域名。 如果你的应用目录和 PHP 版本与本教程默认值不符,也需要做相应调整。 7.编辑完成后,输入 :wq 保存并退出,然后进入上一级目录下的 site-enabled 目录创建一个指向该文件的软链:
cd ../sites-enabled/ ln -s ../sites-available/online_test.conf online_test
8.检测配置是否有误:
service nginx configtest
Note: 期间存在配置错误,重新来一遍,即上面的结果. 9.启动 Nginx、PHP-FPM //后者不用启动, 因为尚未安装PHP 至此,我们已经完成了第一次部署项目上线的所有初始化配置,最后,我们来启动 Nginx 和 PHP-FPM(已经启动的话需要重启):
service nginx start service php7.2-fpm start //暂时不用,因为是静态站点,尚未安装PHP
如果 MySQL 没有启动的话,也要启动://不必
service mysql start
10.浏览器测试站点【静态】 通过本地虚拟域名访问 至此,我们已经成功将项目部署到线上,现在可以在本地访问线上应用了,本教程中,学院君配置的域名是 blog.laravelacademy.org ,如果你没有购买过域名,或者域名还没有备案,可以通过在本地配置虚拟域名的方式访问,即在 /etc/hosts 中配置域名与线上服务器的映射: 124.70.147.157 codemoment.cn host文件: 浏览器访问: 配置不成功,原因TBD |
所有评论(0)