کامپایل و نصب برنامه ها از منبع. نصب بر روی سیستم های یونیکس نرم افزار مورد نیاز
در این آموزش، نحوه نصب PHP 7 را روی VPS لینوکس به شما نشان خواهیم داد. PHP یک زبان برنامه نویسی سمت سرور است که برای توسعه وب استفاده می شود.
PHP 7 دارای بسیاری از ویژگی های جدید و بهبود یافته است. یکی از قابل توجه ترین نسخه جدید موتور Zend است. علاوه بر این، پیشرفت های مهم دیگری نیز وجود دارد که عملکرد را بهبود می بخشد و استفاده از حافظه را تا حد زیادی کاهش می دهد. بنابراین PHP 7 می تواند دو برابر سریعتر از PHP 5.6 باشد.
برای نصب PHP 7 روی اوبونتو وی پی اس، باید از طریق سرور خود وارد شوید. پس از ورود به سیستم، تمامی نرم افزارهای سیستم را با دستور زیر به آخرین نسخه به روز کنید:
sudo apt-get update && sudo apt-get -y upgrade
همچنین، مطمئن شوید که منطقه شما روی سیستم شما روی UTF-8 تنظیم شده است. PHP 7 PPA برای اوبونتو توسط Ondrej Suri نگهداری می شود. ما از این PPA برای نصب PHP 7 در اوبونتو 14.04 استفاده خواهیم کرد.
PPA را به لیست منابع APT اضافه کنید:
sudo add-apt-repository ppa:ondrej/php-7.0
اگر با خطایی مواجه شدید مبنی بر اینکه دستور «add-apt-repository» یافت نمی شود، به احتمال زیاد سیستم شما در بسته «software-properties-common» نیست. ادامه دهید و بسته مورد نیاز را نصب کنید.
sudo apt-get install software-properties-common
پس از اتمام نصب، دستور را دوباره اجرا کنید تا PHP 7 PPA را به لیست منابع APT خود اضافه کنید.
به روز رسانی کش بسته محلی با دستور:
به روز رسانی Sudo apt-get
این ممکن است چند دقیقه طول بکشد و پس از تکمیل، آماده نصب بسته PHP 7 خواهید بود.
sudo apt-get نصب php7.0
برای اطمینان از اینکه آخرین نسخه پایدار PHP 7 روی سرور شما نصب شده است، می توانید دستور زیر را اجرا کنید:
شما باید چیزی شبیه به این دریافت کنید:
PHP 7.0.1-1+deb.sury.org~trusty+2 (cli) (NTS) حق چاپ (c) 1997-2015 The PHP Group Zend Engine نسخه 3.0.0، حق چاپ (c) 1998-2015 Zend Technologies با Zend OPcache نسخه 7.0.6-dev، حق چاپ (c) 1999-2015، توسط Zend Technologies
برای نصب ماژول های اضافی PHP 7 مانند 'php7.0-MySQL'، می توانید از دستور زیر استفاده کنید:
sudo apt-get php7.0-mysql را نصب کنید
برای جستجوی ماژول های موجود PHP7، دستور زیر را اجرا کنید:
Sudo apt-cache جستجو در php7
اگر می خواهید نحوه عملکرد PHP 7 را روی VPS Ubuntu خود آزمایش کنید، می توانید یک اسکریپت تست ایجاد کنید. به دایرکتوری اصلی سند سرور وب خود بروید:
سی دی /var/www/html/
یک فایل آزمایشی بسازید:
Nanoinfo.php
محتوای زیر را بچسبانید:
فایل را ذخیره کنید و آن را ببندید. تغییر حق:
چاون www-data:info.php
اکنون می توانید از آدرس IP سرور خود برای دسترسی به فایل استفاده کنید. مرورگر وب مورد استفاده خود را باز کرده و به آدرس زیر بروید:
http://192.168.1.111/info.php
آدرس IP 192.168.1.111 برای اهداف آزمایشی استفاده می شود، بنابراین مطمئن شوید که از آدرس IP سرور خود استفاده می کنید. شما باید صفحه ای با اطلاعات فعلی PHP مانند نسخه، گزینه های کامپایل، برنامه های افزودنی و غیره ببینید.
PS. اگر این پست را دوست داشتید، لطفاً آن را با دوستان خود در شبکه های اجتماعی با استفاده از دکمه های سمت چپ پست به اشتراک بگذارید یا فقط در زیر نظر خود را بنویسید. پیشاپیش از شما متشکرم.
غیر معمول نیست که بسته های مورد نیاز فقط به شکل منبع یافت شوند، این مقاله نحوه نصب بسته از منبع را توضیح می دهد.
جعبه گشایی
برنامه ها معمولاً در آرشیوهای بسته بندی شده توزیع می شوند، اینها فایل هایی با پسوند هستند
شما باید تفاوت بین بایگانی کننده و بسته بندی را درک کنید.
این برنامه برای آرشیو فهرست ها و فایل ها استفاده می شود. تار; نتیجه کار آن یک فایل با پسوند است تار. به طور کلی، این یک کپی از سیستم فایل است - دایرکتوری ها و فایل ها با ویژگی ها و حقوق دسترسی آنها، در یک فایل قرار داده شده است.
اندازه این فایل کمی بزرگتر از حجم کل فایل هایی است که بایگانی شده اند. بنابراین (و شاید به دلیل دیگری) از بسته کننده ها استفاده می شود - برنامه هایی که به شما امکان می دهند اندازه فایل را بدون از دست دادن داده ها کاهش دهید.
برنامه تارمی تواند بسته را باز کند، بنابراین نیازی به تماس نیست گان زیپ، یا فقط می توانید برنامه را بگویید تارکه ابتدا فایل باید باز شود. مثلا دستور
tar-xvf< some_app_name>.tar.gzبلافاصله بسته را باز کرده و از حالت فشرده خارج کنید. تفاوت بین فایل های با پسوند
فقط بستهکنندههای مختلف، برنامه مورد استفاده قرار گرفت تارروش فشرده سازی را به صورت خودکار تعیین می کند و در این مورد نیازی به گزینه های اضافی نیست.
پس از باز کردن بسته بندی، باید به دایرکتوری حاصل بروید، تمام دستورات شرح داده شده در زیر در دایرکتوری با متن های منبع بسته اجرا می شوند.
سی دی< имя_пакета>*ساخت پکیج
برای ساختن برنامه ها در گنو/لینوکس، (بیشتر) از برنامه استفاده می شود ساختن، که دستورالعمل ها را اجرا می کند Makefile، اما از آنجایی که توزیع های گنو/لینوکس زیادی وجود دارد و همه آنها متفاوت هستند، برای کامپایل برنامه، باید مسیرهای هر توزیع را جداگانه بنویسید، جایی که کتابخانه ها و فایل های سرصفحه قرار دارند. برنامه نویسان نمی توانند هر توزیع را مطالعه کنند و برای هر یک به طور جداگانه ایجاد کنند Makefile. بنابراین، آنها به پیکربندیهایی رسیدند که سیستم را "مطالعه" میکنند و مطابق با دانش به دست آمده، ایجاد میکنند. Makefile. اما آنها در پیکربندی متوقف نشدند و به پیکربندی کننده های پیکربندی رسیدند ... آنها در آنجا متوقف شدند
برای ساختن، به کامپایلر نیاز داریم: آنها در وابستگی های بسته نوشته شده اند ساخت ضروری، پس کافی است آن را با تمام وابستگی ها نصب کنید. هنوز مورد نیاز است تنظیم خودکارو خودروسازی.
بنابراین، برای ساختن چیزی از منبع، ابتدا باید پیکربندی را بسازید. نحوه ساخت configurator در فایل configure.in توضیح داده شده است. برای مونتاژ پیکربندی، باید اجرا کنید
./bootstrap ./autogen.shاگر چنین اسکریپتی در آرشیو وجود ندارد، می توانید دستورات زیر را به ترتیب اجرا کنید:
aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wallهمه این دستورات از فایل استفاده می کنند configure.in. پس از اجرای این دستورات یک فایل ایجاد می شود پیکربندی کنید. پس از آن، برای بررسی در دسترس بودن همه وابستگی ها، و همچنین نصب گزینه های ساخت اضافی (در صورت امکان) و مشاهده نتیجه نصب، باید پیکربندی را اجرا کنید (اختیاری - ممکن است نباشد)
./ پیکربندیپیکربندی کننده یک Makefile را بر اساس دانش به دست آمده و فایل می سازد makefile.am. می توانید گزینه های ارائه شده در منابع برنامه را به پیکربندی منتقل کنید که به شما امکان می دهد برخی از ویژگی های برنامه را فعال / غیرفعال کنید ، معمولاً می توانید با دستور از آنها مطلع شوید.
./ پیکربندی --helpهمچنین مجموعه ای از گزینه های استاندارد وجود دارد، مانند
پیشوند=
که مشخص می کند از کدام دایرکتوری برای نصب استفاده شود. معمولا برای اوبونتو
--prefix=/usr --prefix=/usr/localبدونبریده بریده در پایان! حالا با دستور می توانید فرآیند ساخت خود برنامه را شروع کنید
ساختنبرای مونتاژ، امتیازات کاربر عادی کافی است. پایان اسمبلی را می توان لحظه ای در نظر گرفت که دستورات در کنسول به طور "بی نظم" اجرا نمی شوند و خبری از آن نخواهد بود. خطا. اکنون همه چیز کامپایل شده و آماده نصب است.
نصب و راه اندازی
اگر نرم افزار نصب شده حذف یا به روز شود، تلاشی که برای نصب صحیح صرف می شود، بعداً بیشتر از آن نتیجه خواهد داد.
نصب صحیح (گزینه شماره 1)
نصب با استفاده از ابزار چک نصب. برای نصب، اجرا کنید
sudo apt-get install checkinstallمعایب این روش: چک نصبهمه منابع را درک نمی کند، زیرا نویسنده برنامه می تواند اسکریپت های نصب ویژه و چک نصبآنها را درک نخواهد کرد.
برای ایجاد و نصب بسته deb، باید اجرا کنید
sudo checkinstallنصب صحیح (گزینه شماره 2)
ایجاد سریع یک بسته deb "به صورت دستی".
تفاوت اصلی با روش قبلی این است که در این حالت بسته را به صورت دستی ایجاد می کنید و تمام تغییراتی که ایجاد می کنید را پیگیری می کنید. اگر منابع از ساخت پکیج با پشتیبانی نمی کنند، این روش برای شما نیز مناسب است چک نصب.
ما در یک پوشه موقت نصب می کنیم، جایی که کل مجموعه فایل های نصب شده را دریافت می کنیم:
بیایید دایرکتوری DEBIAN را در "package root" ایجاد کنیم و در DEBIAN/conffiles لیستی از تمام فایل هایی که باید به /etc وارد شوند قرار دهیم:
سپس یک فایل DEBIAN/control با محتوای زیر ایجاد می کنیم:
در صورت لزوم، می توانید اسکریپت های preinst، postinst، prerm و postrm را نیز در آنجا ایجاد کنید.
ما یک بسته deb ایجاد می کنیم که برای آن اجرا می کنیم:
ما خروجی tempinstall.deb را دریافت می کنیم که آن را نصب می کنیم
نصب (گزینه شماره 3)
نصب اشتباه
عیب این روش این است که اگر مستقیماً از طریق make install نصب کنید، به احتمال زیاد نمی توانید بسته را به طور معمول حذف یا به روز کنید. علاوه بر این، نصب یک نسخه جدید روی نسخه قدیمی به احتمال زیاد تغییرات شما را در تنظیمات بازنویسی می کند. make install دقیقاً همان کاری را که گفته میشود انجام میدهد - فایلها را در مکانهای مناسب نصب میکند، بدون توجه به این واقعیت که چیزی از قبل وجود دارد. پس از این فرآیند، نمی توان مطلقاً هیچ اطلاعاتی در مورد اینکه چه چیزی و در کجا به شکل قابل هضم قرار داده شده است، به دست آورد. البته گاهی اوقات، Makefile از عمل حذف پشتیبانی میکند، اما این امر چندان رایج نیست و این یک واقعیت نیست که به درستی کار میکند. علاوه بر این، شما باید درخت منابع را بدون بسته بندی نگه دارید و قوانینی را برای حذف نصب کنید.
برای نصب باید اجرا کنید
sudo make installبرای حذف بسته ای که به این روش نصب شده است، باید آن را در دایرکتوری اصلی منابع برنامه (جایی که اجرا کردید، make install) اجرا کنید.
sudo make uninstallاشتباهات
اغلب در مرحله پیکربندی، پیکربندی گزارش می دهد که این یا آن کتابخانه گم شده است. نام کتابخانه ای که گزارش می کند همیشه با نام بسته در اوبونتو مطابقت ندارد. با توجه به تجربه خودم، می توانم به شما توصیه کنم که بسته مورد نظر را به جز پیشوند lib در Synaptic جستجو کنید، اگر چندین بسته وجود دارد که در نام پیشوند -dev متفاوت است، باید بسته -dev را نصب کنید (معمولاً آن بسته غیر توسعه دهنده را می کشد). همچنین می توانید با استفاده از http://packages.ubuntu.com/ با وارد کردن نام کتابخانه در جستجوی محتوای بسته، جستجو کنید، به طور مشابه، اگر توسعه دهنده و غیر توسعه دهنده یافت شد، هر دو مورد نیاز هستند. یا فقط در گوگل جستجو کنید.
نرم افزار مورد نیاز
بسته هایی با حروف mm در انتهای توضیحات بسته هایی برای برنامه های ++C هستند. این لیست برای bmpx است، اما تقریباً برای هر برنامه GTK2/Gnome کار می کند. بنابراین اگر نمی توانید کامپایل کنید، به این لیست نگاه کنید و آنچه را که نصب کرده اید بررسی کنید.
گردآوری: | زمان اجرا: | |
---|---|---|
ایکس | libx11-dev | libx11-6 |
GlibMM | libglibmm-2.4-dev | libglibmm-2.4-1c2a |
GTK+ | libgtk2.0-dev,gtk-doc-tools | libgtk2.0-0 |
GTKMM | libgtkmm-2.4-dev | libgtkmm-2.4-1c2a |
گلید | libglade2-dev | libglade2-0 |
GladeMM | libglademm-2.4-dev | libglademm-2.4-1c2a |
XML | libxml2-dev | libxml2 |
XML++ | libxml++2.6-dev | libxml++2.6c2a |
DBus | libdbus-1-dev,libdbus-glib-1-dev | libdbus-1-2,libdbus-glib-1-2 |
آلسا | libasound2-dev | libasound2 |
HAL | libhal-dev,libhal-storage-dev | libhal1,libhal-storage1 |
گامین | libgamin-dev | libgamin0 |
نئون | libneon25-dev | libneon25 |
TagLib | libtagc0-dev | libtagc0 |
Startup Notify | libstartup-notification0-dev | libstartup-notification0 |
تقویت کنید | libboost-dev,libboost-filesystem-dev | libboost-filesystem1.33.1 |
MusicBrainz | libmusicbrainz4-dev | libmusicbrainz4c2a |
جی استریمر | libgstreamer0.10-dev,libgstreamer-plugins-base0.10-dev | libgstreamer0.10-0,libgstreamer-plugins-base0.10-0 |
این بخش نصب و پیکربندی PHP در سیستم های یونیکس را توضیح می دهد. لطفاً قبل از ادامه نصب، تمام بخشهای مربوط به پلتفرم یا وب سرور خود را بخوانید.
اظهار نظر:
برخی از سیستمهای یونیکس (مانند OpenBSD و SELinux) ممکن است به دلایل امنیتی، تخصیص حافظه را بهعنوان قابل نوشتن و اجرایی ممنوع کنند. این PaX MPROTECT یا W^X Security Violation نامیده می شود. با این حال، این حالت تخصیص برای پشتیبانی از کامپایل PCRE JIT ضروری است، بنابراین در چنین مواردی PHP باید بدون پشتیبانی از کامپایل PCRE JIT ساخته شود، یا باینری ها باید توسط سیستم عامل در لیست سفید قرار گیرند.
اظهار نظر: کامپایل متقابل تحت ARM با استفاده از "Android toolchain" در حال حاضر پشتیبانی نمی شود.
16 سال پیش
کاربرانی که تحت برخی از نسخه های Solaris/SunOS کامپایل می کنند ممکن است با خطای زیر مواجه شوند.
نماد ap_block_alarms: نماد ارجاعی یافت نشد
برای رفع این مشکل، پرچم اضافی زیر را به خط پیکربندی ساخت آپاچی اضافه کنید:
--enable-rule=SHARED_CORE
بنابراین، با اضافه کردن این به دستورالعمل های اصلی، بیلد آپاچی خود را به این صورت پیکربندی می کنید:
./configure --prefix=/www --enable-module=so --enable-rule=SHARED_CORE
12 سال پیش
من با لینوکس/آپاچی/php (از سرور 2003/IIS/Asp.Net) تازه کار هستم، بنابراین من در این که چرا php/apache فقط میتواند از محتوای ثابت استفاده کند، شگفت زده شدم. همچنین، نمی تواند به برخی از اسنادی که در جای دیگری ایجاد کرده اید، و سپس به دایرکتوری HTML کشیده اید، دسترسی پیدا کند.
پس از کمی تحقیق، متوجه شدم که مشکل در زمینه SELinux فایل ها است. برای همیشه طول کشید تا دستور Proper را پیدا کنم تا بتوانم آن را تغییر دهم، زیرا تمام نمونههای موجود در شبکه با استفاده از دستورات قدیمی قدیمی شده بودند:
# chcon "user_u:object_r:httpd_sys_content_t" /var/www/html -Rc
با این کار زمینه SELinux همه اسناد زیر دایرکتوری /var/www/html (که دایرکتوری وب تحت فدورا است) تغییر می کند تا به فرآیند httpd اجازه دسترسی به آنها را بدهد و پرچم "-Rc" تغییرات را بازگشتی می کند. ، و پیشرفت آن را برای هر فایلی که با موفقیت تغییر می دهد، خروجی می دهد.