{"id":1036,"date":"2025-06-12T11:09:48","date_gmt":"2025-06-12T03:09:48","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1036.html"},"modified":"2025-06-12T11:09:48","modified_gmt":"2025-06-12T03:09:48","slug":"%e5%a6%82%e4%bd%95%e5%b0%86symfony%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%e5%88%b0ubuntu%e6%9c%8d%e5%8a%a1%e5%99%a8%e4%b8%8a","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1036.html","title":{"rendered":"\u5982\u4f55\u5c06Symfony\u5e94\u7528\u90e8\u7f72\u5230Ubuntu\u670d\u52a1\u5668\u4e0a"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#23558;Symfony&#24212;&#29992;&#37096;&#32626;&#21040;Ubuntu&#26381;&#21153;&#22120;&#19978;&#26159;&#19968;&#20010;&#30456;&#23545;&#22797;&#26434;&#30340;&#36807;&#31243;&#65292;&#20294;&#20197;&#19979;&#26159;&#19968;&#20123;&#22522;&#26412;&#30340;&#27493;&#39588;&#21644;&#24314;&#35758;&#65306;<\/p>\n<h3>1. &#30830;&#20445;&#20320;&#30340;&#31995;&#32479;&#26159;&#26368;&#26032;&#30340;<\/h3>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h3>2. &#23433;&#35013;&#24517;&#35201;&#30340;&#36719;&#20214;&#21253;<\/h3>\n<pre><code class=\"language-bash\">sudo apt install apache2 php php-mysql git unzip curl -y<\/code><\/pre>\n<h3>3. &#37197;&#32622;Apache2<\/h3>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/code><\/pre>\n<p>&#25214;&#21040; <code>&lt;VirtualHost *:80&gt;<\/code> &#22359;&#65292;&#24182;&#28155;&#21152;&#20197;&#19979;&#37197;&#32622;&#65306;<\/p>\n<pre><code class=\"language-apache\">&lt;VirtualHost *:80&gt;\n    ServerAdmin webmaster@localhost\n    DocumentRoot \/var\/www\/html\/symfony_app\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n<p>&#20445;&#23384;&#24182;&#36864;&#20986;&#32534;&#36753;&#22120;&#12290;<\/p>\n<h3>4. &#21019;&#24314;Symfony&#39033;&#30446;<\/h3>\n<p>&#22914;&#26524;&#20320;&#36824;&#27809;&#26377;&#21019;&#24314;Symfony&#39033;&#30446;&#65292;&#21487;&#20197;&#20351;&#29992;Composer&#26469;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">cd \/var\/www\/html\/\ncomposer create-project symfony\/skeleton my_symfony_app --prefer-dist<\/code><\/pre>\n<h3>5. &#37197;&#32622;MySQL&#25968;&#25454;&#24211;<\/h3>\n<pre><code class=\"language-bash\">sudo mysql_secure_installation<\/code><\/pre>\n<p>&#25353;&#29031;&#25552;&#31034;&#36827;&#34892;&#25805;&#20316;&#65292;&#35774;&#32622;root&#23494;&#30721;&#21644;&#20854;&#20182;&#23433;&#20840;&#36873;&#39033;&#12290;<\/p>\n<h3>6. &#36816;&#34892;&#25968;&#25454;&#24211;&#36801;&#31227;<\/h3>\n<p>&#36827;&#20837;&#39033;&#30446;&#30446;&#24405;&#24182;&#36816;&#34892;&#36801;&#31227;&#21629;&#20196;&#65306;<\/p>\n<pre><code class=\"language-bash\">cd \/var\/www\/html\/my_symfony_app\nphp bin\/console doctrine:migrations:migrate<\/code><\/pre>\n<h3>7. &#21551;&#21160;Nginx&#65288;&#21487;&#36873;&#65289;<\/h3>\n<p>&#22914;&#26524;&#38656;&#35201;&#20351;&#29992;Nginx&#20316;&#20026;&#21453;&#21521;&#20195;&#29702;&#65292;&#21487;&#20197;&#23433;&#35013;&#24182;&#37197;&#32622;&#23427;&#65306;<\/p>\n<pre><code class=\"language-bash\">sudo apt install nginx -y\nsudo nano \/etc\/nginx\/sites-available\/default<\/code><\/pre>\n<p>&#28155;&#21152;&#20197;&#19979;&#37197;&#32622;&#65306;<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name your_domain.com;\n\n    root \/var\/www\/html\/my_symfony_app\/public;\n    index index.php index.html index.htm;\n\n    location = \/favicon.ico { access_log off; }\n    location = \/robots.txt { access_log off; }\n\n    location ~ \/.ht {\n        deny all;\n    }\n\n    try_files $uri $uri\/ \/index.php?$query_string;\n}\n\nlocation ~ .php$ {\n    include snippets\/fastcgi-php.conf;\n    fastcgi_pass unix:\/var\/run\/php\/php7.4-fpm.sock;\n}<\/code><\/pre>\n<p>&#20445;&#23384;&#24182;&#36864;&#20986;&#32534;&#36753;&#22120;&#12290;<\/p>\n<h3>8. &#27979;&#35797;&#37197;&#32622;<\/h3>\n<pre><code class=\"language-bash\">sudo systemctl restart apache2\nsudo systemctl restart nginx<\/code><\/pre>\n<p>&#35775;&#38382;&#20320;&#30340;&#22495;&#21517;&#25110;IP&#22320;&#22336;&#65292;&#30830;&#20445;Symfony&#24212;&#29992;&#27491;&#24120;&#24037;&#20316;&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;&#65306;&#37197;&#32622;PHP-FPM<\/h3>\n<p>&#22914;&#26524;&#20320;&#20351;&#29992;&#30340;&#26159;&#36739;&#26087;&#30340;PHP&#29256;&#26412;&#65292;&#21487;&#33021;&#38656;&#35201;&#25163;&#21160;&#37197;&#32622;PHP-FPM&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65306;<\/p>\n<ol>\n<li>&#32534;&#36753;<code>\/etc\/php\/7.4\/fpm\/pool.d\/www.conf<\/code>&#25991;&#20214;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-ini\">[www]\nlisten = 9000\nlisten.owner = www-data\nlisten.group = www-data\nlisten.mode = 0660\npm = dynamic\npm.max_children = 50\npm.start_servers = 5\npm.min_spare_servers = 2\npm.max_spare_servers = 30<\/code><\/pre>\n<ol start=\"2\">\n<li>&#37325;&#21551;PHP-FPM&#26381;&#21153;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">sudo systemctl restart php7.4-fpm<\/code><\/pre>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#24212;&#35813;&#33021;&#22815;&#25104;&#21151;&#22320;&#23558;Symfony&#24212;&#29992;&#37096;&#32626;&#21040;Ubuntu&#26381;&#21153;&#22120;&#19978;&#12290;&#26681;&#25454;&#20320;&#30340;&#20855;&#20307;&#38656;&#27714;&#65292;&#20320;&#21487;&#33021;&#36824;&#38656;&#35201;&#36827;&#19968;&#27493;&#35843;&#25972;&#37197;&#32622;&#21644;&#20248;&#21270;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>&#37096;&#32626;&#19968;&#20010;&#20351;&#29992;Symfony&#26694;&#26550;&#30340;&#24212;&#29992;&#31243;&#24207;&#21040;Ubuntu&#26381;&#21153;&#22120;&#28041;&#21450;&#20960;&#20010;&#20851;&#38190;&#27493;&#39588;&#12290;&#26412;&#25945;&#31243;&#23558;&#20174;&#39044;&#32622;&#26465;&#20214;&#25351;&#23548;&#24744;&#23436;&#25104;&#36807;&#31243;&#65292;&#20174;&#25104;&#21151;&#36816;&#34892;&#24744;&#30340;Symfony&#24212;&#29992;&#31243;&#24207;&#21040;Ubuntu&#26381;&#21153;&#22120;&#19978;&#12290;&#25105;&#20204;&#20551;&#35774;&#24744;&#24050;&#32463;&#26377;&#19968;&#20010;&#20934;&#22791;&#22909;&#30340;Symfony&#24212;&#29992;&#12290;<\/p><p>&#21069;&#32622;&#26465;&#20214;<\/p><p>&#24744;&#30340;Symfony&#24212;&#29992;&#12290;<\/p><p>&#24744;&#30340;&#26381;&#21153;&#22120;&#38656;&#35201;&#30340;SSH&#20973;&#35777;&#12290;<\/p><p>&#22522;&#26412;&#30340;&#21629;&#20196;&#34892;&#30693;&#35782;&#12290;<\/p><p>&#35831;&#36890;&#36807;&#32456;&#31471;&#35775;&#38382;&#24744;&#30340;Ubuntu&#26381;&#21153;&#22120;&#12290;<\/p><p>VPS&#65288;&#34394;&#25311;&#31169;&#26377;&#26381;&#21153;&#22120;&#65289;&#25110;&#36816;&#34892;Ubuntu&#30340;&#29289;&#29702;&#26381;&#21153;&#22120;&#12290;<\/p><h2>&#20027;&#35201;&#27493;&#39588;<\/h2><h3>&#27493;&#39588;1&#65306;&#35774;&#32622;&#26381;&#21153;&#22120;<\/h3><p>&#39318;&#20808;&#65292;&#26356;&#26032;&#21253;&#31649;&#29702;&#22120;&#30340;&#25968;&#25454;&#24182;&#21319;&#32423;&#20219;&#20309;&#24050;&#26377;&#30340;&#36719;&#20214;&#21253;&#65306;<\/p><pre><code>sudo apt-get update\nsudo apt-get upgrade<\/code><\/pre><p>&#22312;&#26381;&#21153;&#22120;&#21253;&#26356;&#26032;&#21518;&#65292;&#23433;&#35013;&#24517;&#35201;&#30340;&#36719;&#20214;&#65306;<\/p><pre><code>sudo apt-get install apache2 php libapache2-mod-php php-cli\nsudo apt-get install php-intl php-xml php-mysql php-mbstring php-curl php-zip\n<\/code><\/pre><p>&#21551;&#29992;Apache&#30340;rewrite&#27169;&#22359;&#65292;&#20197;&#20801;&#35768;Symfony&#30340;.htaccess&#37325;&#23450;&#21521;&#21151;&#33021;&#65306;<\/p><pre><code>sudo a2enmod rewrite\n<\/code><\/pre><h3>&#27493;&#39588; 2&#65306;&#25968;&#25454;&#24211;&#35774;&#32622;&#65288;&#21487;&#36873;&#65289;<\/h3><p>&#22914;&#26524;&#20320;&#30340;&#24212;&#29992;&#31243;&#24207;&#20351;&#29992;&#25968;&#25454;&#24211;&#65292;&#23433;&#35013;MySQL&#25110;MariaDB&#24182;&#21019;&#24314;&#39033;&#30446;&#30340;&#25968;&#25454;&#24211;&#65306;<\/p><pre><code>sudo apt-get install mysql-server\nmysql -u root -p\nCREATE DATABASE symfony;\nGRANT ALL PRIVILEGES ON symfony.* TO 'symfony_user'@'localhost' IDENTIFIED BY 'password';\nFLUSH PRIVILEGES;\nEXIT;\n<\/code><\/pre><h3>&#27493;&#39588; 3&#65306;&#37197;&#32622; Apache<\/h3><p>&#21019;&#24314;&#24744;&#30340;Symfony&#24212;&#29992;&#31243;&#24207;&#30340;&#34394;&#25311;&#20027;&#26426;&#37197;&#32622;&#65306;<\/p><pre><code>&lt;VirtualHost *:80&gt;\n    ServerName yourdomain.com\n    DocumentRoot \/var\/www\/symfony\/public\n    &lt;Directory \/var\/www\/symfony\/public&gt;\n        AllowOverride All\n        Order Allow,Deny\n        Allow from All\n    &lt;\/Directory&gt;\n&lt;\/VirtualHost&gt;\n<\/code><\/pre><p>&#21551;&#29992;&#31449;&#28857;&#24182;&#37325;&#21551;Apache&#20197;&#21152;&#36733;&#26032;&#37197;&#32622;&#65306;<\/p><pre><code>sudo a2ensite yourdomain.conf\nsudo systemctl restart apache2\n<\/code><\/pre><h3>&#27493;&#39588; 4&#65306;&#37096;&#32626; Symfony &#24212;&#29992;&#31243;&#24207;<\/h3><p>&#23558;Symfony&#24212;&#29992;&#31243;&#24207;&#20256;&#36755;&#21040;&#26381;&#21153;&#22120;&#65306;&#20351;&#29992;rsync&#25110;FTP&#12290;<\/p><pre><code>rsync -avz \/path\/to\/symfony user@yourserver:\/var\/www\/symfony\n<\/code><\/pre><p>&#35774;&#32622;Symfony&#30340;var&#30446;&#24405;&#30340;&#27491;&#30830;&#26435;&#38480;&#65306;<\/p><pre><code>sudo chown -R www-data: \/var\/www\/symfony\/var\n<\/code><\/pre><p>&#23433;&#35013;Composer&#20381;&#36182;&#65288;&#22914;&#26524;&#26410;&#23433;&#35013;&#65292;&#35831;&#39318;&#20808;&#30830;&#20445;&#24050;&#23433;&#35013;&#23427;&#65289;&#65306;<\/p><pre><code>cd \/var\/www\/symfony\ncomposer install --no-interaction --prefer-dist --optimize-autoloader\n<\/code><\/pre><h3>&#27493;&#39588; 5&#65306;&#29615;&#22659;&#37197;&#32622;<\/h3><p>&#21019;&#24314;&#19968;&#20010;&#29615;&#22659;&#21464;&#37327;&#25991;&#20214;&#26469;&#23384;&#20648;&#25935;&#24863;&#20449;&#24687;&#65306;<\/p><pre><code>cp \/var\/www\/symfony\/.env \/var\/www\/symfony\/.env.local\n<\/code><\/pre><p>&#32534;&#36753; .env.local &#25991;&#20214;&#65292;&#35774;&#32622;&#29983;&#20135;&#25152;&#38656;&#30340;&#21442;&#25968;&#65306;&#20363;&#22914;&#25968;&#25454;&#24211;URL&#12290;<\/p><pre><code>nano \/var\/www\/symfony\/.env.local\n<\/code><\/pre><h2>&#39640;&#32423;&#37197;&#32622;&#65288;CI\/CD&#65289;<\/h2><p>&#22312;&#39640;&#32423;&#22330;&#26223;&#19979;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;&#24037;&#20855;&#22914;Jenkins&#12289;GitLab CI\/CD&#25110;GitHub Actions&#26469;&#35774;&#32622;&#25345;&#32493;&#38598;&#25104;\/&#25345;&#32493;&#37096;&#32626;&#65288;CI\/CD&#65289;&#31649;&#36947;&#12290;&#30830;&#20445;&#20320;&#30340;&#24212;&#29992;&#20195;&#30721;&#23384;&#20648;&#22312;&#19968;&#20010;Git&#20179;&#24211;&#20013;&#65292;&#24182;&#33258;&#21160;&#21270;&#27979;&#35797;&#21644;&#37096;&#32626;&#27969;&#31243;&#12290;<\/p><p>&#36825;&#26159;&#19968;&#20010;&#20351;&#29992;GitHub Actions&#33050;&#26412;&#30340;&#22522;&#26412;&#31034;&#20363;&#65306;<\/p><pre><code>name: Symfony CI\n\non:\n  push:\n    branches: [ master ]\n\ntasks:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        php: ['7.4']\n\n    steps:\n    - uses: actions\/checkout@v2\n    - name: Setup PHP with extensions\n      uses: shivammathur\/setup-php@v2\n      with:\n        php-version: \n    - name: Validate composer.json and composer.lock\n      run: composer validate\n    - name: Install dependencies\n      run: composer install --prefer-dist --no-progress --no-suggest\n    - name: Execute tests\n      run: .\/vendor\/bin\/simple-phpunit\n<\/code><\/pre><h2>&#32467;&#35770;&#12290;<\/h2><p>&#25353;&#29031;&#36825;&#20123;&#27493;&#39588;&#65292;&#24744;&#25104;&#21151;&#22320;&#22312;Ubuntu&#26381;&#21153;&#22120;&#19978;&#37096;&#32626;&#20102;Symfony&#24212;&#29992;&#12290;&#35831;&#35760;&#24471;&#23450;&#26399;&#32500;&#25252;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#65292;&#21253;&#25324;&#26356;&#26032;&#20381;&#36182;&#39033;&#12289;&#24212;&#29992;&#23433;&#20840;&#34917;&#19969;&#21644;&#20248;&#21270;&#26381;&#21153;&#22120;&#24615;&#33021;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#35201;&#22312;Ubuntu&#26381;&#21153;&#22120;&#19978;&#37096;&#32626;Symfony&#24212;&#29992;&#65292;&#20320;&#38656;&#35201;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<h3>1. &#23433;&#35013;&#24517;&#35201;&#30340;&#36719;&#20214;&#21253;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#30340;&#26381;&#21153;&#22120;&#28385;&#36275;&#20197;&#19979;&#35201;&#27714;&#65306;<\/p>\n<ul>\n<li>PHP 7.4 &#25110;&#26356;&#39640;&#29256;&#26412;&#65288;&#24314;&#35758;&#20351;&#29992; PHP 8.0&#65289;&#12290;<\/li>\n<li>Git &#24037;&#20855;&#12290;<\/li>\n<\/ul>\n<p>&#23433;&#35013;&#25152;&#38656;&#30340;&#36719;&#20214;&#21253;&#65306;<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get install -y git php7.4-fpm libapache2-mod-php7.4 php7.4-mbstring php7.4-zip php7.4-curl php7.4-gd php7.4-bcmath php7.4-xml php7.4-intl php7.4-cli php7.4-mysql php7.4-soap php7.4-xdebug php7.4-curl php7.4-xmlrpc php7.4-ldap<\/code><\/pre>\n<h3>2. &#37197;&#32622;Apache&#26381;&#21153;&#22120;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>sites-available<\/code> &#30340;&#25991;&#20214;&#22841;&#65292;&#24182;&#28155;&#21152;&#20197;&#19979;&#20869;&#23481;&#26469;&#37197;&#32622;Apache&#26381;&#21153;&#22120;&#65306;<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/symfony.conf<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#23558;&#20197;&#19979;&#20869;&#23481;&#26367;&#25442;&#20026;&#20320;&#30340;&#26381;&#21153;&#22120;&#29615;&#22659;&#35774;&#32622;&#21644;&#24212;&#29992;&#31243;&#24207;&#30340;URL&#65306;<\/p>\n<pre><code class=\"language-perl\">&lt;IfModule mod_rewrite.c&gt;\n    RewriteEngine On\n    RewriteBase \/\n    RewriteRule ^(.*)$ index.php\/$1 [L]\n&lt;\/IfModule&gt;\n\n&lt;VirtualHost *:80&gt;\n    ServerName yourdomain.com\n    ServerAdmin webmaster@example.com\n\n    # Apache configuration goes here...\n\n    &lt;Directory \"\/var\/www\/html\"&gt;\n        Options Indexes FollowSymLinks MultiViews\n        AllowOverride All\n        Require all granted\n    &lt;\/Directory&gt;\n\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#34394;&#25311;&#20027;&#26426;&#30446;&#24405;<\/h3>\n<p>&#22312; Ubuntu &#19978;&#21019;&#24314;&#19968;&#20010;&#26032;&#30446;&#24405;&#65292;&#20363;&#22914; <code>\/var\/www\/html<\/code> &#26469;&#23384;&#25918; Symfony &#24212;&#29992;&#31243;&#24207;&#30340;&#20869;&#23481;&#12290;<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/www\/html<\/code><\/pre>\n<h3>4. &#26356;&#26032;PHP&#37197;&#32622;<\/h3>\n<p>&#22312;&#26381;&#21153;&#22120;&#19978;&#26356;&#26032; PHP &#37197;&#32622;&#25991;&#20214;&#65292;&#20351; PHP &#33021;&#22815;&#22788;&#29702; HTTP &#35831;&#27714;&#12290;<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/php\/7.4\/fpm\/php.ini<\/code><\/pre>\n<p>&#23558;&#20197;&#19979;&#34892;&#26356;&#25913;&#20026;&#36866;&#29992;&#20110;&#20320;&#30340; PHP &#29256;&#26412;&#30340;&#20540;&#65306;<\/p>\n<pre><code class=\"language-ini\">extension=php_mbstring.dll<\/code><\/pre>\n<p>&#24182;&#20445;&#23384;&#26356;&#25913;&#12290;<\/p>\n<h3>5. &#36816;&#34892;&#38450;&#28779;&#22681;&#35268;&#21017;<\/h3>\n<p>&#30830;&#20445;&#20801;&#35768;&#22806;&#37096;&#35775;&#38382;&#21040;&#20320;&#30340;&#26381;&#21153;&#22120;&#19978;&#30340; Symfony &#24212;&#29992;&#31243;&#24207;&#12290;&#25171;&#24320;&#38450;&#28779;&#22681;&#35268;&#21017;&#65292;&#20351;&#20854;&#20801;&#35768;&#20219;&#20309; IP &#22320;&#22336;&#36827;&#34892; HTTP &#35775;&#38382;&#12290;<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 80\/tcp\nsudo ufw default deny\nsudo ufw default allow from any<\/code><\/pre>\n<h3>6. &#37096;&#32626; Symfony &#24212;&#29992;<\/h3>\n<p>&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#26469;&#37096;&#32626; Symfony &#24212;&#29992;&#65306;<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/usr\/share\/nginx\/html \/var\/www\/html\/\nsudo chown -R www-data:www-data \/var\/www\/html\nsudo chmod -R 755 \/var\/www\/html\nsudo service apache2 restart<\/code><\/pre>\n<h3>7. &#26816;&#26597;&#19982;&#39564;&#35777;<\/h3>\n<p>&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#26816;&#26597;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#26159;&#21542;&#27491;&#24120;&#24037;&#20316;&#65306;<\/p>\n<pre><code class=\"language-bash\">curl http:\/\/yourdomain.com<\/code><\/pre>\n<p>&#22914;&#26524;&#19968;&#20999;&#27491;&#24120;&#65292;&#20320;&#24212;&#35813;&#33021;&#30475;&#21040; Symfony &#24212;&#29992;&#31243;&#24207;&#30340;&#27426;&#36814;&#39029;&#38754;&#12290;<\/p>\n<p>&#23436;&#25104;&#19978;&#36848;&#27493;&#39588;&#21518;&#65292;&#20320;&#30340; Symfony &#24212;&#29992;&#24212;&#24050;&#25104;&#21151;&#37096;&#32626;&#21040; Ubuntu &#26381;&#21153;&#22120;&#19978;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#23558;Symfony&#24212;&#29992;&#37096;&#32626;&#21040;Ubuntu&#26381;&#21153;&#22120;&#19978;&#26159;&#19968;&#20010;&#30456;&#038;#23545..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1036","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1036"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1036"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1036"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}