LAMP (Linux + Apache + MySQL/MariaDB + PHP/Python/Perl) 是经典的Web应用部署架构。以下是完整的部署流程:
# Ubuntu/Debian
sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql
# CentOS/RHEL
sudo yum install httpd mariadb-server mariadb php php-mysqlnd
sudo systemctl start httpd mariadb
sudo systemctl enable httpd mariadb
# Ubuntu/Debian
sudo ufw allow 'Apache Full'
# CentOS/RHEL
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# 安全配置MySQL
sudo mysql_secure_installation
# 创建应用数据库和用户
mysql -u root -p
CREATE DATABASE appdb;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 通常放在/var/www/html/或创建虚拟主机
sudo mkdir -p /var/www/yourapp
sudo chown -R $USER:$USER /var/www/yourapp
# 上传代码到此目录
sudo nano /etc/apache2/sites-available/yourapp.conf
示例配置:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/yourapp
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/yourapp>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
启用配置:
sudo a2ensite yourapp.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
sudo chown -R www-data:www-data /var/www/yourapp
sudo find /var/www/yourapp -type d -exec chmod 755 {} \;
sudo find /var/www/yourapp -type f -exec chmod 644 {} \;
编辑应用配置文件(如config.php):
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'appuser');
define('DB_PASS', 'password');
define('DB_NAME', 'appdb');
?>
# 使用Let's Encrypt
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com
sudo nano /etc/apache2/apache2.conf
找到<Directory /var/www/>
部分,确保有:
Options -Indexes
sudo a2enmod cache
sudo a2enmod expires
sudo a2enmod headers
sudo apt install php-opcache
sudo nano /etc/php/7.x/apache2/php.ini
找到并修改:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
tail -f /var/log/apache2/error.log
403 Forbidden错误:
sudo setenforce 0
(临时禁用)数据库连接失败:
bind-address = 127.0.0.1
PHP文件被下载而非执行:
sudo apt install libapache2-mod-php
sudo systemctl restart apache2
URL重写无效:
sudo a2enmod rewrite
通过以上步骤,您的应用应该已成功部署在LAMP环境中。根据具体应用需求,可能还需要安装额外的PHP扩展或进行其他定制配置。