部署Web应用程序到Linux服务器是一个常见的任务,下面我将提供一个详细的步骤指南。
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl wget unzip
# CentOS/RHEL
sudo yum update -y
sudo yum install -y git curl wget unzip
# Ubuntu/Debian
sudo apt install -y nginx
# CentOS/RHEL
sudo yum install -y epel-release
sudo yum install -y nginx
# Ubuntu/Debian
sudo apt install -y apache2
# CentOS/RHEL
sudo yum install -y httpd
# Ubuntu/Debian
sudo apt install -y mysql-server
# CentOS/RHEL
sudo yum install -y mysql-server
# Ubuntu/Debian
sudo apt install -y postgresql postgresql-contrib
# CentOS/RHEL
sudo yum install -y postgresql-server postgresql-contrib
# 使用NodeSource仓库
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
# Ubuntu/Debian
sudo apt install -y python3 python3-pip python3-venv
# CentOS/RHEL
sudo yum install -y python3 python3-pip
# Ubuntu/Debian
sudo apt install -y php-fpm php-mysql
# CentOS/RHEL
sudo yum install -y php php-mysqlnd
# 从Git仓库克隆
git clone https://github.com/yourusername/your-app.git
cd your-app
# 或者上传代码包
# scp your-app.zip user@your-server:/path/to/destination
根据应用程序类型:
npm install
npm run build # 如果是需要构建的应用
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 创建.env文件或设置系统环境变量
echo "DATABASE_URL=mysql://user:password@localhost/dbname" > .env
sudo nano /etc/nginx/sites-available/your-app
添加以下内容(根据应用类型调整):
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000; # Node.js应用
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
# 静态文件服务
location /static/ {
alias /path/to/your/app/static/;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled
sudo nginx -t # 测试配置
sudo systemctl restart nginx
npm install -g pm2
pm2 start npm --name "your-app" -- start
pm2 save
pm2 startup
sudo nano /etc/systemd/system/your-app.service
示例配置:
[Unit]
Description=Your App Service
After=network.target
[Service]
User=www-data
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/node /path/to/your/app/index.js
Restart=always
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl start your-app
sudo systemctl enable your-app
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
# 设置自动续订
sudo certbot renew --dry-run
# Nginx日志
tail -f /var/log/nginx/error.log
# 应用日志
journalctl -u your-app -f
# 安装htop
sudo apt install -y htop
# 使用
htop
考虑使用CI/CD工具如GitHub Actions、Jenkins或GitLab CI来自动化部署过程。
netstat -tulnp
检查占用端口的进程希望这个指南能帮助您成功在Linux上部署Web应用程序!根据您的具体应用类型,可能需要调整某些步骤。