写完的项目如何部署上线呢?
前言:前几天的文章有写到虚拟机的安装那一块,配置了nginx,mysql,和php
(一)域名解析及ssl证书的申请
以腾讯云为例:
-
进入控制台,域名管理,解析,会进入到另外一个页面
- 添加记录
主机记录:abc
记录类型:A
线路类型:默认
记录值:服务器公网ip
其他不用改,直接解析
注:
(1)如果你在主机记录第一个框中填入了www,代表你解析的是一级域名,一级域名只能绑一个项目,也就是你上线后你的域名需要www.xxxx.com
,
(2)解析成二级域名,主机记录框随便写,例如abc,那么访问就变成了abc.xxxx.com
- 申请ssl证书(可要可不要,没有就是http连接访问,申请后配置可转换为https访问)例如:没有证书:
http://abc.xxxxx.com
加了证书之后https://abc.xxxx.com
证书的申请步骤:
(1) 控制台,云产品点进ssl证书
(2)申请免费证书
(3)等待审核,审核完后才能下载到本地
(二)xshell连接服务器,配置nginx
命令:ssh xxx@xx.xxx.xx.xxx //xxx:线上服务器用户名可修改 xx.xxx.xx.xxx:服务器公网ip
然后会弹出一个框再输入线上服务器的密码
sudo su //管理员权限
cd /
返回根目录
cd etc/nginx/sites-available/ //进入nginx下面
ls
cp default php //php是我随意定义的
vi php
laravel项目将nginx做如下配置
详细代码如下:
server {
listen 80;
server_name abc.xxxx.com;
server_tokens off;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
ssl on; //开启证书
ssl_certificate /opt/Nginx/abc.crt; //证书位置
ssl_certificate_key /opt/Nginx/abc.key; //key位置
root /var/www/abc/public;
index index.html index.htm index.php index.nginx-debian.html;
server_name abc.xxxx.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
注意:
thinkphp项目与其不同,路由那里需要重写,默认的是将
上面的这一段
location / {
try_files $uri $uri/ /index.php?$query_string;
}
改写为
#根据框架需求,配置url重写
location / {
try_files $uri $uri/ =404;
}
但是url模式不同需要重写路由,先将将URL_MODEL设置为2,然后改写为:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
注:
第二段location可以改写为:
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
配置完成之后按esc+:键输入wq
保存并退出 linux命令vi vim //打开的方式不同
注意一下,q! //强制退出
命令:nginx -t //检查配置有没有错误
service nginx restart //重启nginx服务
命令:cd /
cd var
ls
chmod -R 777 www //给权限
(三)配置线上数据库
-
新建mysql连接
然后点击ssh
- 新建数据库 名字与本地一致,然后导入sql文件,刷新就可以看见表了
(四)上传项目
- 将项目打包成zip格式
- 打开FileZilla Client软件,这个网上直接下载很方便的
- 将打包的项目拖到线上站点的/var/www/下面
- 将下载的ssl证书解压打开有一个Nginx的文件夹,打开将文件的长名字改为短名字,与之前nginx证书位置设置的名字一样,然后压缩Nginx文件夹,并拖到/opt/文件夹下面,发现传输失败
- 回到xshell给
chmod -R 777 opt
权限,然后再传输 - linux安装解压缩 命令:
apt-get install unzip
- cd 命令进入www 解压缩
unzip xxx
;然后给权限chmod -R 777 xxx
- cd命令进入opt,解压缩证书,然后删除压缩包
- cd 进入项目文件 命令:
vi .env
对env文件里面的本地数据改为线上的例如数据库等等其他环境变量;
(五)测试访问ok!!!
(六)线上线下开启自动同步:修改线下的代码让线上与之同步
点击Configuration
做如下配置
勾选自动上传
取消勾选