1.应用场景

主要用于Linux下配置多个站点.

2.学习/操作

最新插入:

下面的链接能你解决疑问,这里就不整理了,仅仅作为一个记录。

参见 https://blog.csdn.net/william_n/article/details/127394863

待整理发出......  2018年04月24日 23:01:37

已经找不到当时的文档了,

这里使用Ubuntu 18.04 进行新的站点部署  【LNMP】

Nginx:

第一个站点部署 / 单站点部署

在服务器首次部署项目

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

第二个站点部署

TBD

...

第n个站点部署

TBD

Apache:

TBD

总结/感受:

TBD

后续补充

...

3.问题/补充

1.现在有一些集成软件,可以一键安装LAMP/LNMP, 支持配置多个站点. 优劣?

小皮面板(phpstudy) - 让天下没有难配的服务器环境!  //phpstudy

phpStudy Linux 面板(小皮面板)- 小皮面板(phpstudy)  //phpstudy-linux面板

宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板   //宝塔Linux面板

宝塔linux面板,一键安装LAMP/LNMP/SSL/Tomcat  //宝塔Linux页面

Linux下集成安装包尚未试用过, TBD

4.参考

TBD

后续补充

...

Logo

更多推荐