从购买服务器到项目部署全流程
分布式文件上传服务器
原博客链接:http://www.bestwyy.xyz/fuwuqi/bushu.html
从购买服务器到项目部署全流程
注:此篇大致摘自上上级学长levi 经历相似并防止自身之后遗忘,写下此篇。
前期准备
- 💰 当然是用来买服务器啊
- Termius ✅ 「MacOS软件-用于连接到服务器」/目前在用bitvise
- Navicat Premium ✅ 「全平台软件-用于连接数据库」
- Visual Studio Code ✅ 「全平台软件-yyds」
- 完成的前端项目「vue」
- 完成的后端项目「JFinal」
购买服务器
配置服务器
服务器整到手后先配置远程连接的密码,然后用「Termius」连上服务器,开始进行配置 安装nginx反代工具
sudo apt-get install nginx # 安装nginx
nginx的基本操作
/etc/init.d/nginx start #启动
/etc/init.d/nginx reload #重启
/etc/init.d/nginx stop #停止
sudo service nginx start # 启动
sudo service nginx reload # 重载
sudo service nginx restart # 重启
sudo service nginx stop # 停止
sudo /usr/local/nginx/sbin/nginx -v # 查看版本
sudo /usr/local/nginx/sbin/nginx # 启动
sudo /usr/local/nginx/sbin/nginx -s stop # 停止
sudo /usr/local/nginx/sbin/nginx -s reload # 重启
由于这次配置的是基于vue的单页面应用,所以要对nginx进行配置修改
在本地新建一个 eta_vue.conf 文件,写入以下内容
server {
#服务启动时监听的端口
listen 80 default_server;
listen [::]:80 default_server;
#服务启动时文件加载的路径
root /var/www/html/eta_vue;
#默认加载的第一个文件
index index.php index.html index.htm index.nginx-debian.html;
#页面访问域名,如果没有域名也可以填写_
server_name www.632891553.xyz;
location / {
#页面加载失败后所跳转的页面
try_files $uri /index.html;
}
#以下配置只服务于php
# 将PHP脚本传递给在127.0.0.1:9000上监听的FastCGI服务器
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php7.0-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
# 如果Apache的文档为root,则拒绝访问.htaccess文件
location ~ /\.ht {
deny all;
}
}
通过「Termius」的SFTP将上面的文件放入服务器的 /etc/nginx/conf.d
路径下
并将 /etc/nginx
下的 nginx.conf 文件中最后一行的默认配置注释掉(如下图)
修改完成后重启一次nginx
将打包好的前端项目放入 /var/www/html/eta_vue
文件夹下
进入浏览器,地址栏输入服务器ip,能看到前端页面就算配置好了
安装数据库
数据库安装很方便只,需要以下几条命令
sudo apt-get install mysql-server
apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
安装好后用下面的命令来初始化安全设置
mysql_secure_installation
会询问是否执行以下几步操作,为了方便之后数据库管理,先选择开放远程登陆许可
为root用户设置密码
删除匿名账号「是」
取消root用户远程登录 「否」
删除test库和对test库的访问权限 「是」
刷新授权表使修改生效 「是」
连接数据库
连接数据库前要先检查下3306端口是否可用 附上教程(opens new window)
教程中一些关于「vim」的操作可用参考我的另一篇指南 Vim 基础
端口开启后千万要记得去控制台开启3306端口!!
远程mysql出现10061_MySQL远程连接时出现10061错误时的解决方法
需要修改MySQL的某个配置文件的配置代码,即my.ini文件中的“bind-address = . . . .”,将“. . . .”修改为“0.0.0.0”,于是乎,操作之。利用“locate”命令,并没有发现my.ini文件,继续了解,此属性配置在一个名为“my.cnf”的文件中。 (现在阿里云和腾讯云都存在conf.d和mysql.conf.d中的四个文件里,我在mysql.conf.d中的mysqld.conf里) 修改后保存,然后执行重启命令:
service mysql restart
但报错代码为1698,大部分1000+报错都可以用新建用户解决:
#创建用户
mysql> CREATE USER 'name'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
#赋权
mysql> GRANT ALL PRIVILEGES ON *.* TO 'name'@'%' WITH GRANT OPTION;
flush privileges;// 刷新权限,使其生效。
mysql> exit;
service mysql restart //重启MySQL服务
注意:MySQL8.0以上密码策略限制必须要大小写加数字特殊符号!
执行上述命令后,再次进行远程连接,便连接成功。
记得用户名密码用新建的。
后记,用新用户连接是匹夫行为,还得改root。
1、登录Mysql
sudo mysql -u root -p
2、查看user表(错误发生的原因就是root的plugin设置错误)
select user, plugin from mysql.user;
3、修改root的plugin为自己的密码
update mysql.user set authentication_string=PASSWORD('your passwd'), plugin='mysql_native_password' where user='root';
4、刷新
flush privileges;
5、把后端resource中config.properties下的连接数据库密码也修改为步骤3的密码(如果一致请忽略)
部署后端
首先利用 apt-get
指令快速安装好 jdk1.8
apt-cache search java8
结果中列出了安装包库中存在的包,选一个你想安装的版本。
我们这里选的是第一个:openjdk-8-jdk 安装命令:
sudo apt-get install openjdk-8-jdk
然后把打包好的后端项目(maven直接package就行)上传至服务器的任意目录下(理论上)
解压文件
cd /home/cxxy/(你的目录)
tar -zxvf ETA6-release.tar.gz
修改解压出来的文件里的数据库配置、undertow端口号
启动项目
cd /home/cxxy/ETA6(解压后的目录)
./start.sh start
关闭项目「重新部署前建议先关闭」
cd /home/cxxy/ETA6
./stop.sh stop
解决跨域
作为前后端分离项目,跨域问题必须克服
首先修改后端项目运行的端口「默认的80端已经被nginx占用了」
服务器 /home/cxxy/ETA6
目录下,修改 undertow.txt