كيفية تثبيت OroCRM على CentOS 7

OroCRM هو تطبيق مجاني ومفتوح المصدر لإدارة علاقات العملاء (CRM) مبني على OroPlatform. OroPlatform هو برنامج منصة تطبيق مفتوح المصدر قابل للتخصيص بالكامل. يوفر لك OroPlatform جميع الميزات المطلوبة لإنشاء تطبيق مخصص. تم بناء OroCRM باستخدام إطار عمل PHP Symfony ويخزن بياناته في خادم قاعدة بيانات MySQL / MariaDB. وهو تطبيق CRM جاهز للمؤسسات يوفر العديد من الميزات. كما أنه يتكامل مع العديد من تطبيقات الجهات الخارجية مثل Magento Store و MailChimp و Zendesk وما إلى ذلك. إنه متعدد اللغات ولديه واجهة مستخدم مستجيبة تمامًا ، والتي توفر لك القدرة على إدارتها باستخدام الأجهزة المحمولة أيضًا.

المتطلبات الأساسية

في هذا البرنامج التعليمي ، سوف نستخدم crm.example.comاسم النطاق الموجه إلى الخادم. استبدل جميع حالات التكرار crm.example.comباسم نطاقك الفعلي.

قم بتحديث نظامك الأساسي باستخدام الدليل كيفية تحديث CentOS 7 . بمجرد تحديث النظام الخاص بك ، انتقل إلى تثبيت التبعيات المطلوبة.

قم بتثبيت Nginx و PHP 7

يمكن تثبيت OroCRM على أي خادم ويب إنتاج يدعم PHP. يدعم OroCRM جميع إصدارات PHP أكبر من 7.0. في هذا البرنامج التعليمي ، سنستخدم Nginx مع PHP-FPM و PHP 7.1.

قم بتثبيت Nginx.

sudo yum -y install nginx

قم بتشغيل Nginx وتمكينه من البدء تلقائيًا عند التمهيد.

sudo systemctl start nginx
sudo systemctl enable nginx

لا يتوفر PHP 7 في مستودع YUM الافتراضي ، ولكن يمكننا استخدام مستودع Remi للحصول على أحدث إصدارات PHP 7. وتثبيتها أولاً ، قم بإضافة مستودع Remi وتمكينه.

sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php71

قم بتثبيت أحدث إصدار من PHP 7 مع وحدات PHP التي يتطلبها OroCRM.

sudo yum -y install php php-fpm php-ctype php-curl php-fileinfo php-gd php-intl php-json php-mbstring php-mcrypt php-mysql php-pcre php-simplexml php-tokenizer php-xml php-zip php-tidy php-soap php-opcache php-posix

تحرير ملف التكوين PHP الافتراضي.

sudo nano /etc/php.ini

ابحث عن الخطوط التالية. uncomment وقم بإجراء التغييرات كما هو موضح.

date.timezone = Asia/Kolkata
;Replace "Asia/Kolkata" with your appropriate timezone

memory_limit = 512M
cgi.fix_pathinfo=0

قم بتحرير ملف تكوين PHP-FPM.

sudo nano /etc/php-fpm.d/www.conf

بشكل افتراضي ، يتم تكوين PHP-FPM للتشغيل مع Apache والاستماع إلى المنفذ 9000. سنحتاج إلى تغيير المستخدم والمجموعة ، وكذلك ملف مقبس يونكس الذي سيتم تشغيله عليه. ابحث عن الخطوط التالية وقم بإجراء التغييرات اللازمة كما هو موضح.

user = nginx
group = nginx

;listen = 127.0.0.1:9000
;Comment out or remove the above line and add the following line.
listen = /var/run/php-fpm/php-fpm.sock

listen.owner = nobody
listen.group = nobody

قم بتشغيل PHP-FPM وتمكينه من البدء عند التمهيد.

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

توفير ملكية ملف مقبس PHP-FPM لمستخدم Nginx.

sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock

قم بتثبيت MariaDB

MariaDB هو شوكة مفتوحة المصدر لـ MySQL. قم بتثبيت MariaDB.

sudo yum -y install mariadb mariadb-server

قم بتشغيل MariaDB وتمكينه من البدء تلقائيًا عند التمهيد.

sudo systemctl start mariadb
sudo systemctl enable mariadb

يأتي التثبيت الافتراضي لـ MariaDB مع عدد قليل من قواعد بيانات الاختبار والمستخدمين المجهولين. قبل تكوين قاعدة البيانات ، ستحتاج إلى تأمين خادم MariaDB أولاً. يمكنك تأمينه عن طريق تشغيل mysql_secure_installationالبرنامج النصي.

sudo mysql_secure_installation

ستتم مطالبتك بكلمة مرور جذر MariaDB الحالية. بشكل افتراضي ، لا توجد كلمة مرور جذرية في تثبيت MariaDB جديد. اضغط على Enterالمفتاح للمتابعة. قم بتعيين كلمة مرور قوية للمستخدم الأساسي لخادم MariaDB وأجب Yعن جميع الأسئلة الأخرى المطروحة. الأسئلة المطروحة ذاتيّة.

إنشاء قاعدة بيانات OroCRM

قم بتسجيل الدخول إلى هيكل MySQL كمستخدم أساسي عن طريق التشغيل.

mysql -u root -p

أدخل كلمة المرور لمستخدم الجذر MariaDB لتسجيل الدخول.

قم بتشغيل الاستعلامات التالية لإنشاء قاعدة بيانات ومستخدم قاعدة بيانات لتثبيت OroCRM.

CREATE DATABASE oro_data;
CREATE USER 'oro_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON oro_data.* TO 'oro_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

يمكنك استبدال اسم قاعدة البيانات واسم oro_dataالمستخدم oro_userوفقًا لاختيارك. تأكد من التغيير StrongPasswordإلى كلمة مرور قوية جدًا.

قم بتثبيت Node.js و Composer

يتطلب OroCRM أيضًا وقت تشغيل JavaScript Node.js. سيتم استخدام Node.js بواسطة OroCRM لتجميع JavaScript ، والذي يتم استخدامه لبناء واجهة المستخدم الخاصة بالتطبيق. يحتوي المستودع الافتراضي لـ CentOS على إصدار قديم من Node.js ، وبالتالي ستحتاج إلى إضافة مستودع Nodesource إلى نظامك للحصول على أحدث إصدار.

sudo curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

قم بتثبيت Node.js و Git.

sudo yum -y install nodejs git

سيتم استخدام Git لاستنساخ مستودع OroCRM من الإنترنت. ستحتاج أيضًا إلى تثبيت Composer. Composer هو أداة إدارة التبعية لتطبيقات PHP. نظرًا لأن OroCRM مكتوب في إطار عمل Symfony ، ستحتاج إلى Composer لتثبيت التبعيات والتطبيق.

قم بتثبيت الملحن.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

انقل Composer إلى /usr/binالدليل بحيث يمكن تنفيذه من أي مكان في النظام.

sudo mv composer.phar /usr/bin/composer

تقديم إذن تنفيذ إلى الملحن.

sudo chmod +x /usr/bin/composer

قم بتثبيت OroCRM

هناك العديد من الطرق لتنزيل OroCRM على الخادم الخاص بك. الطريقة الأكثر ملاءمة للحصول على الإصدار الأحدث هي استنساخ المستودع من خلال Git.

استنساخ مستودع OroCRM.

cd /usr/share/nginx/
sudo git clone -b 2.3 https://github.com/oroinc/crm-application.git orocrm

انسخ parametersملف المثال إلى parametersالملف الافتراضي الذي يستخدمه OroCRM.

cd orocrm
sudo cp app/config/parameters.yml.dist  app/config/parameters.yml

قبل المضي قدمًا ، ستحتاج إلى تحديث parameters.ymlالملف لتوفير معلومات قاعدة البيانات والبريد الإلكتروني.

sudo nano app/config/parameters.yml

ابحث عن الخطوط التالية.

database_driver:   pdo_mysql
database_host:     127.0.0.1
database_port:     ~
database_name:     oro_crm
database_user:     root
database_password: ~

قم بتحديث التكوين أعلاه وفقًا لقاعدة البيانات التي قمت بإنشائها لتخزين بيانات OroCRM. في حالتنا ، يجب أن تبدو هكذا.

database_driver:   pdo_mysql
database_host:     127.0.0.1
database_port:     3306
database_name:     oro_data
database_user:     oro_user
database_password: StrongPassword

إذا كان لديك خادم SMTP جاهزًا وترغب في استخدام ميزات إرسال البريد الإلكتروني على الفور ، يمكنك تحديث إعدادات البريد كما هو موضح.

mailer_transport:  smtp
mailer_host:       mail.example.com
mailer_port:       456
mailer_encryption: ssl
mailer_user:       [email protected]
mailer_password:   EMailPassword

إذا لم يكن لديك خادم بريد جاهز ، يمكنك تخطيه الآن عن طريق ترك القيم الحالية. يمكنك دائمًا تغيير تكوين البريد الإلكتروني من خلال لوحة التحكم.

تعيين سلسلة عشوائية secretعن طريق استبدال ThisTokenIsNotSoSecretChangeIt. مطلوب سلسلة عشوائية لترميز بيانات الجلسة. سلسلة المثال ستبدو هكذا.

secret:            uxvpXHhDxCFc9yU1hV1fMwjSoyVUzGh4WBMBBBa3XEgrRUF5OuB2h8iNl9JRDqcd

يمكنك إنشاء سلسلة عشوائية باستخدام pwgenالأداة المساعدة. تثبيت pwgenالأداة عن طريق التشغيل sudo yum -y install pwgen. لإنشاء سلسلة عشوائية ، قم بتشغيل pwgen -s 64 1.

احفظ الملف واخرج من المحرر. قم بتثبيت تبعيات PHP المطلوبة من خلال الملحن.

sudo composer install --prefer-dist --no-dev

--no-devسيضمن استخدام أن الملحن يقوم فقط بتثبيت التبعيات المطلوبة لتشغيل خادم الويب في وضع الإنتاج. سيستغرق البرنامج النصي بضع دقائق لتنزيل وتثبيت تبعيات PHP المطلوبة.

قم بتثبيت التطبيق.

sudo php app/console oro:install --env=prod

سيؤدي هذا إلى إنشاء ذاكرة التخزين المؤقت على الويب وكتابة قاعدة البيانات. و --env=prodيتم توفير المعلمة لتثبيت التطبيق في وضع الإنتاج. سيستمر التثبيت فقط إذا تم تثبيت وتكوين جميع التبعيات المطلوبة.

أثناء التثبيت ، سيُطلب منك بعض الأسئلة لإعداد حساب المسؤول. الأسئلة هي كما يلي.

Administration setup.
Application URL (http://localhost): http://crm.example.com
Organization name (OroCRM): My Organization
Username (admin):
Email: [email protected]
First name: John
Last name: Doe
Password:
Load sample data (y/n): y

قدم المعلومات. قم بتحميل بيانات العينة لتقييم المنتج قبل استخدامه للإنتاج.

قم بتسخين ذاكرة التخزين المؤقت لوثائق API:

sudo php app/console oro:api:doc:cache:clear

تكوين Nginx وجدار الحماية والأذونات

قم بإنشاء ملف كتلة خادم Nginx لخدمة التطبيق للمستخدمين.

sudo nano /etc/nginx/conf.d/orocrm.conf

تعبئة الملف.

server {
    server_name crm.example.com;
    root  /usr/share/nginx/orocrm/web;

    location / {
        # try to serve file directly, fallback to app.php
        try_files $uri /app.php$is_args$args;
    }

    location ~ ^/(app|app_dev|config|install)\.php(/|$) {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }

    # Enable Gzip compression
    gzip on;
    gzip_buffers 16 8k;
    gzip_comp_level 5;
    gzip_disable "msie6";
    gzip_min_length 1000;
    gzip_http_version 1.0;
    gzip_proxied any;
    gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css image/svg+xml;
    gzip_vary on;    

    # Enable browser caching
    # One week for javascript and css
     location ~* \.(?:css|js) {
       expires 1w;
       access_log off;
       add_header Cache-Control public;
     }

     # Three weeks for media: images, fonts, icons, video, audio etc.
     location ~* \.(?:jpg|jpeg|gif|png|ico|tiff|woff|eot|ttf|svg|svgz|mp4|ogg|ogv|webm|swf|flv)$ {
       expires 3w;
       access_log off;
       add_header Cache-Control public;
     }

    error_log /var/log/nginx/orocrm_error.log;
    access_log /var/log/nginx/orocrm_access.log;
}

تأكد من تغيير crm.example.comاسم المجال الفعلي. يتضمن التكوين أعلاه أيضًا التكوين المطلوب لضغط GZip وذاكرة التخزين المؤقت للمتصفح. ضغط Gzip يضغط البيانات قبل إرسالها إلى المستعرض. يؤدي تمكين التخزين المؤقت للمتصفح إلى تخزين الموارد الثابتة في ذاكرة التخزين المؤقت على الويب للكمبيوتر العميل. في المرة التالية التي يصل فيها المستخدم إلى الموقع ، يتم تحميل معظم المحتوى الثابت من ذاكرة الويب الخاصة بالمستخدم. تعمل هاتان الطريقتان على زيادة سرعة التطبيق بشكل كبير.

تحقق من ملف تكوين Nginx بحثًا عن أي أخطاء.

sudo nginx -t

يجب أن يبدو الإخراج كما يلي.

[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

قم بتوفير ملكية ملفات OrOCRM لمستخدم Nginx.

sudo chown -R nginx:nginx /usr/share/nginx/orocrm

أعد تشغيل Nginx لتطبيق التكوين الجديد.

sudo systemctl restart nginx

إذا كنت تقوم بتشغيل جدار حماية على الخادم الخاص بك ، فستحتاج إلى تكوين جدار الحماية لتعيين استثناء لخدمة HTTP. اسمح لـ Nginx بالاتصال من خارج الشبكة.

sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload

يمكنك الآن الوصول إلى التطبيق على http://crm.example.com. قم بتسجيل الدخول باستخدام اسم مستخدم وكلمة مرور المسؤول اللذين قمت بتعيينهما أثناء التثبيت.

إعداد المهام المجدولة ووظائف الخلفية

لتشغيل المهام المجدولة تلقائيًا ، يمكنك إضافة إدخال مهمة Cron. افتح crontab.

sudo crontab -e

أضف السطر التالي إلى الملف.

*/1 * * * * /usr/bin/php /usr/share/nginx/orocrm/app/console oro:cron --env=prod > /dev/null

سيؤدي ذلك إلى تشغيل وظيفة cron كل دقيقة حتى تتم معالجة المهام المجدولة مثل قوائم انتظار البريد الإلكتروني في أقرب وقت ممكن.

ستحتاج أيضًا إلى إعداد مشرف لتشغيل خدمة قائمة انتظار الرسائل. يلزم تشغيل عملية واحدة على الأقل في جميع الأوقات حتى يقوم المستهلك بمعالجة الرسائل. يمكن للمستهلك عادة مقاطعة عملية الرسالة بعدة طرق. لضمان تشغيل الخدمة بشكل مستمر ، سوف نستخدم خدمة المشرف. سنقوم بتكوين مشرف لتشغيل أربع عمليات بالتوازي. إذا تم إيقاف أي من العمليات الأربع لأي سبب ، فسيحاول المشرف بدء تشغيلها مرة أخرى.

تثبيت المشرف.

sudo yum -y install supervisor

قم بتحرير ملف تكوين المشرف.

sudo nano /etc/supervisord.conf

أضف الأسطر التالية في نهاية الملف.

[program:oro_message_consumer]
command=/usr/bin/php /usr/share/nginx/orocrm/app/console --env=prod --no-debug oro:message-queue:consume
process_name=%(program_name)s_%(process_num)02d
numprocs=4
autostart=true
autorestart=true
startsecs=0
user=nginx
redirect_stderr=true

بدء وتمكين المشرف لبدء التشغيل تلقائيًا في وقت التمهيد.

sudo systemctl start supervisord
sudo systemctl enable supervisord

يمكنك عرض حالة العمليات عن طريق تشغيل ما يلي.

sudo supervisorctl status

يجب أن ترى أن العمليات قيد التشغيل.

[user@vultr ~]$ sudo supervisorctl status
oro_message_consumer:oro_message_consumer_00   RUNNING   pid 13596, uptime 0:02:13
oro_message_consumer:oro_message_consumer_01   RUNNING   pid 13595, uptime 0:02:13
oro_message_consumer:oro_message_consumer_02   RUNNING   pid 13594, uptime 0:02:13
oro_message_consumer:oro_message_consumer_03   RUNNING   pid 13593, uptime 0:02:13

OroCRM مثبت الآن على الخادم الخاص بك. يمكنك الآن استخدام التطبيق لإدارة المهام الروتينية لمؤسستك. لمعرفة المزيد عن OroCRM ، يمكنك زيارة موقعها الرسمي .



Leave a Comment

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد