5

搭建项目线上环境

 2 years ago
source link: https://liluoao.github.io/posts/build-project-production-env.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

搭建项目线上环境

2022-08-24

老板给了个新的服务器,配置是:

  • CentOS 7.9 64位
  • 2核(vCPU)8 GiB

先从安装各种服务开始吧,先进入看看

ssh [email protected]
[email protected]'s password:
Welcome to Alibaba Cloud Elastic Compute Service !

先把网搞通

yum install nginx

firewall-cmd --add-port=80/tcp --zone=public --permanent
firewall-cmd --add-port=443/tcp --zone=public --permanent
firewall-cmd --add-port=3306/tcp --zone=public --permanent
firewall-cmd --reload

netstat -anp | grep 80
systemctl start nginx

在阿里云控制台里加上安全组规则:

安全组

然后把项目拉下来放好,我直接都甩 www 下了

yum install git
git clone https://e.coding.net/fftt1/shangbiaocrm/trademark_admin.git

依赖管理,用这个 Node.js 源之前试了一堆不行的。NRM 是 镜像源管理工具

wget https://registry.npmmirror.com/-/binary/node/v16.16.0/node-v16.16.0-linux-x64.tar.gz
tar -zxvf node-v16.16.0-linux-x64.tar.gz
mv node-v16.16.0-linux-x64 /usr/local/nodeJS

npm install -g [email protected]
npm install -g nrm
npm audit
# 基本都用这个源了吧
npm config set registry https://registry.npm.taobao.org

然后用 Vue Cli 打包了,默认是生成到 ./dist

npm install
npm run build:prod

把打包后的文件放在 /www/frontend/dist 下了,通过 rsync 命令移动

rsync -avzP --delete ./dist/ ../frontend/dist/
git clone https://e.coding.net/fftt1/shangbiaocrm/trademark_crm_api.git

搜了个 7.3 的安装

# 必要
yum -y install gcc gcc-c++
# 安装和启用EPEL和Remi存储库
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 管理(启用或禁用)yum存储库以及包的工具
yum -y install yum-utils
# 安装7.3
yum-config-manager --enable remi-php73
# 必要模块
yum -y install php php-mcrypt php-devel php-cli php-gd php-pear php-curl php-fpm php-mysql php-ldap php-zip php-fileinfo
# 打开fpm并开机启动
systemctl start php-fpm
systemctl enable php-fpm.service

接着装 Compoer

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer
chmod u+x /usr/bin/composer
# 基本都用这个源了吧
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

然后是 Laravel 的常规步骤

composer install -vvv
cp .env.example .env
php artisan key:generate

chmod -R 0755 /www/trademark_crm_api/storage/
chmod -R 0755 /www/trademark_crm_api/public/
chown -R nginx.nginx /www/trademark_crm_api/

# 自己去改下具体配置
vim .env

代码里用了 Redis,也装个

yum install redis
service redis start
service redis status

忘了还没装 MySQL,补一个

wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
yum -y install mysql80-community-release-el7-2.noarch.rpm
# 没加 --nogpgcheck 时报错
yum -y install mysql-community-server --nogpgcheck

这个时候还不知道它设的默认密码是啥,查一下:

grep "password" /var/log/mysqld.log

登录后改下密码,允许下远程登录的端口,之后的操作为了方便就在 DataGrip 里搞了

运行 Laravel 的迁移,运行起来后发现时间不对,要改下

cd /www/trademark_crm_api/
php artisan migrate

php -i
vim /etc/php.ini
php -r "echo date('Y-m-d H:i:s');"

还有 Laravel 的配置文件里:

app.php
'timezone' => 'Asia/Shanghai',

把 HTTPS 的证书安装好,并写入配置:

/etc/nginx/conf.d/frontend.conf
server { listen 80; server_name fs.shoptm.cn; rewrite ^(.*)$ https://$host$1 permanent; } server{ listen 443 ssl; ssl_certificate /soft/cert/fs.shoptm.cn.pem; ssl_certificate_key /soft/cert/fs.shoptm.cn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; server_name fs.shoptm.cn; root /www/frontend/dist/; index index.html; location /api { proxy_pass http://localhost:81; } location / { try_files $uri $uri/ /index.html; } }

后端项目配置,前端访问接口时在同级网址

/etc/nginx/conf.d/trademark-api.conf
server{ listen 81; root /www/trademark_crm_api/public; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/dev/shm/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } }

由于我后端项目路由都在 api.php 里,所以前端配置只需要 api

.env.production
ENV = 'production' VUE_APP_BASE_API = '/api'

Recommend

  • 133
    • www.cocoachina.com 7 years ago
    • Cache

    iOS项目——项目开发环境搭建

    iOS项目——项目开发环境搭建 四门三连· 2018-01-24...

  • 49

    线上用的k8s版本是1.6.7非常老,而且HA有问题,上个月研发想把里面的一些服务迁出来到一个新集群里,新集群的搭建是我负责的。上周开始陆陆续续的迁移过来了,但是同等limit下部分pod在测试环境上(测试环境和老环境部署是一样的,下文的...

  • 45

    是否曾想过把django项目从windows移植到Linux上运行,Linux性能众所周知,作为Django运行的服务器再合适不过啦,今天分享一下如何在线上云机器的Linux环境运行Django项目。客户端访问服务端的流程1.首先客户端请求服务资源,2.nginx作为直接对外的服务接口,接收到...

  • 12
    • 微信 mp.weixin.qq.com 5 years ago
    • Cache

    敬畏线上环境

    “对线上环境要敬畏起来, 不能随随便便地修改啊”。 听到我们要改线上环境的RPC调用的超时时间值时, Boss这样劝阻。 和同事系统运维, 针对一个超时订单处理时,引发出一些有意思的运维知识点,觉得有必要记录下来,...

  • 24
    • my.oschina.net 4 years ago
    • Cache

    线上环境 Linux 系统调用追踪

    提到如何动态追踪进程中的系统调用,相信大家第一时间都能想到 strace,它的基本用法非常简单,非常适合用来解决 “为什么这个软件无法在这台机器上运行?” 这类问题。但如果需要分析线上服务 (特别是延迟敏感型)的某些系统调用的延迟时...

  • 23

    团队开发项目环境搭建工具Rigger Mar 15, 2018 开发多年,我自己积累了一些个人认为还不错的工具、框架,今天我先介绍一个我自己开发的工具,主要用于团队多人合作开发时使用。 遇到的问题 ...

  • 7

    Flask笔记(1):环境搭建与项目结构 发表回复 完成一个Flask项目需要三个工具: – git:用于版本控制 – pip:用来安装各种...

  • 11

    项目环境搭建之CocoaPods的安装和使用 ##CocoaPods是什么? CocoaPods是iOS最常用最有名的类库管理工具了,可以帮你做三件事: 1、在正常设置配置文件后执行一行命令即可自动下载配置各种开源第三库如JSONKit

  • 1

    【Java分享客栈】从线上环境摘取了四个代码优化记录分享给大家 - 福隆苑居士 - 博客园 因为前段时间新项目已经完成目前趋于稳定,所以最近我被分配到了公司的运维组,负责维护另外一个项目,包含处理客户反馈的日常问题,以及对系统缺陷进...

  • 11
    • 1905060202.github.io 2 years ago
    • Cache

    大数据分析项目之搭建云服务器环境

    胡小宁的博客大数据分析项目之搭建云服务器环境发表于2022-09-02|更...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK